HRMS migration
Field-level mapping, validation, and rollback between Avature and Bullhorn ATS & CRM. We move data and schema; workflows are rebuilt natively in Bullhorn ATS & CRM.
Avature
Source
Bullhorn ATS & CRM
Destination
Compatibility
10 of 14
objects map 1:1 between Avature and Bullhorn ATS & CRM.
Complexity
BStandard
Timeline
3-6 weeks
Overview
Avature and Bullhorn both operate as combined ATS-CRM platforms, but their data models differ significantly at the object level. Avature's Person record covers both candidates and employees under one object with a configurable type property; Bullhorn separates Candidates (job-seekers), ClientContacts (client firm employees), and Users (internal staff) into distinct entities. We resolve that split during scoping, extract Person records and their associated Company links, Jobs, and engagement history through Avature's multi-CSV export process, then load into Bullhorn's Candidate, ClientCorporation, JobOrder, and JobSubmission objects. Avature's configurable workflow engine, Job templates, and Dataset structures do not migrate as code; we deliver written maps for the customer's Bullhorn admin to rebuild. The implementation timeline contrast is notable—Avature commonly requires three or more months for new configuration, while Bullhorn's self-directed launch process typically completes in two to six weeks for small and mid-size agencies.
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 Avature 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.
Avature
Person
Bullhorn ATS & CRM
Candidate
1:1Avature Person records (both candidate and employee subtypes) map to Bullhorn Candidate. The personType property on Avature determines whether the record is a Candidate or a ClientContact in Bullhorn—candidates map to Candidate with isDeleted=false and type='Candidate', while Avature employees who are client-side contacts may map to ClientContact depending on the company's relationship model. We preserve the Avature personType as a custom field (avature_person_type__c) on the Bullhorn Candidate for audit. Name, email, phone, and address fields map to their Bullhorn equivalents; custom fields migrate via Bullhorn Support-provisioned custom fields.
Avature
Company
Bullhorn ATS & CRM
ClientCorporation
1:1Avature Company records map to Bullhorn ClientCorporation. Company name becomes corporationName, and the Avature company website maps to the webSite field used as the dedupe key during import. We preserve company-industry associations and any company-specific notes as ClientCorporation custom fields. ClientCorporation must be created before any ClientContact or Candidate import that references it, to satisfy the clientCorporationId lookup.
Avature
Job
Bullhorn ATS & CRM
JobOrder
1:1Avature Job records map to Bullhorn JobOrder. The Avature jobStatus maps to Bullhorn status (Open, Pending, Closed), employmentType maps directly, and branchOfficeId maps to the relevant Bullhorn ownership. We map Avature department and location fields to JobOrder's customizable branch and location fields. Job descriptions migrate as a long-text field; compensation details migrate to salary or payRate fields depending on the Avature field's unit type.
Avature
Person-Job association
Bullhorn ATS & CRM
JobSubmission
1:1Avature Person-Job linkages (candidates applied or submitted to a job) map to Bullhorn JobSubmission. We preserve the Avature submission date, current stage, and assigned recruiter from the Person record's job-workflow association. The JobSubmission record links the Candidate (from Person) to the JobOrder (from Avature Job) and records the user's assignment and submission source.
Avature
Candidate tags
Bullhorn ATS & CRM
Candidate tags
lossyAvature candidate tags and talent pool memberships map to Bullhorn Candidate tags. Tags stored as multi-checkbox properties migrate as flat label entries in Bullhorn. Talent pool membership in Avature—used to group high-value candidates into named pipelines—may require conversion to Bullhorn talent pools or static Candidate lists depending on how the pools are used in the destination workflow. The customer chooses the pool-to-list strategy during scoping.
Avature
Hiring manager portal data
Bullhorn ATS & CRM
Note
1:1Avature hiring manager portal notes, ratings, and interview feedback submitted through the portal are stored as activity records on the Person. We extract these as Bullhorn Note records linked via ContentDocumentLink to the Candidate and, where applicable, the related JobSubmission. The original portal submission date migrates as the Note's dateAdded, preserving the hiring manager's feedback timeline in the Candidate record.
Avature
Record tables
Bullhorn ATS & CRM
Candidate customObjectN
1:manyAvature multi-row record tables attached to Person records (employment history, education, certifications, skills) flatten into normalized child records. Each record-table type maps to a Bullhorn custom object (customObject1 through customObject10 depending on availability in the destination org) linked to the Candidate via a lookup. We require Bullhorn Support to provision each custom object before migration and then load the flattened rows with the parent Candidate ID resolved at migration time.
Avature
Custom fields (Person)
Bullhorn ATS & CRM
Candidate custom fields
lossyAvature unlimited custom fields on Person map to Bullhorn Candidate custom fields. Bullhorn Support must initially create each custom field via a support ticket before the migration loads data into them. We align the Avature internal field name to the Bullhorn field name during discovery and flag any field-type mismatches (Avature free-text vs Bullhorn picklist, for example) for the customer's Bullhorn admin to resolve before migration.
Avature
Custom fields (Company)
Bullhorn ATS & CRM
ClientCorporation custom fields
lossyAvature Company custom fields map to Bullhorn ClientCorporation custom fields. Same setup pattern as Person custom fields—Bullhorn Support provisions each custom field first, then we load values via the REST API. We flag any Avature company custom fields that store candidate-relevant data (source tracking, client tier ratings) and discuss with the customer whether those should migrate to Candidate custom fields instead of ClientCorporation custom fields.
Avature
Job template
Bullhorn ATS & CRM
JobOrder
1:1Avature Job templates define reusable requisition blueprints including fields, workflow steps, and approval chains. Template logic does not migrate as executable configuration because Bullhorn uses a different workflow model. We document each Avature Job template's field structure and recommended Bullhorn JobOrder field defaults, providing a written template mapping for the customer's Bullhorn admin to apply when creating new JobOrders post-migration.
Avature
Dataset
Bullhorn ATS & CRM
Custom object or reference table
1:1Avature Datasets store bulk reference data used by workflows and forms. Dataset structures vary by implementation—they may contain industry lists, skill taxonomies, certification types, or client-specific rate cards. We extract Dataset records and evaluate whether each Dataset maps to a Bullhorn custom object, a static Candidate or ClientCorporation picklist, or an external reference document delivered alongside migration. Datasets with complex relationships to Avature Person or Job records may require custom mapping logic.
Avature
Workflow definitions
Bullhorn ATS & CRM
Workflow configuration (documentation)
1:1Avature workflow definitions (requisition workflows, onboarding flows, internal mobility pipelines) do not migrate as code. Bullhorn uses a different workflow engine with different trigger and action models. We deliver a written inventory of every active Avature workflow, capturing its trigger conditions, stage sequence, conditional logic branches, and assigned actions, with a Bullhorn workflow configuration recommendation per workflow. The customer's Bullhorn admin or a Bullhorn partner rebuilds the workflows post-migration.
Avature
User
Bullhorn ATS & CRM
User
1:1Avature user accounts (recruiters, hiring managers, admins) map to Bullhorn User records. We resolve users by email address match. Any Avature user without a matching Bullhorn User goes to a reconciliation queue for the customer's Bullhorn admin to provision before record import resumes. Role-based permissions from Avature map as Bullhorn permission sets and public group assignments, though Bullhorn's role model may require manual adjustment for fine-grained Avature permissions.
Avature
File attachments
Bullhorn ATS & CRM
ContentDocument (via API)
1:1Avature file attachments referenced by URL migrate cleanly to Bullhorn as ContentDocument records linked via ContentDocumentLink to the parent Candidate, ClientCorporation, or JobOrder. URL-based attachments extract and re-upload to Bullhorn's document storage. Base64-encoded attachments from Avature require decoding before upload to Bullhorn. We flag any attachment larger than 25 MB for chunked upload handling.
| Avature | Bullhorn ATS & CRM | Compatibility | |
|---|---|---|---|
| Person | Candidate1:1 | Fully supported | |
| Company | ClientCorporation1:1 | Fully supported | |
| Job | JobOrder1:1 | Fully supported | |
| Person-Job association | JobSubmission1:1 | Fully supported | |
| Candidate tags | Candidate tagslossy | Fully supported | |
| Hiring manager portal data | Note1:1 | Mapping required | |
| Record tables | Candidate customObjectN1:many | Fully supported | |
| Custom fields (Person) | Candidate custom fieldslossy | Fully supported | |
| Custom fields (Company) | ClientCorporation custom fieldslossy | Fully supported | |
| Job template | JobOrder1:1 | Fully supported | |
| Dataset | Custom object or reference table1:1 | Fully supported | |
| Workflow definitions | Workflow configuration (documentation)1:1 | Fully supported | |
| User | User1:1 | Fully supported | |
| File attachments | ContentDocument (via API)1: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.
Avature gotchas
No self-service full data export exists
Custom field enumeration requires manual discovery
Implementation wait times block rapid migrations
Enterprise pricing is opaque and requires contract negotiation
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 Avature export coordination
We audit the source Avature instance across all active datasets, Person record types, Company fields, Job templates, and custom field enumerations. We run a field enumeration pass against Avature's External Import Services to capture every active custom field, custom form field, and record table column name before building the import mapping. Simultaneously, we enumerate Bullhorn's standard fields via the /meta/{entity}?fields=* REST API call and submit Bullhorn Support tickets to provision all required custom fields. We scope the Avature multi-export plan (separate CSV per object type) and begin the first export run.
Avature multi-CSV export and workspace staging
We execute targeted CSV exports from Avature for each object type: Person, Company, Job, Dataset records, record tables, and hiring manager portal activity. Each export targets the Person ID or Job ID as the primary key for cross-object stitching. We load all CSV outputs into our migration workspace, normalize column names to match Avature internal field names, and validate row counts against Avature's own record counts where accessible via API. Any missing parent records (orphan Person records without a Company link, for example) are flagged for the customer's Avature admin to resolve before stitching.
Bullhorn schema provisioning and sandbox migration
After Bullhorn Support confirms custom field provisioning, we verify field availability via the REST API metadata endpoint. We then run a full migration into Bullhorn's sandbox environment using production-representative record volumes. The customer's Bullhorn admin reviews 25-50 spot-checked records against the Avature source, validates that Person-to-Candidate custom fields populated correctly, confirms JobOrder and JobSubmission linkage integrity, and signs off the schema and mapping before production migration begins. Mapping corrections at this stage avoid production rollback scenarios.
Bullhorn User reconciliation and provisioning
We extract every distinct Avature user referenced on Person, Job, and hiring manager portal records and match by email against Bullhorn's User table. Any Avature user without a matching Bullhorn User goes to a reconciliation queue. The customer's Bullhorn admin provisions missing Users (active or inactive depending on whether the original Avature user is still active). Migration cannot proceed past this step because Candidate ownerId and JobOrder assignedRecruiterId references must be valid at insert time.
Production migration in dependency order
We run production migration in record-dependency order: ClientCorporation (from Avature Company) first, then Candidate (from Avature Person with personType split applied), then JobOrder (from Avature Job), then JobSubmission (linking Candidate to JobOrder), then hiring manager portal notes as Note records linked to Candidate, then record table data as custom object instances, then Dataset records as reference data or custom objects. 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 throughout.
Cutover, delta migration, and workflow handoff
We freeze Avature 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 Avature Workflow and Job Template inventory document to the customer's Bullhorn admin team with recommended Bullhorn equivalents. We support a one-week hypercare window where we resolve reconciliation issues raised by the recruiting team. We do not rebuild Avature workflows as Bullhorn workflows inside the migration scope; that is a separate Bullhorn admin task or partner engagement.
Platform deep dives
Avature
Source
Strengths
Weaknesses
Bullhorn ATS & CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard HRMS migration. All 7 core objects map 1:1 between Avature and Bullhorn ATS & CRM.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Avature and Bullhorn ATS & CRM.
Object compatibility
All 7 core objects map 1:1 between Avature 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
Avature: Not publicly documented; enterprise contracts define limits per organization.
Data volume sensitivity
Avature exposes a bulk API — large-volume migrations stream efficiently.
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 Avature to Bullhorn ATS & CRM migration scoping. Not seeing yours? Book a call.
Walk through your Avature 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 Avature
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.