HRMS migration
Field-level mapping, validation, and rollback between Jarvi and Bullhorn ATS & CRM. We move data and schema; workflows are rebuilt natively in Bullhorn ATS & CRM.
Jarvi
Source
Bullhorn ATS & CRM
Destination
Compatibility
10 of 12
objects map 1:1 between Jarvi and Bullhorn ATS & CRM.
Complexity
BStandard
Timeline
4-7 weeks
Overview
Moving from Jarvi to Bullhorn is a data-structure migration that requires careful object alignment across two distinct ATS-CRM models. Jarvi consolidates candidates and client contacts under a unified AI-native schema with built-in multichannel inbox; Bullhorn separates Candidates, ClientContacts, and ClientCorporations into distinct entities with a dedicated pipeline model tied to JobOrder records. We resolve the candidate-to-contact split (Jarvi stores some client profiles as candidate records), map Jarvi pipeline stages to Bullhorn JobOrder status values, and preserve the full activity timeline including LinkedIn InMail and WhatsApp threads as note records in Bullhorn. AI-generated candidate summaries from Jarvi land as custom text fields and are flagged for regeneration post-migration using Bullhorn's own AI tools. Bullhorn's three-tier edition model (Team, Corporate, Enterprise) determines which custom objects and workflow features are available at the destination, so we validate the target edition against the customer's custom field count and automation requirements before migration begins. Workflows, sequences, and automations do not migrate; we deliver a written inventory of these for the customer's Bullhorn admin to rebuild.
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 Jarvi 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.
Jarvi
Candidate
Bullhorn ATS & CRM
Candidate
1:1Jarvi Candidate records map directly to Bullhorn Candidate. Standard fields (firstName, lastName, email, phone, status, source) map cleanly. The Jarvi AI agent's candidate summary lands as a custom text field (candidateSummary) on the Bullhorn Candidate record since Bullhorn does not store AI-generated summaries as native objects. We flag any candidates with a stale LinkedIn refresh date (older than 90 days) for optional re-enrichment before or after migration.
Jarvi
Contact
Bullhorn ATS & CRM
ClientContact
1:1Jarvi Contact records (clients and prospects) map to Bullhorn ClientContact. Company association in Jarvi maps to the ClientCorporation lookup in Bullhorn. Communication history (LinkedIn, email, WhatsApp, Telegram) from Jarvi's unified inbox migrates as separate Note records in Bullhorn with a channel attribute field set to the source channel (LinkedIn, Email, WhatsApp, Telegram) so the origin is preserved even without Bullhorn's native threaded inbox.
Jarvi
Company
Bullhorn ATS & CRM
ClientCorporation
1:1Jarvi Company records map to Bullhorn ClientCorporation (Bullhorn's Account equivalent for staffing). Firmographic data (industry, size, revenue tier) maps to corresponding Bullhorn fields. ClientCorporation is created before any ClientContact import so the lookup relationship is satisfied at the moment of contact insert.
Jarvi
Job
Bullhorn ATS & CRM
JobOrder
1:1Jarvi Job postings map to Bullhorn JobOrder records. Each Job links to pipeline stages and associated Candidates. We extract the stage schema from Jarvi alongside each record and map Jarvi stage names to Bullhorn status values or a custom status picklist configured on the JobOrder Record Type. Job-to-candidate associations migrate as JobSubmission records in Bullhorn.
Jarvi
Pipeline Stages
Bullhorn ATS & CRM
JobOrder Status + Record Type
lossyJarvi allows custom pipeline stage definitions per job or per CRM deal. Stage names, ordering, and win/loss states vary by organization. We extract the full stage schema and create corresponding Bullhorn Record Types on JobOrder with custom status picklists that whitelist the migrated stage values. Probability percentages map to StageProbability if the customer wants weighted pipeline forecasting in Bullhorn.
Jarvi
Activities
Bullhorn ATS & CRM
Task + Event + Note
1:manyJarvi stores all outreach actions (emails sent, LinkedIn messages, calls, meetings) as Activity records linked to a Contact or Candidate. We split these by type: calls become Task with TaskSubtype=Call; meetings become Event; LinkedIn InMail and WhatsApp messages become Note records with a custom channel field; standard emails become Task (SendEmail subtype) or Note depending on Bullhorn edition. Timestamps are preserved for activity timeline ordering.
Jarvi
Conversations
Bullhorn ATS & CRM
Note (per channel thread)
1:1Jarvi threads messages across LinkedIn InMail, email, WhatsApp, Telegram, and SMS into a unified conversation view per Contact or Candidate. Bullhorn does not have a native threaded conversation object, so we export each thread as a series of Note records with a conversationId reference and a channel field. Thread ordering within a conversation is preserved by the note creation timestamp. This is the most content-intensive part of the migration and can require chunking for accounts with long conversation histories.
Jarvi
Custom Fields (Candidates)
Bullhorn ATS & CRM
Custom Fields on Candidate
1:1Jarvi exposes a UUID-based Custom Fields API for both Candidates and Contacts supporting text, number, date, and dropdown types. We retrieve the full custom field schema before migration, map each field to a Bullhorn custom field by type (text maps to Short Text or Long Text, number to Numeric, date to Date), and configure the Bullhorn field via Admin > Field Mappings before record import. Bullhorn ATS edition limits custom fields per entity; we validate against the target edition during scoping.
Jarvi
Custom Fields (Contacts)
Bullhorn ATS & CRM
Custom Fields on ClientContact
1:1Jarvi Contact custom fields map to Bullhorn ClientContact custom fields following the same type-mapping logic as candidate custom fields. If the customer's Jarvi Contacts include fields that reference Candidate-specific data (e.g., a rating applied by a recruiter), we separate those into a custom object or flag them for manual review post-migration because Bullhorn ClientContact and Candidate are distinct entities.
Jarvi
Attachments
Bullhorn ATS & CRM
Candidate Resume + ContentDocumentLink
1:1Resumes, cover letters, and uploaded documents attach to Jarvi Candidate profiles as file references. We export the file metadata and reference URL alongside candidate records. Bullhorn stores resumes as a dedicated Candidate Resume object and other attachments as ContentDocument with ContentDocumentLink to the parent Candidate. We map the primary resume to Bullhorn's native resume parsing field and secondary attachments to ContentDocument.
Jarvi
AI Summaries
Bullhorn ATS & CRM
Custom Text Field on Candidate
1:1Jarvi's AI agent generates candidate summaries and evaluations stored as linked data points on the candidate record. When migrating out of Jarvi, these summaries land as custom text fields on the Bullhorn Candidate record. If Bullhorn's AI tools (Amplify or a third-party partner) are licensed post-migration, the customer can regenerate summaries in Bullhorn. We flag this as an optional post-migration step rather than treating the summaries as native data that carries over cleanly.
Jarvi
Owner
Bullhorn ATS & CRM
User
1:1Jarvi Owner records map to Bullhorn User records. We resolve owners by email match against the Bullhorn destination org's User table. Any Jarvi Owner 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 Jarvi user is still active). Migration cannot proceed past record import because OwnerId references are required on most standard Bullhorn objects.
| Jarvi | Bullhorn ATS & CRM | Compatibility | |
|---|---|---|---|
| Candidate | Candidate1:1 | Fully supported | |
| Contact | ClientContact1:1 | Fully supported | |
| Company | ClientCorporation1:1 | Fully supported | |
| Job | JobOrder1:1 | Fully supported | |
| Pipeline Stages | JobOrder Status + Record Typelossy | Mapping required | |
| Activities | Task + Event + Note1:many | Fully supported | |
| Conversations | Note (per channel thread)1:1 | Mapping required | |
| Custom Fields (Candidates) | Custom Fields on Candidate1:1 | Fully supported | |
| Custom Fields (Contacts) | Custom Fields on ClientContact1:1 | Fully supported | |
| Attachments | Candidate Resume + ContentDocumentLink1:1 | Mapping required | |
| AI Summaries | Custom Text Field on Candidate1:1 | Mapping required | |
| Owner | 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.
Jarvi gotchas
Profile import endpoint is unpaginated
AI-generated profile summaries are not native objects
LinkedIn data freshness depends on sync schedule
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 target edition validation
We audit the source Jarvi instance across custom field schemas for Candidates and Contacts, pipeline stage definitions per Job, activity volume by channel (LinkedIn, email, WhatsApp, Telegram), attachment count, AI summary count, and Owner records. We pair this with a Bullhorn edition recommendation: Bullhorn Team ($99/mo per seat) covers basic candidate and contact management; Bullhorn Corporate ($199/mo) adds API access, custom fields, and workflows; Bullhorn Enterprise (custom pricing) is required if the customer needs more than 2 custom objects or advanced reporting dashboards. The discovery output is a written migration scope and a target edition validation against the customer's custom field and object count.
Schema design and Bullhorn custom object setup coordination
We design the destination schema in Bullhorn. This includes provisioning custom fields on Candidate, ClientContact, and ClientCorporation via Admin > Field Mappings; creating Record Types and status picklists on JobOrder for each Jarvi pipeline; and coordinating with Bullhorn Support to create any required Custom Objects via the Custom Object Setup spreadsheet. Schema is validated in a Bullhorn Sandbox first before any data is written. If the target Bullhorn edition limits custom objects to fewer than the customer's Jarvi schema requires, we surface this during scoping and recommend an edition upgrade or a field consolidation strategy.
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, ClientContacts in, ClientCorporations in, JobOrders in, Notes/Activities in), spot-checks 25-50 random records against the Jarvi source, and signs off the schema and mapping before production migration begins. Any mapping corrections, field type adjustments, or conversation thread handling issues surface here, not in production.
Owner reconciliation and User provisioning
We extract every distinct Jarvi Owner referenced on Candidate, Contact, Job, and Activity records and match by email against the Bullhorn destination org's User table. Owners without a matching Bullhorn User go to a reconciliation queue. The customer's Bullhorn admin provisions any missing Users before record import resumes. Bullhorn requires that any OwnerId reference on a record resolves to an active or inactive User in the org; unresolvable owner references cause import failures.
Production migration in dependency order
We run production migration in record-dependency order: ClientCorporations (from Jarvi Companies), JobOrders (with Record Type and status picklist resolved), Candidates (with custom fields mapped), ClientContacts (with ClientCorporation lookup resolved), JobSubmissions linking Candidates to JobOrders, Activity history (Tasks, Events, Notes via Bullhorn REST API with chunking), Attachments and resumes, and Custom Objects last. Bullhorn's API rate limits are respected with exponential backoff. Each phase emits a row-count reconciliation report before the next phase begins.
Cutover, validation, and automation rebuild handoff
We freeze Jarvi 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 a written inventory of every Jarvi workflow, automation, and outreach sequence to the customer's Bullhorn admin. This inventory documents the trigger, conditions, actions, and recommended Bullhorn Automation or third-party equivalent. We support a one-week hypercare window for reconciliation issues. We do not rebuild Jarvi automations as Bullhorn workflows inside the migration scope; that is a separate engagement or an internal admin task.
Platform deep dives
Jarvi
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 Jarvi 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
Jarvi: Not publicly documented..
Data volume sensitivity
Jarvi 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 Jarvi to Bullhorn ATS & CRM migration scoping. Not seeing yours? Book a call.
Walk through your Jarvi 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 Jarvi
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.