HRMS migration
Field-level mapping, validation, and rollback between Jobsoid and Bullhorn ATS & CRM. We move data and schema; workflows are rebuilt natively in Bullhorn ATS & CRM.
Jobsoid
Source
Bullhorn ATS & CRM
Destination
Compatibility
10 of 13
objects map 1:1 between Jobsoid and Bullhorn ATS & CRM.
Complexity
BStandard
Timeline
2-4 weeks
Overview
Moving from Jobsoid to Bullhorn is a migration from a self-serve ATS with per-user pricing and a free entry tier, into a staffing-industry CRM with agency-grade pipeline reporting, configurable sales processes, and a REST API that covers all standard objects including Candidates. The structural differences that matter most during migration are: Jobsoid has no public Candidates write API, so all candidate records route through Jobsoid's native CSV export and Bullhorn's Bulk API rather than a source-platform push; Jobsoid's fully custom pipeline stage names require a normalization table before import because Bullhorn uses configurable stage picklists tied to Record Types; Jobsoid's multi-job candidate assignment maps to Bullhorn's JobSubmission object, with the primary job flag carried as a custom field; and activity history embedded in candidate profiles must be extracted as a separate transform before loading into Bullhorn's Task and Event objects. We do not migrate Jobsoid Workflows or Custom Workflows as code. We deliver a written inventory of every active workflow and custom pipeline configuration for the customer's admin to rebuild in Bullhorn.
Every standard and custom field arrives verified.
AI proposes the map; you confirm before any record moves.
Parent–child, lookups, and ownership stay linked.
Calls, emails, meetings — with original timestamps.
Documents, uploads, and inline notes move with the record.
Why teams make this switch
Leaving
What's pushing teams away
Choosing
What's pulling them in
Object mapping
Each row shows how a Jobsoid 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.
Jobsoid
Candidate
Bullhorn ATS & CRM
Candidate
1:1Jobsoid Candidate records map directly to Bullhorn Candidate. The primary challenge is that Jobsoid has no Candidates write API: we export candidates via Jobsoid's native CSV or Excel export, parse all fields (name, email, phone, address, custom fields, skills, source attribution), then push into Bullhorn via the Bullhorn REST API. Jobsoid's multi-job assignment (one candidate assigned to multiple jobs with a designated primary) maps via JobSubmission records linking each Candidate-Bullhorn to the corresponding JobOrder-Bullhorn. We carry the primary job flag as a custom Candidate field candidate_primary_job_id__c and create JobSubmission records in dependency order (Candidates first, then JobOrders, then JobSubmissions).
Jobsoid
Job (Job Opening)
Bullhorn ATS & CRM
JobOrder
1:1Jobsoid Job records map to Bullhorn JobOrder. We extract title, description, status (open/closed/draft), employment type, and pay rate fields. Jobsoid's Job API exposes published jobs and job details; we map the source status to Bullhorn's jobStatus field (Open, Closed, Deleted, Draft, OnHold). The source job's linked Location and Department assignments carry over as JobOrder address and businessSectorLookupId references. JobOrder title and description transfer as-is; HTML-formatted descriptions are cleaned and re-rendered in Bullhorn's rich text fields.
Jobsoid
Location
Bullhorn ATS & CRM
Location (lookup)
1:1Jobsoid Locations map to Bullhorn Location records. Jobsoid auto-resolves addresses via Google Maps; we preserve the full address string and geocoordinates where present. Bullhorn Location is a standard lookup entity used by JobOrder for placement and interview scheduling. We migrate all Locations before JobOrder import so that the LocationId reference is satisfied on insert.
Jobsoid
Department
Bullhorn ATS & CRM
BusinessSector or Division
lossyJobsoid Departments are organizational lookup values that categorize jobs and candidates. Bullhorn does not have a direct Department equivalent; we map departments to Bullhorn's BusinessSector lookup or, if the customer's Bullhorn org uses Divisions, to the corresponding Division. The customer chooses the strategy during scoping. We preserve the full department list and reassign affected JobOrders post-migration if the mapping requires adjustment.
Jobsoid
Division
Bullhorn ATS & CRM
Division
1:1Jobsoid Divisions represent top-level organizational units and map to Bullhorn Division records if the customer's Bullhorn edition includes division-level security. We migrate Division records first so that Department assignments can reference them. If Bullhorn Division is not enabled in the customer's tier, we map Division to a custom picklist field on JobOrder.
Jobsoid
Function
Bullhorn ATS & CRM
Category
1:1Jobsoid Functions categorize job types (e.g., Engineering, Sales, Operations) and map to Bullhorn Category. Jobsoid exposes Functions as lookup values; we carry them as Category records and link them to JobOrder via the categoryID reference. If a Jobsoid Function does not have a matching Bullhorn Category, we create the category during migration before JobOrder import.
Jobsoid
Candidate Source
Bullhorn ATS & CRM
Candidate source field
1:1Jobsoid tracks candidate source (job board, referral, direct application, etc.) as a field on the Candidate record. Source values migrate to Bullhorn Candidate's source field or to a custom source picklist. We map source values field-to-field but flag any unrecognized source labels that require a new picklist value in Bullhorn. If the customer uses custom source taxonomy in Jobsoid, we create the corresponding picklist values in Bullhorn before migration.
Jobsoid
Activity (interviews, emails, notes)
Bullhorn ATS & CRM
Task and Event
1:manyJobsoid surfaces interviews, emails, and notes as an activity block within each candidate profile, but activities are not a standalone API resource. We extract activity text from candidate profile CSV or Excel exports, reconstruct a best-effort timestamped timeline per candidate, then push into Bullhorn as Task records (calls, emails, general tasks) and Event records (interview schedules). Interview date, time, location, interviewer name, and outcome notes transfer as separate fields on the Event. We flag this as a best-effort migration: the richer the source export, the more complete the Bullhorn activity timeline.
Jobsoid
Pipeline (Recruitment Stages)
Bullhorn ATS & CRM
JobOrder Status or Record Type
lossyJobsoid's pipelines are fully customizable with per-account stage names and counts. Bullhorn uses configurable status picklists tied to Record Types and Sales Processes. We normalize the source pipeline stages into a Bullhorn Record Type with a corresponding Sales Process that whitelists the relevant stage values. If the destination Bullhorn org has fewer stages than the source, we consolidate by mapping multiple source stages to a single destination stage; the customer approves the consolidation table during scoping. Stage probability percentages migrate to Bullhorn StageProbability values rounded to the nearest integer.
Jobsoid
Custom Candidate Fields
Bullhorn ATS & CRM
Candidate custom fields
1:1Jobsoid allows custom fields on candidate records; Bullhorn supports custom fields natively on Candidate. We map custom field values field-to-field where field names and data types match. Text fields map to Bullhorn text fields, date fields to date fields, and picklist fields to Bullhorn picklists. If a Jobsoid custom field has no Bullhorn equivalent, we create a matching custom field on the Candidate object before migration. Custom object types (entities rather than fields) require Bullhorn support ticket setup per the Bullhorn Custom Object documentation and are scoped separately.
Jobsoid
Attachment / Resume
Bullhorn ATS & CRM
ContentDocument
1:1Candidate profiles in Jobsoid include uploaded resumes and attachments. We relocate binary attachments separately from record data. Each attachment is downloaded from Jobsoid (via authenticated session for file retrieval), stored with a UUID referencing the source candidate ID, then uploaded to Bullhorn as a ContentDocument linked via ContentDocumentLink to the target Candidate record. Resume files are linked to the Candidate's primary resume field where Bullhorn exposes it. Attachment types, file names, and upload dates are preserved in the ContentVersion metadata.
Jobsoid
Interview Schedule
Bullhorn ATS & CRM
Event + EventRelation
1:1Jobsoid integrates with email and calendar for interview scheduling; interview records appear as activities on the candidate profile. We migrate interview dates, times, locations, interviewer names, and interview type as Bullhorn Event records linked to the Candidate via EventRelation. Calendar invites and Zoom/Teams join links are not transferable across platforms and are flagged for the customer's admin to resend from Bullhorn after migration. We carry the original interview notes in the Event description field.
Jobsoid
Owner (Recruiter)
Bullhorn ATS & CRM
User
1:1Jobsoid Owner records map to Bullhorn User. We match by email address. Any Jobsoid Owner without a matching Bullhorn User is held in a reconciliation queue for the customer's Bullhorn admin to provision before record import resumes. Inactive Jobsoid owners map to inactive Bullhorn users to preserve assignment history without generating live notifications.
| Jobsoid | Bullhorn ATS & CRM | Compatibility | |
|---|---|---|---|
| Candidate | Candidate1:1 | Fully supported | |
| Job (Job Opening) | JobOrder1:1 | Fully supported | |
| Location | Location (lookup)1:1 | Fully supported | |
| Department | BusinessSector or Divisionlossy | Fully supported | |
| Division | Division1:1 | Fully supported | |
| Function | Category1:1 | Fully supported | |
| Candidate Source | Candidate source field1:1 | Fully supported | |
| Activity (interviews, emails, notes) | Task and Event1:many | Fully supported | |
| Pipeline (Recruitment Stages) | JobOrder Status or Record Typelossy | Fully supported | |
| Custom Candidate Fields | Candidate custom fields1:1 | Mapping required | |
| Attachment / Resume | ContentDocument1:1 | Fully supported | |
| Interview Schedule | Event + EventRelation1:1 | Fully supported | |
| Owner (Recruiter) | User1:1 | Fully supported |
Gotchas + challenges
Platform-specific issues from each side, plus the pair-specific challenges that don't show up on either platform's page on its own.
Jobsoid gotchas
No public Candidates API endpoint for write operations
Pipeline stage names and count vary per account
Activity history granularity is not independently exportable
Unlimited storage refers to file count, not retention policy
Bullhorn ATS & CRM gotchas
ATS Growth edition has no API access
Attachments excluded from CSV bulk exports
Custom Object limits vary sharply by edition
Opportunity pipeline stages are recruitment-specific
Resume parse quality varies by document format
Pair-specific challenges
Migration approach
Discovery and data audit
We audit the source Jobsoid account across objects: candidate count, job count, location list, department list, division list, function list, pipeline stage names and counts per pipeline, custom field definitions on Candidate and Job, attachment volume and file type distribution, and owner count. We extract a sample of 25-50 candidate records to validate export field completeness. We identify the primary migration risk: the absence of a Candidates write API means we are working from a point-in-time CSV export, so we establish a delta export plan for any records added between initial export and cutover. We also request PDF exports of candidate profiles to capture activity history in rendered form.
Schema design and Bullhorn custom object setup
We design the destination Bullhorn schema. This includes creating any missing Locations, Divisions, Categories, and picklist values referenced in the Jobsoid data; designing the pipeline stage consolidation table (if the destination has fewer stages than the source); and confirming whether any Jobsoid custom objects require Bullhorn Custom Object setup via support ticket. If Bullhorn Custom Objects are needed, we submit the Custom Object Setup Spreadsheet to Bullhorn Support and wait for confirmation before proceeding. We deploy the schema to a Bullhorn Sandbox org first for validation and mapping sign-off by the customer's Bullhorn admin.
Sandbox migration and reconciliation
We run a full migration into a Bullhorn Sandbox using the exported Jobsoid data. The customer reconciles record counts (Candidates in, Jobs in, Activities in), spot-checks 25-50 randomly selected records against the source Jobsoid export, and validates that pipeline stage mapping, owner assignment, and attachment linking are correct. We correct any mapping errors identified during sandbox reconciliation before production migration begins. Sandbox sign-off is required before we proceed to production.
Owner reconciliation and User provisioning
We extract every distinct Jobsoid Owner referenced on Candidate, Job, and Activity records and match by email against the Bullhorn destination org's User table. Any Jobsoid Owner without a matching Bullhorn User is held in a reconciliation queue. The customer's Bullhorn admin provisions any missing Users (active or inactive depending on whether the original Jobsoid owner is still with the firm) before migration resumes. Bullhorn User provisioning is a manual step that cannot be automated from Jobsoid data.
Production migration in dependency order
We run production migration in record-dependency order: Locations and Divisions (lookup dependencies), Functions and Departments (categorization lookups), JobOrders (with LocationId and BusinessSectorLookupId resolved), Candidates (with primary job reference captured in candidate_primary_job_id__c), JobSubmissions (linking each Candidate to each JobOrder, with primary flagged), Task and Event records for activity history (via Bullhorn REST API with batch chunking), and ContentDocument records for resumes and attachments (linked via ContentDocumentLink to Candidate). Each phase emits a row-count reconciliation report before the next phase begins. Any records rejected by Bullhorn validation rules are flagged, corrected, and retried in a remediation pass.
Cutover, delta migration, and workflow handoff
We freeze Jobsoid writes during cutover, run a final delta migration of any candidates, jobs, or activities added between the initial export and cutover date, then enable Bullhorn as the system of record. We deliver the Jobsoid Workflow and Custom Workflow inventory document to the customer's Bullhorn admin. We support a one-week hypercare window where we resolve any reconciliation issues raised by the recruiting team. We do not rebuild Jobsoid Workflows or Custom Workflows as Bullhorn workflows inside the migration scope; that work is documented as a separate rebuild task for the customer's admin or a Bullhorn implementation partner.
Platform deep dives
Jobsoid
Source
Strengths
Weaknesses
Bullhorn ATS & CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard HRMS migration. All 7 core objects map 1:1 between Jobsoid and Bullhorn ATS & CRM.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Jobsoid and Bullhorn ATS & CRM.
Object compatibility
All 7 core objects map 1:1 between Jobsoid and Bullhorn ATS & CRM.
Field mapping clarity
Field mapping is derived from defaults — final spec confirmed during the sample migration.
Timeline complexity
7-object category — typical timelines run 2–7 days end-to-end.
API constraints
Jobsoid: Not publicly documented.
Data volume sensitivity
Jobsoid doesn't expose a bulk API — REST + parallelization used for high-volume runs.
Estimator
Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.
Step 1
Pick a category, then your source and destination platforms.
Category
FAQ
Answers to the questions buyers ask most during Jobsoid to Bullhorn ATS & CRM migration scoping. Not seeing yours? Book a call.
Walk through your Jobsoid to Bullhorn ATS & CRM migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave Jobsoid
Other ways to arrive at Bullhorn ATS & CRM
Ready when you are
Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.