Bullhorn ✓ Salesforce Migration
Bullhorn
Salesforce

Migrate Bullhorn Placements to Salesforce Opportunities in days

Bullhorn's rigid placement pipeline and limited customization keep staffing teams trapped in outdated workflows. SuprSwitch uses its proprietary transformation layer to extract your placements, candidates, and job orders directly into Salesforce's native schema, preserving all relationships and data fidelity in 72 hours or less—no manual re-entry required.

100%
Data Fidelity
< 48 hrs
Avg. Turnaround
99.90%
Success Rate
"Will my Bullhorn Placements and JobOrders survive the migration to Salesforce Opportunities, or will I lose the candidate-to-job relationship data?"
SuprSwitch's native schema mapping directly extracts your Placement records and transforms them into Salesforce Opportunities while preserving the bidirectional relationship data. Your JobOrder-to-Candidate associations are reconstructed through our proprietary in-house engine as Salesforce Account-Contact-Opportunity relationships, maintaining the full audit trail of which candidates were placed on which jobs.
"Can SuprSwitch preserve my Bullhorn custom fields on Candidate and JobOrder records when migrating to Salesforce custom fields?"
Yes. Our transformation layer performs direct data extraction of all Bullhorn custom fields and intelligently maps them to Salesforce custom fields on Contacts, Accounts, and Opportunities using field-type matching. If a Bullhorn custom field doesn't have an exact Salesforce equivalent (like multi-select picklists in certain contexts), SuprSwitch automatically creates a compatible workaround field and documents the mapping so nothing is lost.
"Will my Bullhorn activity history—all those Notes, Tasks, and ClientContacts—carry over to Salesforce Activities, or will I start with a blank timeline?"
SuprSwitch's in-house engine extracts the complete Bullhorn activity graph (Notes, Tasks, Events, and ClientContact interactions) and reconstructs them as Salesforce Activities, Events, and Task records with all timestamps and associations intact. Your historical context stays attached to the right Contacts, Accounts, and Opportunities so your team sees the full relationship history from day one.
Why SuprSwitch

Why Staffing & Recruiting Teams Choose SuprSwitch Over a Bullhorn CSV Export to Salesforce

Bullhorn's native CSV export flattens candidate-to-opportunity relationships, loses placement history, and orphans all custom recruitment fields that don't map to standard Salesforce objects. SuprSwitch's in-house transformation layer preserves Bullhorn's recruitment-specific data model—including candidates, placements, and submissions—by mapping them to Salesforce Accounts, Contacts, Opportunities, and custom objects with full referential integrity intact.

🔗

Candidate-Placement-Job Relationships Stay Intact

Bullhorn's Candidate, Placement, and JobOrder objects have complex many-to-many relationships that a CSV export completely destroys. SuprSwitch's native schema mapping preserves these connections by mapping Candidates to Salesforce Contacts, Placements to Opportunities, and JobOrders to Opportunities with a custom Job_Order__c object, maintaining the full recruitment pipeline context. Each placement lookup field is hydrated with the correct parent relationship, so your sales team sees the complete candidate history and job context without manual re-linking.

📋

Bullhorn Placement Status & Revenue Syncs as Opportunity Stage

Bullhorn's Placement object contains placement-specific statuses (Prospect, Interview, Offered, Placed, Inactive) and revenue fields that Salesforce CSV import simply ignores. SuprSwitch maps Bullhorn's Placement Status to Salesforce Opportunity Stage, Placement Fee to Amount, and Placement Date to Close Date—preserving your recruitment revenue cycle visibility. Our transformation engine also backfills historical placement timelines, so your Salesforce pipeline reflects the true staffing sales process from day one.

🎯

Custom Bullhorn Fields Become Real Salesforce Custom Fields

Bullhorn allows unlimited custom fields on Candidates, Placements, and Companies—but a CSV export treats them all as text strings, losing field type information (dropdown, checkbox, date, currency). SuprSwitch's in-house transformation engine reads Bullhorn's metadata directly and creates native Salesforce custom fields with the correct data types: dropdown lists become picklists, checkboxes remain checkboxes, date fields stay dates. Your recruiting data arrives with proper validation and filtering enabled.

📊

Candidate Activity & Submission History Preserved

Bullhorn's Submission object (linking Candidates to JobOrders) tracks interview schedules, feedback, and status changes—none of which appear in a CSV export. SuprSwitch extracts Submission records and creates Salesforce Tasks and custom Submission__c records with original timestamps, recruiter notes, and candidate feedback intact. Your hiring team retains the full interaction history for every placement, making it easy to spot repeat candidates and justify pipeline decisions.

Trusted by 200+ sales-led teams who migrated off
Data Coverage

Every Bullhorn Asset, Accounted For

Bullhorn's core data objects—Candidates, Clients, Opportunities, Placements, Tasks, and Notes—form the backbone of staffing and recruitment operations. SuprSwitch migrates all of them seamlessly to Salesforce, preserving data integrity and relational structure throughout the transition.

👤 Candidates
All records
Candidates
Salesforce Contacts
💡 Bullhorn Candidate records (skill tags, availability status, formatted name fields) map to Salesforce Contacts, with custom fields created for staffing-specific attributes like availability, visa status, and skill proficiencies that don't have native Salesforce equivalents.
🏢 Clients
All records
Clients
Salesforce Accounts
💡 Bullhorn Client records become Salesforce Accounts, with Client hierarchies (parent/child relationships) preserved through the Account Parent field; custom fields capture Client-specific metadata like account tier, industry vertical, and business unit associations.
🎯 Opportunities
All records
Opportunities
Salesforce Opportunities
💡 Bullhorn Opportunities map to Salesforce Opportunities with job requisition details, hiring timeline, and candidate-to-opportunity relationships preserved; picklist values for status and stage are standardized and mapped to Salesforce's native stage values.
Placements
All records
Placements
Salesforce Opportunities (Closed Won) + Custom Object
💡 Bullhorn Placements can either roll into closed Salesforce Opportunities or populate a custom Placements object for detailed placement history; placement-to-candidate and placement-to-client relationships are maintained through lookups, with hire date and salary data mapped to corresponding fields.
📋 Tasks
All records
Tasks
Salesforce Tasks
💡 Bullhorn Tasks migrate to Salesforce Tasks with subject, due date, priority, and assigned owner preserved; task-to-record relationships (linked to Candidates, Clients, or Opportunities) are maintained through the WhoId and WhatId task relationships in Salesforce.
📝 Notes
All records
Notes
Salesforce Notes
💡 Bullhorn Notes (including formatted text and attachments) map to Salesforce Notes with parent object relationships preserved; large note text is preserved in Salesforce's native note field, and associated file attachments are migrated to Salesforce Files linked to the same parent record.
📸

Pre-Migration Data Preview

Before we touch anything, SuprSwitch generates a full data inventory of your account: record counts per object, custom field list, pipeline structure, and owner mapping. You approve the field map before the migration runs.

Under the Hood

Built for Bullhorn's Distributed Entity Graph

Bullhorn's multi-tenanted, entity-relationship architecture stores candidate profiles, job orders, placements, and accounts as interconnected graph nodes with polymorphic ID systems and nested custom field structures. SuprSwitch's proprietary extraction engine bypasses traditional export bottlenecks by directly traversing Bullhorn's entity graph and reconstructing field hierarchies—including complex user-defined fields (UDFs), skill associations, and lookup relationships—without relying on CSV exports or field-by-field API enumeration.

Native Bullhorn Entity Graph Extraction

Direct Graph Traversal

Bullhorn models candidates, contacts, placements, jobs, and accounts as interconnected entity nodes with soft-referenced IDs and bidirectional associations. SuprSwitch's extraction engine directly traverses this graph structure, capturing the full cardinality of one-to-many relationships (e.g., a candidate's multiple placements, multiple skill records, multiple address entries) without row flattening or CSV serialization artifacts. This preserves the true relational topology needed for accurate Salesforce object duplication.

Polymorphic ID & Custom Field Type Mapping

Schema-Aware Field Casting

Bullhorn's custom fields use a polymorphic type system (String, Integer, Double, DateTime, UserID, EntityID) that must map precisely to Salesforce's field types (Text, Number, Currency, Date/Time, Lookup). SuprSwitch's native schema mapping layer introspects Bullhorn's UDF metadata and automatically casts field values during transformation, preventing type mismatches and truncation errors that would occur in CSV roundtrips. This includes proper handling of Bullhorn's legacy field aliasing and multi-entity UDF inheritance patterns.

Referential Integrity & Soft-Reference Rebuilding

Relationship Fidelity

Bullhorn uses soft references (indirect EntityID pointers) to maintain associations between candidates and placements, placements and job orders, and accounts and contacts. During migration, these soft references must be atomically rebuilt in Salesforce's strict foreign-key model. SuprSwitch's transformation layer reconstructs all associations in a dependency-aware order, ensuring no orphaned records and maintaining Salesforce's referential constraints without data loss or circular-reference failures.

Live-Safe Incremental Sync & Cutover Lock

Zero-Downtime Handoff

Bullhorn deployments typically require ongoing candidate and job order updates until cutover. SuprSwitch's delta-sync pipeline captures changed records since the last full extraction, allowing multiple staging runs before the final migration. On cutover day, a brief write-lock is applied to Bullhorn, a final delta is extracted and validated, and Salesforce is atomically switched to the new source of truth—eliminating the extended validation blackout typically required for CSV-based cutoffs.

100% Data Fidelity Guarantee

We verify record counts and field values in before sign-off. Any discrepancy is fixed before you go live.

30-Day Post-Migration Support

A dedicated migration engineer is available for 30 days post-launch to fix any data issues that surface after your team starts using.

SOC 2 Compliant Process

Data is encrypted in transit and at rest. We never store your credentials — OAuth tokens are used and revoked per migration.

Migration Architecture

Migration Architecture: Bullhorn → Salesforce

SuprSwitch's proprietary extraction engine maps Bullhorn's candidate, contact, company, and opportunity records through a native schema translation layer, ensuring complex staffing workflows and candidate history transfer intact to Salesforce Accounts, Contacts, and Opportunities with full audit compliance.

1
Schema Audit & Field Mapping
Analyze Bullhorn's Candidate, Contact, Company, Opportunity, Placement, and JobOrder objects. Map custom fields, picklists, and dependencies to Salesforce standard and custom objects. Validate data integrity and identify transformation rules.
Day 1–2
2
Primary Object Migration
Migrate Candidates and Contacts to Salesforce Contacts, Companies to Accounts, and JobOrders with Placements to Opportunities. Direct data pipeline loads records with all field values and relationships preserved.
Day 3
3
Associations & Historical Data
Establish Account-Contact associations, Contact-Opportunity relationships, and migrate Activities, Notes, and ChangeHistory records. Preserve staffing workflows and candidate interaction timelines in Salesforce Activity Timeline.
Day 4–5
4
Delta Sync & Go-Live Validation
Capture changes made in Bullhorn during migration window. Execute record count validation, field-level checksums, and relationship integrity tests. Perform cutover validation and activate production sync.
Day 6
🔍

SuprSwitch's proprietary extraction engine reads Bullhorn's native data model, including Candidate profiles, Placement associations, and JobOrder hierarchies, through direct database access without dependency on external middleware. Multi-threaded batch extraction ensures rapid full-table reads with integrity checking at source.

Transformation layer performs real-time field mapping and picklist translation, then loads records into Salesforce in optimized batch groups respecting governor limits. Custom field values and relational references are staged in intermediate tables for conflict-free insertion into Accounts, Contacts, and Opportunities.

Post-migration validation compares source and target record counts by object type, executes field-by-field checksums on sample populations, and validates referential integrity of all Account-Contact and Contact-Opportunity links. Automated audit reports flag discrepancies before final cutover approval.

The Human Element

Beyond Automation: In-House RevOps Experts

Our proprietary engine handles 99% of the heavy lifting, but every CRM has strict platform limitations. When HubSpot restricts automated imports for complex workflows or proprietary activity history, our in-house RevOps professionals step in.

We manually rebuild the business logic that machines can't touch, ensuring your new environment is perfectly tuned and ready for your sales team on day one.

RevOps Expert RevOps Expert RevOps Expert

Dedicated RevOps Engineer included with every migration.

What our experts handle manually:

Complex Workflows & Automations

Automated engines cannot migrate business logic. We manually translate and rebuild your HubSpot automations natively in HubSpot.

Restricted Activity History

Some historical data types are locked by HubSpot. Our team uses creative data-structuring to ensure no context is lost.

Custom Object Architecture

When standard mapping isn't enough, we architect and deploy custom objects in HubSpot to match your exact sales motion.

Choose the Migration Plan That Fits Your Business

Whether you want complete control or expert guidance, we’ve got you covered.

Self-Service

$499

Starting price, up to 50,000 records

Check

Access to all supported CRMs

Check

Free Sample migrations

Check

Real-time Preview

Check

Migration Analytics Report

Custom Migration

$Talk to us

Custom quotes for complex migrations.

Group

Everything in Guided Migration +

Group

Complex Field Transformations

Group

Industry-Specific Customizations

Group

Legacy System Integration

Group

Complex Data Filtering

FAQs

Common Questions About Migration

Technical How does SuprSwitch handle Bullhorn's Placement records and fee schedules during migration to Salesforce, since Salesforce doesn't have a native Placement object?
Bullhorn's Placement object is a specialized record type that tracks staffing engagements with associated fees, markups, and revenue sharing—something Salesforce's standard Opportunity object wasn't originally designed to replicate. SuprSwitch maps Placement records to a custom Opportunity record type in Salesforce while creating a companion custom object called 'Placement_Details' that captures Bullhorn-specific fields like fee arrangement, payroll status, and placement end dates. Your fee schedules are preserved as related records, maintaining the hierarchical relationship between the placement and its financial terms. However, Bullhorn's native fee calculation engine won't automatically port over, so we provide post-migration validation reports that flag any discrepancies in calculated fees versus migrated values.
Edge Case Bullhorn allows candidates to have multiple concurrent Placements, but we also have duplicate candidate records that were never merged. How does SuprSwitch prevent data duplication and relationship conflicts when migrating to Salesforce?
This is one of the most common edge cases in Bullhorn migrations. Our transformation layer runs a three-pass deduplication algorithm: first, it identifies exact matches on email and phone using Salesforce's matching rules; second, it flags potential fuzzy matches (similar names with identical contact information) for your review; third, it preserves the relationship integrity by consolidating all Placements and job submissions from duplicate candidate records into a single Salesforce Contact before the migration commits. We generate a 'Deduplication Report' that shows which duplicates were merged and why, so your team has full visibility. For records you manually decide are distinct candidates despite matching contact info, you can override the algorithm on a case-by-case basis before migration runs.
Timeline What's the timeline for migrating our Bullhorn instance with 250,000 candidate records, 50,000 active placements, and 5 years of job order history?
A migration of this size typically follows this schedule: Week 1 involves environment setup and field mapping validation; Week 2 covers a full test migration on sample data (approximately 10% of your candidate base) where you validate data accuracy and provide feedback; Week 3 includes the full production migration, which runs overnight and usually completes within 12-18 hours given your volume; Week 4 is dedicated to post-migration verification, reconciliation reporting, and user acceptance testing in your Salesforce sandbox before going live. The critical factor is data validation time—we recommend allocating at least 5-7 business days for your team to spot-check records across all major object types (candidates, placements, job orders) before cutover. If issues are found during validation, rollback is straightforward since we preserve your original Bullhorn instance.
Data Integrity Bullhorn's Candidate and JobOrder objects have picklist fields (like 'Skill' and 'Category') that our team heavily customizes. How are these picklists translated to Salesforce's metadata structure?
Bullhorn picklists are stored in a flat taxonomy structure, while Salesforce uses hierarchical picklist definitions with validation rules. SuprSwitch's proprietary schema mapping engine translates each Bullhorn picklist value into a corresponding Salesforce picklist on the target custom fields. However, if your Bullhorn picklists have inactive or archived values, we flag those separately because Salesforce doesn't allow selecting archived picklist values on new records—you'll need to decide whether to reactivate them or map legacy values to an active equivalent. We also generate a 'Picklist Reconciliation Report' showing any values that couldn't be matched due to character limits or special characters, with recommended mappings for your review before migration executes.
Community We use Bullhorn's Appointment object to track candidate interviews and recruiter activities. Does Salesforce have an equivalent, and how does SuprSwitch preserve these records?
Salesforce doesn't have a dedicated Appointment object like Bullhorn—it relies on the Event object (calendar events) and Task object (to-do items) for activity tracking. SuprSwitch maps Bullhorn Appointments to Salesforce Events when they have specific date/time details (interviews, scheduled calls) and to Tasks when they're open-ended action items. This preserves the historical record and maintains relationships to the associated Candidate and JobOrder. One limitation: Bullhorn Appointments support custom fields that may not have direct equivalents in Salesforce's Event/Task schema, so we migrate those to a custom 'Appointment_Archive' object for reference without losing data. Your team can then decide post-migration whether to create additional custom fields on Events/Tasks to capture any business-critical appointment metadata that didn't map natively.

Ready to move your team off Bullhorn ?

Start with a free sample migration — see your actual Bullhorn data in Salesforce before you commit.

Try Free Sample Migration