HRMS migration

Migrate from JobScore to Bullhorn ATS & CRM

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

JobScore logo

JobScore

Source

Bullhorn ATS & CRM

Destination

Bullhorn ATS & CRM logo

Compatibility

75%

9 of 12

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

Complexity

BStandard

Timeline

4-6 weeks

Rollback included Accuracy guarantee Field-level validation

Overview

What this migration involves

Moving from JobScore to Bullhorn is a shift from a candidate-centric in-house recruiting ATS to a staffing-agency ATS with unified CRM capabilities. JobScore organizes hiring around a Candidate-to-Job application pipeline with unlimited users and tags; Bullhorn adds a Client Corporation and Placement data model oriented around staffing placements and back-office billing. We flag the placement-centric model difference during scoping so teams understand whether their hiring data maps naturally to Bullhorn or requires a custom configuration. We handle the unpublished-job gap by extracting published roles from the JobScore job feed API as the primary export and capturing draft roles manually. Scorecards migrate as Notes attached to the parent Interview record. Workflows, custom application forms, email templates, and tags do not migrate as code; we deliver a written schema inventory and configuration guide for Bullhorn admins to rebuild them post-migration. Owner assignments resolve by email match against Bullhorn Users before record import begins.

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

JobScore logo

JobScore

What's pushing teams away

  • Customer support is described as 'minimal to borderline nonexistent' in some G2 reviews — phone calls go to voicemail and email response can take ~48 hours, frustrating teams with time-sensitive issues.
  • UI is described as 'clunky' and 'tedious to use' — basic actions like writing interview notes require multiple clicks per reviewer feedback.
  • Reporting and analytics are 'basic' — teams needing custom workforce planning or compliance reports outgrow JobScore's built-in dashboards.
  • Feature gating forces small teams to upgrade — templates, automation, and advanced offer tools sit behind higher plans, which can be painful for lean teams.
  • Additional fees for advanced tech support are documented in reviews — base subscriptions do not include premium support escalations.

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

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

JobScore

Candidate

maps to

Bullhorn ATS & CRM

Candidate

1:1
Fully supported

JobScore Candidate records map directly to Bullhorn Candidate. We extract name, email, phone, address, tags, notes, and resume blob. JobScore's phone-number deduplication logic during bulk import is flagged pre-migration; we detect phone collisions in the export and present the customer with skip, merge, or overwrite options before loading. Bullhorn Candidate requires an owning User assignment resolved by email match against the destination User table.

JobScore

Job

maps to

Bullhorn ATS & CRM

JobOrder

1:1
Fully supported

JobScore published Jobs map to Bullhorn JobOrder. Only published jobs appear in JobScore's v2 API and job feed; unpublished/draft jobs are invisible to the API and require manual extraction. We warn customers to publish all roles before migration and cross-reference the API export against the admin job list to surface any missing jobs. Title, description, location (mapped to Bullhorn address fields), employment type, and salary range transfer as typed fields. Job status (Open, Paused, Closed) maps to Bullhorn JobOrder status values.

JobScore

Application

maps to

Bullhorn ATS & CRM

Candidate (JobOrder reference)

1:1
Fully supported

JobScore Application records (the Candidate-to-Job join) map to Bullhorn Candidate records with a JobOrder reference. Bullhorn natively links Candidates to JobOrders through the CandidateJobOrder join entity. Application date, stage, stage history timestamps, and custom form field responses transfer. Disposition codes (Declined, Withdrawn reasons) migrate to Bullhorn CandidateJobOrder status values.

JobScore

Interview

maps to

Bullhorn ATS & CRM

Appointment or Note

1:1
Fully supported

JobScore Interview records (scheduled events tied to Application) map to Bullhorn Appointment records with interviewer assignment, date, type, and outcome preserved. Bullhorn Appointment links to the Candidate and JobOrder. For interviews without a calendar-level record, we attach as a Note with interview metadata. We resolve the Application uid to the corresponding Bullhorn CandidateJobOrder at migration time.

JobScore

Scorecard

maps to

Bullhorn ATS & CRM

Note (attached to Appointment or Candidate)

1:1
Fully supported

JobScore Scorecards (post-interview ratings and comments submitted by interviewers) migrate as Bullhorn Note records attached to the corresponding Appointment or Candidate. Ratings, comments, interviewer uid, and submission timestamp transfer. If the customer uses Bullhorn's built-in scorecard templates post-migration, we document the scorecard schema separately for admin configuration.

JobScore

Location

maps to

Bullhorn ATS & CRM

JobOrder address fields

1:1
Fully supported

JobScore Location records (address, city, state, country) map to Bullhorn JobOrder address fields. We map each location component to the corresponding Bullhorn field and validate address completeness during the load.

JobScore

Document (Resume, Cover Letter)

maps to

Bullhorn ATS & CRM

Candidate resume blob

1:1
Fully supported

JobScore Documents linked to Candidates (resumes, cover letters, attachments) export as binary blobs and reattach to the Bullhorn Candidate record. Bullhorn parses resumes natively. Resume parsing is included in Bullhorn Starter and above; we attach the raw blob so the parser populates structured fields in Bullhorn.

JobScore

User (Employee)

maps to

Bullhorn ATS & CRM

User

1:1
Fully supported

JobScore Users/Employees who appear as interviewers, owners, or recruiters on any record resolve by email match against Bullhorn Users. Users without a Bullhorn match enter a reconciliation queue for admin provisioning before record migration begins. JobScore's unlimited-user model means owner assignment density can be high; we batch-resolve all distinct owner emails before the main migration run.

JobScore

Custom Application Form

maps to

Bullhorn ATS & CRM

Custom fields (CandidateJobOrder)

lossy
Fully supported

JobScore custom form fields per job store responses at the Application level. We extract the full custom field schema from the source account, map each field to a Bullhorn CandidateJobOrder custom field (with __c suffix), and pre-create the field definitions in the Bullhorn org before import. Custom field types (text, picklist, number, date) map to equivalent Bullhorn field types.

JobScore

Workflow Stages (Active sub-stages)

maps to

Bullhorn ATS & CRM

CandidateJobOrder status values

lossy
Fully supported

JobScore's five locked top-level stages (New, Active, Declined, Withdrawn, Hired) map to Bullhorn CandidateJobOrder status values. Custom Active sub-stages collapse into the Active status with the original sub-stage name stored as a custom field on CandidateJobOrder for audit and reporting continuity.

JobScore

Tag

maps to

Bullhorn ATS & CRM

Candidate categories or custom text field

lossy
Fully supported

JobScore tags on Candidates migrate to Bullhorn Candidate categories if the customer enables the Bullhorn categories feature, or to a custom text field (multi-select or comma-separated) on the Candidate record. The customer selects the strategy during scoping.

JobScore

Application Status (Disposition Code)

maps to

Bullhorn ATS & CRM

CandidateJobOrder status values

1:1
Fully supported

JobScore configurable disposition codes (Declined reasons, Withdrawn reasons) migrate to Bullhorn CandidateJobOrder status values. We export all configured codes from JobScore and create equivalent values in Bullhorn before migration so reporting continuity is maintained.

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.

JobScore logo

JobScore gotchas

High

Phone-number deduplication silently overwrites candidate records on import

High

Only published jobs surface in the API and job feeds

Medium

Job-count pricing model creates billing risk during high-volume hiring periods

Medium

v2 API rate limits are not publicly documented

Low

Custom workflow stages live only in the Active branch — standard stages are locked

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

  • Only published jobs appear in the JobScore API and job feed

    JobScore's v2 API only surfaces published jobs. Any job in Draft or Unpublished status is invisible to both the REST API and the JSON/XML/ATOM job feed. We warn customers before migration to publish all roles they intend to move. We cross-reference the API export against the admin job list to surface any missing jobs. For roles that cannot be published before migration (upcoming postings, confidential reqs), we capture them manually as a supplementary data package and document the post-migration steps for manual entry.

  • Phone-number deduplication silently overwrites existing Candidate records

    JobScore deduplicates Candidates by matching phone numbers during bulk imports. When a matching number is found, the existing candidate record is overwritten without warning or a duplicate being created. We detect this during scoping by querying the full candidate set and flagging records where a phone-number collision exists. For each collision, we present the customer with a documented choice: skip the record, merge fields manually, or let the overwrite happen. We record the outcome in the migration manifest so there is a full audit trail after cutover.

  • Bullhorn's placement-centric model differs from JobScore's candidate-centric model

    JobScore organizes hiring around Candidate-to-Job applications. Bullhorn adds a Client Corporation and Placement data model oriented around staffing placements and back-office billing. For in-house recruiting teams moving to Bullhorn, the Candidate record in Bullhorn is part of a workflow that expects placement tracking. We flag this difference during scoping so the customer's Bullhorn admin can configure the Candidate pipeline without placement fields if the use case is direct hire only.

  • Legacy Career Portal deprecated as of January 15, 2024

    Bullhorn deprecated the Legacy Career Portal as of January 15, 2024. Teams migrating from JobScore's careers site functionality need to configure Bullhorn's current career portal product post-migration. We do not migrate the careers site as code. We deliver a written inventory of the current JobScore careers site structure (pages, branding, job feed format) for the Bullhorn admin to rebuild in Bullhorn's portal configuration.

  • JobScore email templates and tags do not migrate as code

    JobScore email templates (bodies, subject lines, trigger conditions) and tags are stored as platform objects in JobScore. Bullhorn's email template system uses a different data model. Tags may migrate as categories or a custom field depending on Bullhorn configuration. We export templates and tags as a data manifest for the Bullhorn admin to rebuild post-migration. We do not migrate automated sequences or workflow-triggered email sends.

Migration approach

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

  1. Discovery and job visibility audit

    We audit the JobScore account across tiers (Lite through Enterprise), candidate count, job count, application volume, interview and scorecard history, custom form schemas, disposition codes, owner assignments, and email template inventory. We flag all unpublished and draft jobs that will not appear in the API export and request the customer publish them before migration. We also pull the JobScore job feed as a secondary export to validate completeness against the REST API response. The discovery output is a written migration scope with record counts per object and a list of draft jobs requiring manual handling.

  2. Data quality assessment and phone-collision audit

    We run a data quality assessment on the exported candidate set, flagging records with missing required fields (email, name), malformed phone numbers, and phone-number collisions that could trigger JobScore's silent overwrite behavior during any future import. We present the collision report to the customer and collect their resolution choices before migration begins. We also validate address completeness on Location records and interview date formats against the destination Bullhorn field requirements.

  3. Schema design and Bullhorn configuration planning

    We design the Bullhorn destination schema. This includes provisioning custom fields on CandidateJobOrder for JobScore custom application form fields, creating status values that match JobScore disposition codes, configuring the Candidate pipeline (direct hire vs placement orientation), and mapping JobScore owner emails to Bullhorn User records. We deploy initial schema to a Bullhorn sandbox for validation. Saved search migration guidance is documented for Bullhorn Support involvement post-migration.

  4. Owner reconciliation and User provisioning

    We extract every distinct JobScore owner and interviewer referenced across Candidates, Jobs, Applications, Interviews, and Scorecards and match by email against the Bullhorn destination org's User table. Users without a matching Bullhorn User enter a reconciliation queue. The customer's Bullhorn admin provisions missing Users before record migration begins. Migration cannot proceed past this step because Candidate records require an owning User assignment.

  5. Production migration in dependency order

    We run production migration in record-dependency order: Client Corporations (if applicable to staffing use case), JobOrders (from published Jobs, with draft jobs documented for manual entry), Candidates (with owning User resolved, tags mapped to categories or custom field), CandidateJobOrder records (Applications with stage history and custom form responses), Appointments (Interviews with interviewer assignment and outcome), Notes (Scorecards and Documents attached to parent records), and Tags/Categories. Each phase emits a row-count reconciliation report before the next phase begins. We use Bullhorn REST API with rate-limit handling and exponential backoff.

  6. Cutover, validation, and configuration handoff

    We freeze JobScore 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 email template manifest, tag-to-category mapping guide, careers site inventory, and custom form schema for the Bullhorn admin to rebuild post-migration. Saved search migration is escalated to Bullhorn Support with examples. We support a one-week hypercare window for reconciliation issues. We do not rebuild workflows, automations, or email sequences in Bullhorn as part of this scope.

Platform deep dives

Context on both ends of the pair

JobScore logo

JobScore

Source

Strengths

  • One-click posting to 40+ job boards reduces sourcing overhead for SMB recruiting teams.
  • Unlimited users, candidates, notes, and tags across all plans — no per-seat pricing surprises.
  • Resume parsing and scoring are included natively without requiring a premium add-on.
  • Email and calendar integration (Google and Microsoft) available on Scale tier and above.
  • Built by experienced in-house recruiters — the product reflects deep operational knowledge of hiring workflows.

Weaknesses

  • Pricing scales with the number of open jobs, not headcount — growing hiring velocity increases monthly cost.
  • No public documentation of API v2 rate limits, making large migration scoping harder to plan.
  • Phone-number deduplication on bulk import can silently overwrite existing candidate records.
  • Only published jobs appear in API responses and job feeds — unpublished roles require manual migration.
  • The platform lacks a publicly documented bulk export endpoint; data extraction relies on paginated REST calls.
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 JobScore and Bullhorn ATS & CRM.

B

Overall complexity

Standard migration

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

  • Object compatibility

    A

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

    JobScore: Not publicly documented in v2 docs; v1 showed 3600 req/hr.

  • Data volume sensitivity

    B

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

Estimator

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

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

Can't find your answer?

Walk through your JobScore 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 published jobs with no custom application form schemas or large interview histories. Migrations with custom application forms, large interview and scorecard volumes (over 50,000 engagement records), draft-job manual capture requirements, or multi-office configurations requiring Client Corporation setup move to ten to sixteen weeks. Bullhorn's own implementation timeline (under two weeks for standard setup) runs in parallel with or after our data migration scope.

Adjacent paths

Related migrations to explore

Ready when you are

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