HRMS migration
Field-level mapping, validation, and rollback between Asure and Bullhorn ATS & CRM. We move data and schema; workflows are rebuilt natively in Bullhorn ATS & CRM.
Asure
Source
Bullhorn ATS & CRM
Destination
Compatibility
10 of 13
objects map 1:1 between Asure and Bullhorn ATS & CRM.
Complexity
BStandard
Timeline
2-4 weeks
Overview
Moving from Asure to Bullhorn is a category shift from HCM to recruiting ATS, not a platform upgrade. Asure organizes data around employment relationships: employees, payroll registers, PTO accrual ledgers, benefits enrollments, and tax configurations. Bullhorn organizes data around candidate pipelines and placements. We migrate what translates directly (Employees to Workers, Companies to ClientCorporations) and we flag what does not (payroll history, tax jurisdiction codes, accrual methods). We use Bullhorn's REST API with batch chunking and rate-limit handling for the Worker entity, and we map accrual balances to Bullhorn custom objects because Bullhorn ATS does not include a native accrual ledger. Workflows, payroll tax configurations, and benefit plan administration do not migrate; we deliver a written scope for your Bullhorn admin to configure these in the destination.
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 Asure 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.
Asure
Employee
Bullhorn ATS & CRM
Worker
1:1Asure Employee records map to Bullhorn Worker. Core fields (firstName, lastName, email, hireDate, terminationDate, department, jobTitle, employmentStatus) migrate directly. Compensation rate from Asure maps to Bullhorn custom fields on Worker because Bullhorn's standard pay structure is placement-centric (Bill Rate, Pay Rate on Placement) rather than employee-centric. We preserve the Asure employment type (full-time, part-time, contractor) as a custom field on Worker.
Asure
Company
Bullhorn ATS & CRM
ClientCorporation
1:1Asure Company records map to Bullhorn ClientCorporation. The companyName becomes name, address fields map to the standard Bullhorn address block, and phone/website migrate as-is. ClientCorporation is created before Worker import so the ClientCorporationId lookup is satisfied at the moment of Worker insert. If the customer's Asure tenant is their own organization (internal HR use), we treat it as a special 'Internal' ClientCorporation in Bullhorn for reporting purposes.
Asure
Department
Bullhorn ATS & CRM
Department (lookup)
1:1Asure departments migrate as Bullhorn Department records and are linked to Worker via the workersDepartmentId lookup. Department is populated before Worker import to avoid orphaned references. If Bullhorn's department structure is not yet configured, we create the department records during the schema phase.
Asure
Supervisor hierarchy
Bullhorn ATS & CRM
Supervisor lookup on Worker
lossyAsure's reporting structure (manager-employee relationships) maps to Bullhorn's supervisorWorkerId lookup on the Worker entity. We resolve the supervisor reference by matching manager Employee IDs to Bullhorn Worker IDs after the Worker batch is loaded. Circular references and managers not yet in the system go to a reconciliation queue for the customer to resolve before finalization.
Asure
PTO Accrual Balances
Bullhorn ATS & CRM
Custom Object: PTO_Balance__c
1:1Asure PTO and leave balances are stored as accrual ledgers per employee. Bullhorn ATS has no native accrual ledger; we create a PTO_Balance__c custom object (up to 10 on Front Office Growth/Enterprise, 2 on Bullhorn ATS) attached to the Worker record. Each accrual type (vacation, sick, personal) becomes a separate custom object instance. The accrual method (front-loaded, per-hours-worked, anniversary-based) is preserved in a custom field accrualMethod__c so the customer's Bullhorn admin can configure the correct accrual rules post-migration.
Asure
Benefits Enrollments
Bullhorn ATS & CRM
Custom Object: Benefits_Enrollment__c
1:1Asure health, dental, vision, and voluntary benefit elections map to Bullhorn Benefits_Enrollment__c custom objects attached to Worker. Plan names, carriers, coverage tiers (employee, employee+spouse, family), and effective/termination dates migrate as fields. Bullhorn has no native benefits administration; these records serve as a reference archive for the customer's HR admin. Mid-year enrollments are flagged with a closed plan year marker to prevent recalculation triggers.
Asure
Payroll Register
Bullhorn ATS & CRM
Custom Object: Payroll_Register__c
1:1Asure historical payroll register files (earnings, deductions, taxes, net pay per pay period) migrate to Bullhorn Payroll_Register__c custom objects. Bullhorn BackOffice (a separate module for staffing firm payroll) handles live payroll processing; the register history from Asure serves as an audit archive. We batch by pay period, map earnings codes to a custom Earnings_Type__c field, and attach each register record to the Worker. The customer's Bullhorn BackOffice admin uses this as reference when setting up pay rules.
Asure
Tax Configurations
Bullhorn ATS & CRM
Custom Object: Tax_Profile__c
1:1Asure federal, state, and local tax withholding profiles per employee migrate to Bullhorn Tax_Profile__c custom objects attached to Worker. The jurisdiction codes, filing status, and allowances migrate as fields. Bullhorn does not process payroll tax calculations natively; these records are a migration artifact that the Bullhorn BackOffice admin or the customer's external payroll system uses to configure withholding in the destination. We audit the Asure export schema for truncated tax codes and request a manual jurisdiction list if the export appears incomplete.
Asure
HR Documents (W-4, I-9, offer letters)
Bullhorn ATS & CRM
ContentDocument / Note
1:1Asure document repository files (W-4, I-9, offer letters, performance records) migrate as Bullhorn ContentDocument records linked via ContentDocumentLink to the Worker record. We extract attached files from Asure, match them to the corresponding Worker by employee ID or email, and attach them to the Bullhorn Worker. Note records with document summaries are created as supplementary references where file extraction is not feasible.
Asure
Time & Attendance Entries
Bullhorn ATS & CRM
Custom Object: Time_Entry__c
1:1Asure clock-in/clock-out logs, shift codes, overtime rules, and time-off request statuses normalize to Bullhorn Time_Entry__c custom objects attached to Worker. Because Bullhorn ATS does not include a native time and attendance module, these migrate as historical reference records. Shift codes map to a custom shiftCode__c field, overtime flags to overtimeEligible__c, and time-off request status to a custom status__c picklist.
Asure
Employee Self-Service Portal Changes
Bullhorn ATS & CRM
Worker field update notes
lossyPending or recent self-service changes (address updates, direct deposit preferences, emergency contacts) from Asure's employee portal are flushed to a staging queue before migration. We apply these as direct field updates on the corresponding Worker record during import rather than importing them as separate notes. Any unresolved pending changes are reported in the reconciliation output for the customer to address manually.
Asure
Custom Fields (Asure)
Bullhorn ATS & CRM
Custom Fields (Bullhorn)
lossyAsure custom fields on Employee, Company, and Benefits migrate to Bullhorn custom fields of matching type (text, number, date, picklist, checkbox) on the equivalent Bullhorn entity. Bullhorn supports custom fields via the Admin Field Mappings interface; we pre-create the field definitions during the schema phase using Bullhorn's metadata API. Picklist values migrate as-is; any Asure picklist values not in Bullhorn's allowed set are flagged for the customer's admin to validate.
Asure
Background Screening (MyHRScreens)
Bullhorn ATS & CRM
Note on Worker
1:1Asure's background screening partnership with MyHRScreens does not expose records via standard export APIs. We flag this as a manual retrieval step: customers must request their screening history directly from MyHRScreens and upload the reports to Bullhorn as Notes or ContentDocument attachments on the corresponding Worker record. We include a data retrieval checklist in the migration handoff document.
| Asure | Bullhorn ATS & CRM | Compatibility | |
|---|---|---|---|
| Employee | Worker1:1 | Fully supported | |
| Company | ClientCorporation1:1 | Fully supported | |
| Department | Department (lookup)1:1 | Fully supported | |
| Supervisor hierarchy | Supervisor lookup on Workerlossy | Fully supported | |
| PTO Accrual Balances | Custom Object: PTO_Balance__c1:1 | Fully supported | |
| Benefits Enrollments | Custom Object: Benefits_Enrollment__c1:1 | Mapping required | |
| Payroll Register | Custom Object: Payroll_Register__c1:1 | Fully supported | |
| Tax Configurations | Custom Object: Tax_Profile__c1:1 | Mapping required | |
| HR Documents (W-4, I-9, offer letters) | ContentDocument / Note1:1 | Fully supported | |
| Time & Attendance Entries | Custom Object: Time_Entry__c1:1 | Mapping required | |
| Employee Self-Service Portal Changes | Worker field update noteslossy | Fully supported | |
| Custom Fields (Asure) | Custom Fields (Bullhorn)lossy | Fully supported | |
| Background Screening (MyHRScreens) | Note on Worker1: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.
Asure gotchas
Accrual balance carryover requires manual flush before migration
State-specific tax configurations vary by plan tier
Benefits plan-year effective dates can conflict with mid-year migration
Background screening data via MyHRScreens is not exported through standard Asure APIs
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 edition selection
We audit the Asure tenant across modules in use (payroll, time and attendance, benefits, HR documents), custom fields, active accrual methods, plan-year enrollment data, and tax jurisdiction count. We pair this with a Bullhorn edition assessment: Bullhorn Team ($99/user) covers candidate and contact management for small agencies; Bullhorn Corporate adds API access and custom fields; Bullhorn BackOffice is required if the customer wants to run contractor payroll inside Bullhorn. The discovery output is a written migration scope with object inventory, a Bullhorn edition recommendation, and the list of HCM objects that have no Bullhorn native home (flagged for post-migration rebuild).
Schema design in Bullhorn
We design the Bullhorn destination schema using Bullhorn's REST metadata API. This includes provisioning Custom Objects (PTO_Balance__c, Benefits_Enrollment__c, Payroll_Register__c, Tax_Profile__c, Time_Entry__c) via the Custom Object Setup Spreadsheet submitted to Bullhorn Support, creating custom fields on the Worker entity for pay structure, accrual method, and employee type, and configuring the ClientCorporation and Department lookups before any data is loaded. Bullhorn BackOffice setup (if licensed) runs in parallel through Bullhorn's implementation team and is not part of the migration scope.
Data extraction and staging from Asure
We extract data from Asure in dependency order: Company records first, then Employee records with all standard and custom fields, then accrual balance snapshots at the defined cutover pay period, benefits enrollment records, payroll register history, time and attendance logs, and HR document files. We freeze active accrual updates at the cutover boundary, flush pending self-service portal changes before extraction, and audit tax jurisdiction completeness against the manual state list the customer provides. Extracted data is staged in a structured format for transformation.
Transformation, deduplication, and validation
We transform Asure records to Bullhorn entity schemas: Employee to Worker, Company to ClientCorporation, accrual ledgers to PTO_Balance__c instances per accrual type, benefits enrollments to Benefits_Enrollment__c, payroll registers to Payroll_Register__c, tax profiles to Tax_Profile__c, and time entries to Time_Entry__c. We deduplicate by email and employee ID, resolve supervisor lookups by matching to previously loaded Workers, and validate field type compatibility (dates, picklists, required fields) against Bullhorn's schema. Any unmapped Asure custom fields are reported for the customer to confirm before insertion.
Migration in dependency order via Bullhorn REST API
We load data into Bullhorn via the REST API in strict dependency order: ClientCorporation (first, as the Worker parent), Department, then Workers with Employee custom fields and supervisor lookups resolved, then Custom Objects (PTO_Balance__c, Benefits_Enrollment__c, Tax_Profile__c, Payroll_Register__c, Time_Entry__c) linked to Workers, then ContentDocument files for HR documents via Bullhorn's document upload API. Each phase emits a row-count reconciliation report showing records inserted, updated, skipped, and errored before the next phase begins. Bullhorn API rate limits are handled with exponential backoff and batch chunking.
Cutover, validation, and handoff
We freeze Asure writes during the cutover window, run a final delta migration of any records modified during migration, and disable the Asure integration as the system of record once Bullhorn is confirmed as active. We deliver a migration report with record counts per entity, a list of unmigrated records with reason codes, and the Benefits Plan-Year Conflict and Accrual Method Configuration checklists for the Bullhorn admin. Bullhorn BackOffice setup, accrual rule configuration, and benefits plan administration are separate workstreams outside this migration scope; we provide written guidance for each.
Platform deep dives
Asure
Source
Strengths
Weaknesses
Bullhorn ATS & CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard HRMS migration. All 7 core objects map 1:1 between Asure and Bullhorn ATS & CRM.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Asure and Bullhorn ATS & CRM.
Object compatibility
All 7 core objects map 1:1 between Asure 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
Asure: Not publicly documented.
Data volume sensitivity
Asure 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 Asure to Bullhorn ATS & CRM migration scoping. Not seeing yours? Book a call.
Walk through your Asure 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 Asure
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.