HRMS migration
Field-level mapping, validation, and rollback between Workstream and Bullhorn ATS & CRM. We move data and schema; workflows are rebuilt natively in Bullhorn ATS & CRM.
Workstream
Source
Bullhorn ATS & CRM
Destination
Compatibility
11 of 12
objects map 1:1 between Workstream and Bullhorn ATS & CRM.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Moving from Workstream to Bullhorn is a data-model translation from a location-centric hourly-workforce HR platform into a recruitment-agency ATS and CRM. Workstream organizes around Locations, Positions scoped to stores, and Employees with a lifecycle status (Active, Onboarding, Offboarded). Bullhorn organizes around Candidates, JobOrders, and JobSubmissions with staffing-specific pipelines, client corporations, and placement tracking. We extract Workstream's three-tab export (Active, Onboarding, Offboarded), flatten Position Templates into instantiated Position records, and map each to Bullhorn entities. Binary document files (tax forms, ID scans, signed onboarding packets) stored as attachments in Workstream do not migrate through the export tool and are flagged as out of scope. Integration OAuth tokens linking Workstream to ADP, Square, Toast, or QuickBooks also cannot transfer between tenants and are documented separately for reconfiguration at Bullhorn. Bullhorn's custom field limits vary by edition: Bullhorn ATS caps at 2 custom objects with 55 fields each, while Front Office Growth and Enterprise support up to 10 custom objects with 55 fields each. We scope the destination edition against the customer's custom field volume before migration begins.
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 Workstream 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.
Workstream
Employee (Team Member)
Bullhorn ATS & CRM
Candidate
1:1Workstream Employee records map to Bullhorn Candidate records. The three Workstream lifecycle tabs (Active, Onboarding, Offboarded) each produce Candidate records with their original status preserved in a custom field workstream_lifecycle_status__c. Standard mappings include firstName, lastName, phone, email, address fields, dateOfHire to dateAdded, and job title or position name to primarySkills or a custom field workstream_position__c. We resolve the candidate deduplication key by email address during import.
Workstream
Position
Bullhorn ATS & CRM
JobOrder
1:1Workstream Position records map to Bullhorn JobOrder. Each Position's location assignment maps to a Bullhorn JobAddress or to a custom field workstream_location__c on the JobOrder. Position title, pay rate/range, schedule type, and job description map to corresponding JobOrder fields or custom fields (title, salary, hours, description). We preserve the Position's department assignment as a custom field workstream_department__c on the JobOrder.
Workstream
Position Template
Bullhorn ATS & CRM
JobOrder (tagged)
1:1Workstream Position Templates are reusable job definitions that feed multiple Position instances. We flatten Position Templates into their instantiated Position records during export, tagging each with the template origin as a custom field workstream_template_id__c on the resulting JobOrder in Bullhorn. This preserves the standardization benefit without requiring Bullhorn to replicate the template-parent structure.
Workstream
Application
Bullhorn ATS & CRM
JobSubmission
1:1Workstream Applications (candidate submissions tied to a specific Position) map to Bullhorn JobSubmission. The mapping includes applicant contact info, answers to screening questions migrated as custom fields on the JobSubmission, communication history migrated as Note or Task records linked to the JobSubmission, and status in the hiring pipeline mapped to Bullhorn's submissionStatus field. The candidate-to-job association is preserved by resolving both the Candidate and JobOrder references at migration time.
Workstream
Location
Bullhorn ATS & CRM
Branch or Corporate Department
1:1Workstream's primary organizational unit is the Location (physical store or office). We preserve Location names and addresses as Bullhorn Branch records if the destination Bullhorn edition includes Branch functionality, or as custom fields workstream_location_name__c and workstream_location_address__c on the Candidate and JobOrder for standard Bullhorn ATS editions. Each Location's assigned manager maps to a Bullhorn User reference.
Workstream
Custom Fields (Team Member)
Bullhorn ATS & CRM
Custom Fields on Candidate
1:1Workstream custom fields on team members (text, date, number, dropdown) map to Bullhorn custom fields on Candidate. We detect field-level presence during Workstream profiling because Workstream custom fields can be scoped to specific roles, locations, or departments, meaning a field may exist on one employee record but not another. We map only fields that are populated for each individual record, avoiding null-fill issues. Bullhorn ATS edition limits mapping to 2 custom objects with 55 fields each; if custom field count exceeds this, we recommend Front Office Growth or Enterprise edition during scoping.
Workstream
Custom Fields (Position)
Bullhorn ATS & CRM
Custom Fields on JobOrder
1:1Workstream custom fields on Positions map to Bullhorn custom fields on JobOrder. These commonly include internal job codes, franchise-specific requirements, or uniform allowances. We extract all active Position-level custom fields and map them to Bullhorn JobOrder custom fields of equivalent type (text, date, number, picklist). The workstream_position_custom__c prefix distinguishes them from employee-level custom fields in the destination.
Workstream
Custom Fields (Location)
Bullhorn ATS & CRM
Custom Fields on Branch or Account
1:1Workstream custom fields scoped to Locations (e.g., regional manager, district code, store format) map to Bullhorn custom fields on the Branch or on a ClientCorporation record representing the franchise or corporate entity. We resolve the parent Location for each Workstream employee and Position during scoping and attach the Location-level custom field values to the corresponding Bullhorn records.
Workstream
Hiring Pipeline Stages
Bullhorn ATS & CRM
JobOrder Status or Custom Field
lossyWorkstream uses configurable pipeline stages for the hiring process (Applied, Screening, Interview, Offer, Hired). We extract the full pipeline definition and map stage names and order to Bullhorn JobOrder status values or to a custom field workstream_pipeline_stage__c. If Workstream uses custom pipeline configurations per location or role, we document each pipeline variant during scoping and apply the correct stage mapping per JobOrder at migration time.
Workstream
Payroll Data
Bullhorn ATS & CRM
Custom Fields on Candidate or Placement
1:1Workstream stores pay rates, pay schedules, and payroll sync status as employee properties rather than running payroll itself. These migrate as Bullhorn custom fields on the Candidate (payRate, payRateType, payrollSyncStatus) or on the Placement record if the customer licenses Bullhorn Time & Expense. We flag any Workstream-integrated payroll provider (ADP, Paychex, Paylocity) during scoping and document the integration for reconfiguration against Bullhorn's supported payroll integrations post-migration.
Workstream
Offboarded Employee History
Bullhorn ATS & CRM
Candidate (historical record)
1:1Workstream's offboarded employee records require explicit scoping because the standard export may omit the Offboarded tab. We query all three tabs (Active, Onboarding, Offboarded) explicitly during discovery, include offboarded history in the migration package unless the customer opts out, and preserve terminationDate and terminationReason fields as custom fields on the Bullhorn Candidate record. This preserves compliance records that may be required for rehire eligibility checks or audit purposes.
Workstream
Roles and Assignments
Bullhorn ATS & CRM
Custom Fields on Candidate or JobOrder
1:1Workstream role definitions scoped to locations determine pay and schedule authority. We map which roles exist and how employees are assigned to them, preserving the location-role combination as a custom field workstream_role_assignment__c on the Bullhorn Candidate. Role definitions themselves (the list of available roles) migrate as a custom picklist or as records in a custom object depending on Bullhorn edition.
| Workstream | Bullhorn ATS & CRM | Compatibility | |
|---|---|---|---|
| Employee (Team Member) | Candidate1:1 | Fully supported | |
| Position | JobOrder1:1 | Fully supported | |
| Position Template | JobOrder (tagged)1:1 | Fully supported | |
| Application | JobSubmission1:1 | Fully supported | |
| Location | Branch or Corporate Department1:1 | Fully supported | |
| Custom Fields (Team Member) | Custom Fields on Candidate1:1 | Fully supported | |
| Custom Fields (Position) | Custom Fields on JobOrder1:1 | Fully supported | |
| Custom Fields (Location) | Custom Fields on Branch or Account1:1 | Fully supported | |
| Hiring Pipeline Stages | JobOrder Status or Custom Fieldlossy | Mapping required | |
| Payroll Data | Custom Fields on Candidate or Placement1:1 | Mapping required | |
| Offboarded Employee History | Candidate (historical record)1:1 | Fully supported | |
| Roles and Assignments | Custom Fields on Candidate or JobOrder1:1 | Mapping required |
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.
Workstream gotchas
Location-based pricing does not follow employee headcount
Offboarded employee data requires explicit scoping
Custom field schemas vary by location and role scope
Binary document files are not migratable
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 profiling
We audit the source Workstream account across all three employee tabs (Active, Onboarding, Offboarded), all Positions and Position Templates, all Applications, all custom field definitions and their location/role/department scopes, all Hiring Pipeline stage configurations, and all active integrations (ADP, Square, Toast, QuickBooks) for documentation purposes. We count the distinct custom field count across all objects to determine the required Bullhorn edition. The discovery output is a written migration scope with record counts per tab, custom field inventory, and edition recommendation.
Source data extraction and profiling
We extract Workstream data via the platform's native CSV export tool. We pull all three employee tabs, all Position records, all Application records, all Location records, and all custom field data. We profile the extract for data quality issues: missing emails on employee records, duplicate Position titles across locations, inconsistent date formats in offboarded termination fields, and custom field null rates. We produce a profiling report that identifies records requiring pre-migration cleanup or manual review before we begin the Bullhorn load.
Destination schema design and edition validation
We design the Bullhorn destination schema based on the Workstream custom field inventory. If custom field count exceeds the Bullhorn ATS cap of 2 custom objects, we coordinate with the customer on a Bullhorn edition upgrade (Front Office Growth or Enterprise). We create Bullhorn custom fields on Candidate, JobOrder, JobSubmission, and Branch (if applicable) using the Workstream field names as display labels and API-compatible naming conventions. We configure Hiring Pipeline stage mappings as JobOrder status values or custom fields and deploy the schema to a Bullhorn sandbox or staging environment for validation.
Sandbox migration and record reconciliation
We run a full migration into the Bullhorn sandbox using production-like data volume. The customer's operations lead reconciles record counts (Candidates in, JobOrders in, JobSubmissions in), spot-checks 25-50 random records against the Workstream source, validates that custom field values match the source for a representative sample, and signs off on the schema and mapping before production migration begins. Custom field scoping corrections and any missing field mappings are resolved here.
Production migration in dependency order
We run production migration in record-dependency order: Branch or Location configuration (if applicable), Candidates (with workstream_lifecycle_status__c from the offboarded tab preserved), JobOrders (with location references resolved), JobSubmissions (with candidate-to-job associations validated), custom field data on each record type, and finally any offboarded employee compliance fields. Each phase emits a row-count reconciliation report before the next phase begins. We use Bullhorn's REST API with batch chunking and exponential backoff on rate-limit responses to avoid throttling.
Cutover, delta migration, and integration handoff
We freeze Workstream writes during cutover, run a final delta migration of any records modified during the migration window (new hires, new applications, status changes), then enable Bullhorn as the system of record. We deliver an integration inventory document listing every active Workstream integration (ADP, Square, Toast, QuickBooks) with reconfiguration steps for Bullhorn. We do not rebuild automations, workflows, or hiring pipeline configurations inside Bullhorn as part of the migration scope; those are documented separately for the customer's admin team to configure in Bullhorn. We support a one-week hypercare window for reconciliation issues.
Platform deep dives
Workstream
Source
Strengths
Weaknesses
Bullhorn ATS & CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard HRMS migration. 1 of 7 objects need a mapping; the rest are 1:1.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Workstream and Bullhorn ATS & CRM.
Object compatibility
1 of 7 objects need a mapping; the rest are 1:1.
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
Workstream: Not publicly documented on developer portal.
Data volume sensitivity
Workstream 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 Workstream to Bullhorn ATS & CRM migration scoping. Not seeing yours? Book a call.
Walk through your Workstream 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 Workstream
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.