HRMS migration
Field-level mapping, validation, and rollback between VivaHR and Bullhorn ATS & CRM. We move data and schema; workflows are rebuilt natively in Bullhorn ATS & CRM.
VivaHR
Source
Bullhorn ATS & CRM
Destination
Compatibility
7 of 12
objects map 1:1 between VivaHR and Bullhorn ATS & CRM.
Complexity
BStandard
Timeline
4-6 weeks
Overview
Moving from VivaHR to Bullhorn is a migration from a small-business ATS built around Job Postings to a staffing-agency CRM built around the Client-Candidate-Job triangle. VivaHR structures its data around open Jobs and the Candidates attached to each pipeline stage; Bullhorn maintains Candidates and JobOrders as separate entities joined by JobSubmissions. We extract Candidate records, their stage histories, Scorecard ratings, and Questionnaire responses from VivaHR via available exports, normalize the data, and load it through Bullhorn's REST API with parent-record resolution for the JobSubmission join. Bullhorn's API is publicly documented and well-supported, which is a significant improvement over VivaHR's undocumented data access. Automations, pipeline stage configurations, Culture Profiles, and integrations do not migrate as code; we deliver written inventories for the customer's Bullhorn admin to rebuild post-migration.
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 VivaHR 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.
VivaHR
Job (Job Posting)
Bullhorn ATS & CRM
JobOrder
1:1VivaHR Jobs map directly to Bullhorn JobOrder records. We extract Job title, type, location, description, and status, then create the Bullhorn JobOrder via the Bullhorn REST API. Bullhorn JobOrder requires a Client (Company) reference, so we create or look up the Client record before inserting the JobOrder. VivaHR's custom pipeline stages per Job require a reconciliation step: we map each named stage to a Bullhorn JobOrder status value or a custom JobOrder custom field if the pipeline has more stages than Bullhorn status values by default.
VivaHR
Candidate
Bullhorn ATS & CRM
Candidate
1:1VivaHR Candidates map directly to Bullhorn Candidate records. We extract name, email, phone, skills, work history, education, and the full profile data from VivaHR. Bullhorn's Candidate entity supports custom fields; we pre-create Bullhorn custom fields to receive VivaHR Questionnaire responses and any non-standard properties that do not map to Bullhorn's standard fields. Bullhorn field type character limits (some capped at 100 characters) require truncation or overflow mapping for long-form text fields.
VivaHR
Candidate-to-Job Attachment (Pipeline Stage)
Bullhorn ATS & CRM
JobSubmission
1:1This is the critical join record for this migration. VivaHR attaches Candidates to Jobs with a pipeline stage assignment. Bullhorn maintains the same relationship through a separate JobSubmission entity linking Candidate and JobOrder. We extract every Candidate-Job pairing with its stage, stage-entry date, and stage-change history, then create Bullhorn JobSubmission records pointing to the resolved Candidate and JobOrder. This join table must be loaded after both Candidate and JobOrder exist in Bullhorn.
VivaHR
Hiring Pipeline Stage
Bullhorn ATS & CRM
JobOrder Status or Custom Field
lossyVivaHR's customizable pipeline stages (available on Growth and Premier) map to Bullhorn JobOrder status values or a Bullhorn custom picklist field if the pipeline exceeds the default status count. Stage probabilities migrate to Bullhorn's lead revenue or job order probability if those fields are enabled. We configure the Bullhorn status values during schema setup so that stage names and counts match the customer's VivaHR configuration.
VivaHR
Scorecard (per Job)
Bullhorn ATS & CRM
Candidate Custom Fields or Note
lossyVivaHR Scorecards are created per Job and contain evaluator ratings of Candidates. Bullhorn does not have a native Scorecard entity. We map Scorecard templates to Bullhorn Candidate custom fields (one field per rating criterion) and preserve individual Candidate ratings as field values. For scorecard templates with multiple criteria, we use a bulleted Note or a custom text area field containing the full scorecard output. The customer chooses the preferred approach during scoping.
VivaHR
Candidate Questionnaire
Bullhorn ATS & CRM
Candidate Custom Fields
lossyVivaHR Questionnaires attached to Jobs collect structured candidate data such as availability, salary expectations, certifications, and custom screening questions. Bullhorn supports custom fields on the Candidate entity. We create Bullhorn custom fields of the appropriate type (text, picklist, date, checkbox) for each Questionnaire question, then populate them during the Candidate migration. Questionnaire templates with conditional logic do not transfer as logic; we document the template for the Bullhorn admin to reproduce.
VivaHR
Culture Profile
Bullhorn ATS & CRM
Careers Page Content (manual rebuild)
lossyVivaHR Culture Profiles contain employer brand text, media, and careers page content stored as rich-text and file assets. Bullhorn does not have a Culture Profile equivalent; the careers page content is rebuilt in Bullhorn's Career Portal or an external careers site. We extract Culture Profile content as structured text files and a file manifest (logos, images, employee photos) and deliver them to the customer's Bullhorn admin for re-import into Bullhorn's portal or an external careers page tool.
VivaHR
Hiring Team (Job-level assignees)
Bullhorn ATS & CRM
Candidate and JobOrder Owner fields
1:1VivaHR assigns team members to Jobs with specific roles (hiring manager, recruiter, coordinator). Bullhorn tracks ownership at the record level: the JobOrder Owner, the Candidate record Owner, and the JobSubmission assigning user. We map VivaHR hiring team members to Bullhorn User records by email lookup, then assign OwnerId on Candidate and JobOrder, and set the assigning user on JobSubmission. Users without a Bullhorn account go to a reconciliation queue for the admin to provision before the final migration phase.
VivaHR
Candidate Application Activity
Bullhorn ATS & CRM
Note and Task
1:1VivaHR stores candidate application activity such as stage-change timestamps, interview notes, and offer details. Bullhorn captures this as Note records attached to the Candidate and JobSubmission, and as Task records for scheduled follow-ups. We convert VivaHR activity log entries to Bullhorn Note records with a formatted body containing the stage name, date, and any associated evaluator notes, preserving the original timestamp in the Note body.
VivaHR
Custom Object (VivaHR Growth/Premier)
Bullhorn ATS & CRM
Bullhorn Custom Object
1:1VivaHR Growth and Premier plans support custom objects tied to the Jobs or Candidates schema. Bullhorn supports Custom Objects (configured in Admin) that can hold additional data on separate record tabs. We pre-create Bullhorn Custom Objects with all required fields, lookup relationships to Candidate or JobOrder, and validation rules before migrating the custom object data via Bullhorn's REST API. Custom Object naming follows Bullhorn conventions with a custom object API name assigned during schema setup.
VivaHR
Skills (on Candidate)
Bullhorn ATS & CRM
Skill (on Candidate)
1:1VivaHR stores skills on Candidate records as free-text or tag-based fields. Bullhorn supports a Skill entity linked to Candidate via a many-to-many relationship. We extract skills from VivaHR, deduplicate the skill list, and create Bullhorn Skill records (or map to existing Bullhorn Skills if the taxonomy already exists), then create CandidateSkill association records linking each Candidate to their skills in Bullhorn.
VivaHR
Integration Configuration
Bullhorn ATS & CRM
Integration Documentation (rebuild)
lossyVivaHR advertises thousands of integrations via Zapier and other platforms, but the integration configurations (triggers, filters, authentication settings) are not migratable records. We document every active VivaHR integration by reviewing the customer's Zapier account, VivaHR settings, and any connected tools, then deliver a written integration inventory with recommended Bullhorn equivalents (Bullhorn's native integrations, Bullhorn App Marketplace add-ons, or Zapier alternatives). The customer's admin rebuilds each integration post-migration.
| VivaHR | Bullhorn ATS & CRM | Compatibility | |
|---|---|---|---|
| Job (Job Posting) | JobOrder1:1 | Fully supported | |
| Candidate | Candidate1:1 | Fully supported | |
| Candidate-to-Job Attachment (Pipeline Stage) | JobSubmission1:1 | Fully supported | |
| Hiring Pipeline Stage | JobOrder Status or Custom Fieldlossy | Fully supported | |
| Scorecard (per Job) | Candidate Custom Fields or Notelossy | Fully supported | |
| Candidate Questionnaire | Candidate Custom Fieldslossy | Fully supported | |
| Culture Profile | Careers Page Content (manual rebuild)lossy | Fully supported | |
| Hiring Team (Job-level assignees) | Candidate and JobOrder Owner fields1:1 | Fully supported | |
| Candidate Application Activity | Note and Task1:1 | Fully supported | |
| Custom Object (VivaHR Growth/Premier) | Bullhorn Custom Object1:1 | Fully supported | |
| Skills (on Candidate) | Skill (on Candidate)1:1 | Fully supported | |
| Integration Configuration | Integration Documentation (rebuild)lossy | 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.
VivaHR gotchas
No publicly documented API for bulk exports
Fillable PDF forms not supported on the platform
First-time job posting approval delay
Product name inconsistency across web properties
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 VivaHR extraction planning
We audit the source VivaHR account across tier (Freemium/Standard/Growth/Premier), active Jobs, Candidate volume, pipeline stage configuration, Scorecard templates, Questionnaire schemas, and any custom objects. Because VivaHR lacks a public API, we work with the customer to identify all available export mechanisms (built-in CSV downloads, report exports, and any manual data access) and estimate the extraction effort. We produce a written migration scope that lists every record type, its estimated volume, the extraction method, and any known data gaps before any extraction begins.
Bullhorn schema and custom field setup
We configure Bullhorn before any data arrives. This includes creating custom fields on Candidate and JobOrder (mapped to VivaHR Questionnaire responses and Scorecard ratings), configuring JobOrder status values to match VivaHR pipeline stages, setting up Bullhorn custom objects for any VivaHR custom objects, and creating Bullhorn User records or mapping VivaHR team members to existing Bullhorn Users by email. Bullhorn field type character limits are validated against the extracted data lengths during this phase to catch any truncation risks before migration.
Sandbox migration and reconciliation
We run a full migration into a Bullhorn sandbox (or a staging org if the customer does not have a sandbox) using production-like data volume. The customer reconciles record counts (Candidates in, Jobs in, Stage history in), spot-checks 25-50 records against the VivaHR source data, and verifies that Scorecard ratings and Questionnaire answers appear in the correct Bullhorn fields. Any mapping corrections, field type changes, or character limit issues are resolved in this phase. The customer signs off the sandbox migration before production begins.
Data extraction from VivaHR
Working with the customer's VivaHR admin, we extract Candidate records, Job postings, pipeline stage histories, Scorecard ratings, and Questionnaire responses using available export tools. For each extraction, we log the record count, extraction date, and any records that were inaccessible. If data cannot be extracted programmatically, we provide the customer with a structured CSV template and guide them through the manual export process. This phase runs in parallel with Bullhorn schema setup and typically takes one to three weeks depending on extraction complexity.
Production migration in dependency order
We run production migration in Bullhorn in strict dependency order: Client and Company records first (for JobOrder Client lookup), then JobOrder (Jobs), then Candidate, then JobSubmission (the candidate-to-job join records), then Skills and association records, then custom objects, then Note and Task history. Bullhorn's REST API handles each entity with appropriate batch sizing and rate-limit backoff. Bullhorn's own documentation notes that data imports up to 15,000 records are included in Bullhorn Launch; larger imports or imports with complex relationships are handled by FlitStack AI via the API.
Cutover, validation, and automation rebuild handoff
We freeze VivaHR access during cutover and run a final delta migration of any records modified during the migration window. We validate the production load against the sandbox reconciliation baseline, checking record counts, field-population rates, and the JobSubmission join table integrity. We deliver a written integration and automation inventory documenting every active VivaHR automation and integration that requires rebuild in Bullhorn. We support a one-week hypercare window for reconciliation issues. Bullhorn Automation sequences and saved searches are documented for the admin to rebuild; they are not migrated as code.
Platform deep dives
VivaHR
Source
Strengths
Weaknesses
Bullhorn ATS & CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard HRMS migration. All 7 core objects map 1:1 between VivaHR and Bullhorn ATS & CRM.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across VivaHR and Bullhorn ATS & CRM.
Object compatibility
All 7 core objects map 1:1 between VivaHR 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
VivaHR: Not publicly documented — confirm with VIVAHR support during scoping..
Data volume sensitivity
VivaHR 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 VivaHR to Bullhorn ATS & CRM migration scoping. Not seeing yours? Book a call.
Walk through your VivaHR 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 VivaHR
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.