HRMS migration
Field-level mapping, validation, and rollback between Longlist and Bullhorn ATS & CRM. We move data and schema; workflows are rebuilt natively in Bullhorn ATS & CRM.
Longlist
Source
Bullhorn ATS & CRM
Destination
Compatibility
7 of 12
objects map 1:1 between Longlist and Bullhorn ATS & CRM.
Complexity
CModerate
Timeline
3-5 weeks
Overview
Moving from Longlist to Bullhorn is a migration from a browser-overlay enrichment layer into a full ATS/CRM system of record. Longlist captures candidate contact data (email, phone, LinkedIn), source attribution, and research tags applied by sourcers during the sourcing phase. Bullhorn stores candidates as structured Candidate records with standard fields for contact information and supports up to ten custom objects per entity for enrichment-layer fields that do not map to Bullhorn native fields. We extract candidate profiles and their enrichment metadata from Longlist, map standard contact fields directly to Bullhorn Candidate fields, and route Longlist-specific enrichment attributes into Bullhorn custom objects (customObject1s–customObject10s) that Bullhorn Support provisions per entity. Any lists or group memberships from Longlist become Bullhorn Candidate Lists or Distribution Lists. Bullhorn does not natively store Longlist's research-layer workflow state, so we flag any pipeline or sourcing-stage values that require a Bullhorn custom picklist. We do not migrate automation rules or sourcing sequences as code; we deliver a written inventory of any active Longlist sequences requiring rebuild in Bullhorn's native automation layer.
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 Longlist 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.
Longlist
Candidate
Bullhorn ATS & CRM
Candidate
1:1Longlist Candidate records map to Bullhorn Candidate entities. The Longlist display name maps to firstName and lastName; email maps to email; phone maps to phone; LinkedIn profile URL maps to LinkedIn (custom Char field or Bullhorn standard field depending on Bullhorn edition). We use the Candidate entity as the primary record and resolve any required fields (name, email) before insert. Bullhorn requires at minimum a firstName or lastName; records with no name are flagged during scoping for admin review.
Longlist
Candidate Contact Fields (email, phone, LinkedIn)
Bullhorn ATS & CRM
Candidate (standard fields)
1:1Longlist contact fields (email, phone, LinkedIn) map directly to Bullhorn Candidate standard fields: email to Candidate.email, phone to Candidate.phone, LinkedIn URL to Candidate.linkedIn. These are Bullhorn native fields and do not require custom object setup. Longlist also surfaces secondary email addresses and alternative phone numbers; these land in Bullhorn Candidate custom character fields (customText1–customText10) provisioned by Bullhorn Support.
Longlist
Longlist Source Attribution (source tag, original research site)
Bullhorn ATS & CRM
Candidate (source field) + customChar1 (enrichment source)
lossyLonglist records carry a source attribution indicating where the candidate data was found (LinkedIn Recruiter, company website, job board, etc.). This maps to Candidate.source (Bullhorn standard). Any enriched data provenance (the specific enrichment provider or scrape source) lands in a Bullhorn custom character field (customChar1) that Bullhorn Support provisions on the Candidate entity. Source values that do not match Bullhorn picklist values are pre-loaded into the picklist during migration configuration.
Longlist
Longlist Tags (sourcer-applied research tags)
Bullhorn ATS & CRM
Candidate customMultiSelect1 (picklist migration)
lossyLonglist sourcers apply freeform tags to candidate records during research. Bullhorn does not have a native tag system equivalent; we map these to a Bullhorn custom multi-select picklist field (customMultiSelect1) provisioned on Candidate by Bullhorn Support. Pre-migration, we extract all distinct tag values from Longlist, create the corresponding picklist entries in Bullhorn, and bulk-apply the multi-select values during candidate import. Tags used for segmentation (sourcer name, pipeline stage) are treated as separate custom fields rather than merged into one multi-select.
Longlist
Longlist Lists (group membership)
Bullhorn ATS & CRM
Candidate List / Distribution List
1:manyLonglist lists (e.g., 'Tech Leaders Q1', 'Passive Candidates', 'VIP Sourced') map to Bullhorn Candidate Lists. Each Longlist list becomes a Bullhorn Candidate List. Candidate membership migrates as a Candidate List membership record linking the Candidate to the List. If Longlist lists overlap (a candidate in multiple lists), Bullhorn Candidate List membership supports many-to-many relationships natively, so no candidate duplication occurs.
Longlist
Candidate (implied company context)
Bullhorn ATS & CRM
ClientCorporation
1:1Longlist does not have a native Company entity; company context is embedded in the candidate record (the employer or target company the sourcer was researching). We extract employer or target company names from Longlist candidate records and create Bullhorn ClientCorporation entities during migration. Each Candidate then links to its ClientCorporation via the candidateToClientCorporation relationship. If the employer name is absent or ambiguous, the Candidate is created without a corporation link and flagged for the admin to resolve post-migration.
Longlist
Longlist Enrichment Attributes (fields beyond standard contact data)
Bullhorn ATS & CRM
Candidate CustomObject1s–CustomObject10s
lossyLonglist surfaces enrichment attributes that extend beyond standard contact fields—confidence scores, data freshness timestamps, social handle URLs, technology stack signals, or sourcing-tool metadata. Bullhorn supports up to 10 custom objects per Candidate entity (customObject1s through customObject10s). Each custom object must be provisioned by Bullhorn Support before migration. We coordinate with the customer's Bullhorn Support contact to pre-create the custom objects, then populate them via the Bullhorn REST API during migration. Custom object fields are typed (Char, Int, Float, Date, Bool, Lookup) and we map Longlist attribute types to Bullhorn field types during schema design.
Longlist
Candidate (notes and research comments)
Bullhorn ATS & CRM
Note (attached to Candidate)
1:1Longlist sourcers frequently add internal research notes to candidate records during the enrichment phase. Bullhorn does not have a native 'research note' field on Candidate; we migrate these as Bullhorn Note records attached to the Candidate via ContentDocumentLink. The Note body preserves the full research comment. If Bullhorn's document management (ContentDocument/ContentVersion) is not enabled on the destination org, we fall back to Bullhorn Note records without ContentDocumentLink attachment.
Longlist
N/A (Longlist has no native job or opportunity entity)
Bullhorn ATS & CRM
JobOrder (not migrated from Longlist)
1:1Longlist does not store job orders, requisitions, or placement records. Bullhorn JobOrder and Placement entities cannot be populated from Longlist data. During scoping, we confirm whether the customer has any job or placement data held outside Longlist (in spreadsheets, email, or another system) that should be migrated in parallel. If no external data exists, JobOrder and Placement entities are created empty in Bullhorn and the customer populates them during Bullhorn onboarding. We flag this gap in the migration scope document.
Longlist
N/A (Longlist has no Opportunity entity)
Bullhorn ATS & CRM
Opportunity
1:1Bullhorn Opportunity is a sales-layer entity for tracking candidate-driven business development, not a recruitment-specific object. Longlist does not have an Opportunity equivalent. If the customer's team uses Bullhorn Opportunities to track placement-fee pipelines, these records are created post-migration. We do not create Opportunity records from Longlist data.
Longlist
Longlist Owner (sourcer who owns the record)
Bullhorn ATS & CRM
Bullhorn User (owner resolution)
1:1Longlist records carry an owner attribution (the sourcer who created or last edited the record). We resolve Longlist owner email addresses against the Bullhorn User table in the destination org. Any Longlist owner without a matching Bullhorn User is held in a reconciliation queue. The customer's Bullhorn admin provisions any missing Users before record import resumes. Owner resolution is required before Candidate insert because Bullhorn requires an ownerId on all Candidate records.
Longlist
Longlist Sequences (outreach cadences)
Bullhorn ATS & CRM
N/A — do not migrate
lossyLonglist email sequences and outreach cadences are automation objects that have no direct Bullhorn equivalent at the individual-sourcer level. Bullhorn's automation layer (Bullhorn Automation) handles outreach at scale but uses a different event and action model. We do not migrate sequences as code. We deliver a written inventory of every active Longlist sequence with its steps, delays, and trigger conditions, mapped to a recommended Bullhorn Automation equivalent for the customer's Bullhorn admin or implementation partner to rebuild.
| Longlist | Bullhorn ATS & CRM | Compatibility | |
|---|---|---|---|
| Candidate | Candidate1:1 | Fully supported | |
| Candidate Contact Fields (email, phone, LinkedIn) | Candidate (standard fields)1:1 | Fully supported | |
| Longlist Source Attribution (source tag, original research site) | Candidate (source field) + customChar1 (enrichment source)lossy | Fully supported | |
| Longlist Tags (sourcer-applied research tags) | Candidate customMultiSelect1 (picklist migration)lossy | Fully supported | |
| Longlist Lists (group membership) | Candidate List / Distribution List1:many | Fully supported | |
| Candidate (implied company context) | ClientCorporation1:1 | Fully supported | |
| Longlist Enrichment Attributes (fields beyond standard contact data) | Candidate CustomObject1s–CustomObject10slossy | Fully supported | |
| Candidate (notes and research comments) | Note (attached to Candidate)1:1 | Fully supported | |
| N/A (Longlist has no native job or opportunity entity) | JobOrder (not migrated from Longlist)1:1 | Fully supported | |
| N/A (Longlist has no Opportunity entity) | Opportunity1:1 | Fully supported | |
| Longlist Owner (sourcer who owns the record) | Bullhorn User (owner resolution)1:1 | Fully supported | |
| Longlist Sequences (outreach cadences) | N/A — do not migratelossy | 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.
Longlist gotchas
Outreach history (email sequences, SMS, WhatsApp) must be extracted to preserve candidate context
Resume parsing data is a separate artifact from the original file
Chrome extension scope vs CRM scope creates data lineage questions
Integrated phone / SMS depends on telephony provider configuration
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 enrichment field cataloging
We extract a full export of all Longlist candidate records, including contact fields (email, phone, LinkedIn), enrichment metadata, source attribution, sourcer-applied tags, and list membership. We catalog every distinct enrichment attribute beyond the standard contact fields and identify which map to Bullhorn native Candidate fields and which require Bullhorn custom object provisioning. We extract all distinct tag values for normalization. We identify the Bullhorn destination org, confirm the Bullhorn edition (Starter, Corporate, or Enterprise), and establish the Bullhorn User list for owner resolution. Bullhorn Support custom object provisioning tickets are submitted at this stage to begin the lead time for setup.
Schema design and custom object coordination
We design the Bullhorn destination schema based on the Longlist enrichment catalog. Standard contact fields (email, phone, LinkedIn) map to Bullhorn Candidate native fields. Any enrichment attributes beyond standard fields are assigned to Bullhorn custom objects (customObject1s–customObject10s) on the Candidate entity. Tag values are normalized and pre-loaded into Bullhorn custom multi-select picklists. Longlist lists are mapped to Bullhorn Candidate Lists. We extract employer and target company names from Longlist candidate records for ClientCorporation creation. The schema design document is reviewed and approved by the customer before any Bullhorn configuration begins.
Owner reconciliation and User provisioning
We extract every distinct Longlist owner (sourcer) email referenced on candidate records and match by email against the Bullhorn destination org's User table. Owners without a matching Bullhorn User are placed in a reconciliation queue. The customer's Bullhorn admin provisions missing Users in Bullhorn before record import begins. Bullhorn requires an ownerId on Candidate records; migration cannot proceed with unresolved owners because Bullhorn rejects Candidate inserts without a valid owner reference.
Sandbox migration and data reconciliation
We run a full migration into the customer's Bullhorn Sandbox environment (or a test org if no Sandbox is provisioned) using production-like data volume. The customer reconciles record counts: Candidates in (compared to Longlist total), ClientCorporations created, Candidate List memberships applied, tags distributed, and enrichment custom object records attached. We spot-check 25-50 random candidate records against the Longlist source export for field accuracy, especially enrichment attributes in custom objects and tag assignments. Any mapping corrections are applied before the production migration begins.
Production migration in dependency order
We run production migration in record-dependency order: ClientCorporations (from Longlist employer names), Candidates (with ownerId resolved, standard contact fields populated, and enrichment custom objects attached via REST API), Candidate Lists (created first, then membership records applied), tags (normalized and applied to multi-select picklist), and Notes (research comments attached via ContentDocumentLink or Note). Each phase emits a row-count reconciliation report before the next phase begins. Bullhorn REST API handles custom object inserts with exponential backoff on rate-limit responses. We do not migrate JobOrder, Placement, or Opportunity records as these do not exist in Longlist.
Cutover, validation, and sequence rebuild handoff
We freeze Longlist record writes during the cutover window, run a final delta migration of any records modified since the last export pass, then enable Bullhorn as the system of record for candidate data. We deliver a written inventory of all Longlist sequences (email cadence steps, delays, trigger conditions) mapped to recommended Bullhorn Automation equivalents. Bullhorn's automation layer does not automatically replicate Longlist's cadence model; the customer's Bullhorn admin or an implementation partner rebuilds sequences post-migration. We support a one-week hypercare window for reconciliation issues. We do not rebuild sequences or automations as part of the standard migration scope.
Platform deep dives
Longlist
Source
Strengths
Weaknesses
Bullhorn ATS & CRM
Destination
Strengths
Weaknesses
Complexity grading
Moderate HRMS migration. 1 of 7 objects need a manual workaround.
Overall complexity
Moderate migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Longlist and Bullhorn ATS & CRM.
Object compatibility
1 of 7 objects need a manual workaround.
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
Longlist: Not publicly documented — no published rate limits..
Data volume sensitivity
Longlist 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 Longlist to Bullhorn ATS & CRM migration scoping. Not seeing yours? Book a call.
Walk through your Longlist 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 Longlist
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.