HRMS migration
Field-level mapping, validation, and rollback between Worknice and Bullhorn ATS & CRM. We move data and schema; workflows are rebuilt natively in Bullhorn ATS & CRM.
Worknice
Source
Bullhorn ATS & CRM
Destination
Compatibility
11 of 12
objects map 1:1 between Worknice and Bullhorn ATS & CRM.
Complexity
BStandard
Timeline
3-5 weeks
Overview
Worknice and Bullhorn serve fundamentally different operational models. Worknice is a people operations platform designed around the employment lifecycle—onboarding, performance reviews, leave management, and position hierarchies. Bullhorn is an ATS and CRM built for staffing agencies to manage candidates, job orders, placements, and client relationships. The migration from Worknice to Bullhorn is not a platform upgrade within the same category; it is a cross-category move that requires mapping an HRMS data model (People, Positions, Bundles, Leave, Reviews) onto a recruiting ATS/CRM data model (Candidates, Contacts, ClientCorporations, JobOrders, Placements). Worknice has no public API, so we extract People, Leave, Reviews, and Goals via CSV exports from its built-in data tables. We map Worknice People to Bullhorn Candidate records, preserve leave balances as static Custom Object fields, and document performance review forms for the customer's Bullhorn admin to recreate. We do not migrate Worknice Bundles, Workflows, or integration connections as code; we deliver a written inventory of these for 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 Worknice 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.
Worknice
People
Bullhorn ATS & CRM
Candidate
1:1Worknice People records (employees, contractors, managers, account owners) map to Bullhorn Candidate records. We extract the person's name, email, phone, role, position, start date, and pay details from the CSV export and map them to Bullhorn Candidate standard fields. The Worknice role (Employee, Contractor, Manager) becomes a custom Candidate field or Custom Object entry since Bullhorn separates Candidate type from the placement relationship.
Worknice
Positions
Bullhorn ATS & CRM
JobOrder
1:1Worknice Position records define job titles and hierarchies and serve as the structural backbone of the org chart. Bullhorn's JobOrder is a recruiting requisition rather than an employment position, so we map Worknice Position names and reporting relationships to Bullhorn JobOrder titles and a Custom Object capturing the org hierarchy. If the customer needs to preserve the internal position structure in Bullhorn, we use a Custom Object (Position__c) with a self-referencing Manager lookup.
Worknice
Leave balances
Bullhorn ATS & CRM
LeaveBalance__c (Custom Object)
1:1Worknice leave entitlements and accrual balances are tied to People and position start dates with accrual rules stored per leave type. Bullhorn has no native leave management object. We create a LeaveBalance__c Custom Object (up to 10 allowed on Bullhorn Enterprise) with fields for LeaveType, Balance, AccrualMethod, and LastAccrualDate. We export the current balance as a static starting balance rather than the accrual rule itself, and document the accrual method in the migration notes so the customer's Bullhorn admin can configure equivalent rules if Bullhorn's absence management module is enabled.
Worknice
Performance Reviews
Bullhorn ATS & CRM
CustomObject + DocumentAttachment
lossyWorknice supports 360 reviews, customizable review forms, and review status tracking. Bullhorn has no native review form builder. We map reviewer relationships, form question responses, and completion status to a Custom Object (PerformanceReview__c) linked to the Candidate. Custom form fields require field-by-field mapping during scoping because Worknice custom forms and Bullhorn Custom Object field names diverge. Review documents and completed forms migrate as Bullhorn Document records attached to the Candidate.
Worknice
Goals and OKRs
Bullhorn ATS & CRM
CustomObject or Note
1:1Worknice company-level OKRs and employee goals with alignment hierarchies export as goal titles, descriptions, progress percentages, and parent-child relationships. Bullhorn has no native goal or OKR object. We map goals to a Custom Object (Goal__c) with fields for Title, Description, Progress, ParentGoalId (self-lookup), and OwnerId pointing to the Bullhorn User. If the customer has fewer than 10 active Custom Objects and prefers a lighter approach, goals migrate as Note records attached to the Candidate with a 'OKR' type prefix in the title.
Worknice
Bundles and templates
Bullhorn ATS & CRM
CustomObject or flaggable fields
1:1Worknice Bundles group templates (documents, onboarding tasks, review forms) assigned to positions or people during onboarding. Bullhorn has no Bundle equivalent. We export bundle names and template associations as structured metadata and attach them to the relevant Worknice Position record. In Bullhorn, we store bundle names as a multi-line text field on the Position__c Custom Object and flag during the design call that bundle automation must be rebuilt as Bullhorn workflows by the customer's admin post-migration.
Worknice
Documents / Paperwork
Bullhorn ATS & CRM
Document (Bullhorn)
1:1Worknice stores compliance documents, contracts, and onboarding paperwork per person. We export documents as binary blobs from Worknice's file export and recreate the attachment relationship in Bullhorn as Document records linked to the Candidate via ContentDocumentLink. File naming conventions may differ; we preserve the original Worknice filename in a custom field (OriginalFileName__c) for audit traceability.
Worknice
Time tracking entries
Bullhorn ATS & CRM
CustomObject or excluded
1:1Time tracking is available on Worknice Essential plan. We export time entry records per person including hours, dates, and time category where this data exists. Bullhorn does not have a native time tracking object. If the customer needs to preserve historical time data, we create a TimeEntry__c Custom Object. If time tracking will be handled by a separate tool post-migration, we export the data as a CSV reference file rather than migrating into Bullhorn's schema.
Worknice
Roles
Bullhorn ATS & CRM
Custom field on Candidate
1:1Worknice assigns roles at the person level (Employee, Manager, Account owner, Contractor). Bullhorn separates Candidate type from user roles. We preserve role assignments as a custom text or picklist field on the Bullhorn Candidate record (WorkniceRole__c). The customer's Bullhorn admin determines how these roles map to Bullhorn's internal team structure.
Worknice
Integration connections
Bullhorn ATS & CRM
Excluded
1:1Worknice Connections maps individual People records to external systems (ATS, payroll, timesheet integrations) via its integration broker. These person-level integration IDs are specific to Worknice and have no counterpart in Bullhorn. We exclude these records from the migration set and flag that the customer must re-establish integration connections in Bullhorn through Bullhorn Marketplace or Bullhorn's REST API after go-live.
Worknice
Surveys and feedback
Bullhorn ATS & CRM
CustomObject or Note
1:1Worknice supports continuous feedback collection and engagement surveys. We export survey responses and feedback records per person where they exist. Bullhorn has no native survey or feedback object. Survey responses migrate to a Custom Object (SurveyResponse__c) linked to the Candidate. Survey design and question structures require reconstruction in Bullhorn's form builder or a third-party survey integration; we document the original Worknice survey schema as part of the migration notes.
Worknice
Owner / Manager
Bullhorn ATS & CRM
User
1:1Worknice Owner and Manager references on People records map to Bullhorn User records. We resolve by email match against Bullhorn's User table. Any Worknice Owner without a matching Bullhorn User goes to a reconciliation queue for the customer's Bullhorn admin to provision before record import resumes.
| Worknice | Bullhorn ATS & CRM | Compatibility | |
|---|---|---|---|
| People | Candidate1:1 | Fully supported | |
| Positions | JobOrder1:1 | Fully supported | |
| Leave balances | LeaveBalance__c (Custom Object)1:1 | Mapping required | |
| Performance Reviews | CustomObject + DocumentAttachmentlossy | Mapping required | |
| Goals and OKRs | CustomObject or Note1:1 | Mapping required | |
| Bundles and templates | CustomObject or flaggable fields1:1 | Mapping required | |
| Documents / Paperwork | Document (Bullhorn)1:1 | Mapping required | |
| Time tracking entries | CustomObject or excluded1:1 | Mapping required | |
| Roles | Custom field on Candidate1:1 | Fully supported | |
| Integration connections | Excluded1:1 | Not supported | |
| Surveys and feedback | CustomObject or Note1:1 | Mapping required | |
| Owner / Manager | 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.
Worknice gotchas
Minimum annual spend creates migration lock-in
No publicly documented REST API for bulk export
Position bundles do not migrate as structured bundles
Leave accrual methods require manual reconciliation
Integration connections are person-level and non-transferable
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 export scoping
We request CSV exports from Worknice covering People, Positions, Leave balances, Performance Reviews, Goals, Documents, and Time tracking where applicable. We audit the export completeness against the customer's headcount and validate field presence in the exported CSVs. Because Worknice has no public API, we document the export process and any batch-size constraints during this phase. We also identify the Worknice contract renewal date to align cutover timing and avoid dual-platform costs. The discovery output is a written migration scope and object inventory.
Bullhorn schema design and Custom Object setup
We design the Bullhorn destination schema including Custom Objects for LeaveBalance__c, PerformanceReview__c, Goal__c, and Position__c. Bullhorn requires Custom Objects to be requested via Bullhorn Support using the Custom Object Setup spreadsheet; we prepare this spreadsheet with the field names, types, and edit types matching the Worknice source fields. Bullhorn ATS Growth edition supports zero Custom Objects, Bullhorn ATS supports 2, and Bullhorn Enterprise or Front Office Growth supports 10; we confirm the customer's Bullhorn edition before finalizing the schema design.
CSV transformation and data quality
We transform the Worknice CSV exports into Bullhorn-compatible import formats. This includes splitting multi-value fields (e.g., Worknice roles stored as comma-separated values) into Bullhorn picklist-compatible formats, parsing date fields into Bullhorn's expected datetime format, and resolving any encoding issues in Worknice document blobs. We flag duplicate records, orphaned positions, and any Worknice People without a valid email address for the customer's HR team to resolve before import.
Sandbox migration and reconciliation
We run a full migration into a Bullhorn Sandbox using production-like data volume. The customer's Bullhorn admin reconciles record counts (Candidates in, ClientCorporations in, JobOrders in, Custom Object records in), spot-checks 25-50 random records against the Worknice source, and validates that leave balances, review statuses, and goal progress are correctly mapped. Any mapping corrections happen in the Sandbox before production migration begins. Bullhorn's Bullhorn Launch portal provides access within days for standard editions.
Owner and user provisioning
We extract every distinct Worknice Owner and Manager referenced on People records and match by email against Bullhorn's User table. Any Worknice Owner without a matching Bullhorn User goes to a reconciliation queue. The customer's Bullhorn admin provisions missing Users before production migration begins. Bullhorn supports custom User fields for additional person metadata; we map any remaining Worknice role or department data to Bullhorn User custom fields during this phase.
Production migration in dependency order
We run production migration in record-dependency order: ClientCorporations (from Worknice organizational entities), Candidates (from Worknice People with role split applied), Custom Objects (LeaveBalance__c, PerformanceReview__c, Goal__c, Position__c linked to Candidates by CandidateID), Documents (attached to Candidates via ContentDocumentLink), and finally any remaining engagement records. Each phase emits a row-count reconciliation report before the next phase begins. We use Bullhorn's REST API with rate-limit handling and exponential backoff for all inserts.
Cutover, validation, and handoff documentation
We freeze Worknice 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 Bundle inventory, Workflow rebuild notes, and integration reconnection checklist to the customer's Bullhorn admin. We support a one-week hypercare window where we resolve any data reconciliation issues. We do not rebuild Worknice Bundles as Bullhorn workflows or configure Bullhorn Onboarding (Able) as standard scope; those are separate engagements.
Platform deep dives
Worknice
Source
Strengths
Weaknesses
Bullhorn ATS & CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard HRMS migration. All 7 core objects map 1:1 between Worknice and Bullhorn ATS & CRM.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Worknice and Bullhorn ATS & CRM.
Object compatibility
All 7 core objects map 1:1 between Worknice 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
Worknice: Not publicly documented.
Data volume sensitivity
Worknice 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 Worknice to Bullhorn ATS & CRM migration scoping. Not seeing yours? Book a call.
Walk through your Worknice 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 Worknice
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.