HRMS migration
Field-level mapping, validation, and rollback between Fountain and Bullhorn ATS & CRM. We move data and schema; workflows are rebuilt natively in Bullhorn ATS & CRM.
Fountain
Source
Bullhorn ATS & CRM
Destination
Compatibility
8 of 12
objects map 1:1 between Fountain and Bullhorn ATS & CRM.
Complexity
BStandard
Timeline
2-4 weeks
Overview
Moving from Fountain to Bullhorn is a data-model translation from an applicant-centric hiring platform to a staffing-agency CRM. Fountain organizes hiring around Applicants tied to Job Posts at Locations; Bullhorn uses a three-entity model (Candidate, ClientCorporation, JobOrder) with submissions and placements tracking the full recruiting lifecycle. We map Fountain's pipeline Stages to Bullhorn's Opportunity track, preserve hiring source attribution as a custom field on the Candidate record, and resolve the Location hierarchy into Bullhorn's ClientCorporation address structure. Fountain's automated workflow rules cannot be exported via API, so we document every active rule during discovery for Bullhorn rebuild. ReadOnly custom attributes on Fountain Applicant records cannot be written to Bullhorn as editable fields; we flag these during scoping and suggest Bullhorn custom field equivalents. Bullhorn's editions (Team, Corporate, Enterprise) cap custom object counts and searchable field limits that affect how Fountain's extended attribute schema maps into the destination.
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 Fountain 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.
Fountain
Applicant
Bullhorn ATS & CRM
Candidate
1:1Fountain Applicant records map to Bullhorn Candidate. The Fountain applicant ID becomes a custom field fountain_applicant_id__c on the Bullhorn Candidate for audit traceability. Fountain's application date, current stage, and stage history migrate as Bullhorn Candidate custom fields and Application V2 records where available. Hiring source attribution (how the candidate applied) migrates to a bullhorn_hiring_source__c custom field on Candidate. Fountain's mobile-optimized application fields (shift preference, availability windows) map to Candidate custom fields with free-text or picklist types.
Fountain
Job Post
Bullhorn ATS & CRM
JobOrder
1:1Fountain Job Posts map to Bullhorn JobOrder. The Fountain job title, description, and requirements map to JobOrder title, description, andpublicDescription. Fountain's department assignment maps to JobOrder corporateUserName or a custom field department__c. Fountain job status (open, paused, closed) maps to JobOrder status with Bullhorn's open, interview, offer, filled, and closed values. Fountain job type (hourly, shift-based) becomes a custom picklist on JobOrder.
Fountain
Stage
Bullhorn ATS & CRM
Opportunity Stage
lossyFountain pipeline Stages map to Bullhorn Opportunity stages on the JobOrder's Opportunity track. Each Fountain stage name becomes a Bullhorn Opportunity stage value. Fountain's stage sequence order maps to the Bullhorn Opportunity Stage order. Stage probability percentages from Fountain become Opportunity probability values in Bullhorn, rounded to integer. We document the full stage-to-stage transition history from Fountain as a separate migration artifact for Bullhorn workflow rebuild.
Fountain
Location
Bullhorn ATS & CRM
ClientCorporation (address component)
1:manyFountain Locations represent physical work sites (stores, warehouses, restaurants). Bullhorn has no standalone Location object; addresses attach to ClientCorporation. If Fountain Locations correspond to client worksites, we create Bullhorn ClientCorporation records for each Location, populating address fields from Fountain. If Locations represent the customer's own hiring offices, we attach address as a custom field on internal records. The mapping choice is confirmed during discovery scoping.
Fountain
Department
Bullhorn ATS & CRM
Department custom field or Business Sector
1:1Fountain Departments group Jobs and hiring teams by business function. We map department names to Bullhorn Candidate and JobOrder custom fields (department__c picklist) or Business Sector on ClientCorporation depending on use. Department hierarchies from Fountain map to Bullhorn Corporate Branch if the Bullhorn edition supports it, or to a flat department custom field if not.
Fountain
Custom Attributes (editable)
Bullhorn ATS & CRM
Custom fields on Candidate and JobOrder
1:1Fountain customAttributes with editable flags map to Bullhorn custom fields on Candidate and JobOrder. Bullhorn editions cap custom object and field counts (up to 10 Custom Objects with 55 fields each on Front Office Growth/Enterprise; 2 Custom Objects on Bullhorn ATS). We pre-create Bullhorn custom fields via the Custom Object Setup spreadsheet submitted to Bullhorn Support before migration. Field type mapping: Fountain text, number, and date map to Bullhorn String, Number, and Date types; Fountain picklist maps to Bullhorn DropDown; Fountain multi-select maps to Bullhorn CheckBox or multi-select picklist.
Fountain
Custom Attributes (readOnly)
Bullhorn ATS & CRM
Flagged for Bullhorn manual configuration
lossyFountain customAttributes with readOnly=true are system-controlled and cannot be written via API. We identify every readOnly attribute during discovery and exclude them from migration load. During Bullhorn configuration, these become Bullhorn custom fields with display labels matching the Fountain field name but populated by Bullhorn system rules or formula fields rather than imported values. We document the readOnly attribute list with its Fountain field name, type, and description so the Bullhorn admin can configure equivalent computed fields.
Fountain
Document
Bullhorn ATS & CRM
Candidate attachment (ContentDocument)
1:1Fountain document attachments (hiring forms, compliance certifications, background check results) migrate to Bullhorn Candidate records via ContentDocument and ContentDocumentLink. We export document binaries in parallel batches, maintaining a filename-to-applicant-ID mapping. Each document becomes a ContentDocument record linked to the corresponding Bullhorn Candidate. Bullhorn's file size and type restrictions apply; we validate document formats during export and flag any that exceed Bullhorn's supported types. Large document volumes increase migration duration and require explicit scoping before starting.
Fountain
Offer
Bullhorn ATS & CRM
Placement (starting point)
1:1Fountain Offer records (compensation details, start dates, offer status) map to Bullhorn Placement records. The Fountain offer status (accepted, declined, pending) becomes Placement status in Bullhorn. Start date, shift schedule, and position details migrate as Placement custom fields or standard fields depending on Bullhorn edition. We create the Placement record linked to the Candidate and JobOrder after both exist in Bullhorn.
Fountain
Notes
Bullhorn ATS & CRM
Candidate Note
1:1Fountain user-added notes on Applicants (hiring manager context, interview feedback) migrate as Bullhorn Note records on the Candidate. Note content, author, and timestamp transfer. Bullhorn Note records are linked via ContentDocumentLink to the Candidate. We preserve note ordering by timestamp for interview feedback and hiring manager commentary.
Fountain
Automated Workflows
Bullhorn ATS & CRM
Bullhorn Automation (manual rebuild required)
1:1Fountain's automation rules (auto-advancing candidates, email triggers, task creation per stage) are not accessible through the Fountain public API and cannot be migrated as code. We document every active Fountain workflow configuration during discovery: trigger type, conditions, stage transitions, email actions, and task assignments. This document is delivered to the customer as a Bullhorn Automation rebuild guide. The Bullhorn admin or a Bullhorn implementation partner rebuilds workflows in Bullhorn Automation post-migration. This is standard scope and is not included in migration execution.
Fountain
Hiring Source
Bullhorn ATS & CRM
bullhorn_hiring_source__c (custom field)
lossyFountain tracks hiring source attribution per Applicant (referral, job board, direct). We create a bullhorn_hiring_source__c custom field on the Bullhorn Candidate record and populate it from Fountain's source field during migration. This preserves sourcing analytics for the recruiting team in Bullhorn without relying on standard fields that do not map directly from Fountain.
| Fountain | Bullhorn ATS & CRM | Compatibility | |
|---|---|---|---|
| Applicant | Candidate1:1 | Fully supported | |
| Job Post | JobOrder1:1 | Fully supported | |
| Stage | Opportunity Stagelossy | Fully supported | |
| Location | ClientCorporation (address component)1:many | Fully supported | |
| Department | Department custom field or Business Sector1:1 | Fully supported | |
| Custom Attributes (editable) | Custom fields on Candidate and JobOrder1:1 | Fully supported | |
| Custom Attributes (readOnly) | Flagged for Bullhorn manual configurationlossy | Fully supported | |
| Document | Candidate attachment (ContentDocument)1:1 | Fully supported | |
| Offer | Placement (starting point)1:1 | Fully supported | |
| Notes | Candidate Note1:1 | Mapping required | |
| Automated Workflows | Bullhorn Automation (manual rebuild required)1:1 | Not supported | |
| Hiring Source | bullhorn_hiring_source__c (custom field)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.
Fountain gotchas
Automation rules not exportable via API
ReadOnly custom attributes block field migration
Rate limits undocumented for migration planning
Document storage requires separate export workflow
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 source audit
We audit Fountain across applicants (volume, stage distribution, custom attribute counts and readOnly flags), Jobs (open, paused, closed counts), pipeline stage configurations, Locations and Department hierarchies, document attachment volumes, offer records, and active workflow rules. We review the target Bullhorn edition (Team, Corporate, or Enterprise) and validate custom object and field capacity against Fountain's attribute schema. The discovery output is a written migration scope including object counts, field mapping matrices, readOnly attribute inventory, and Bullhorn edition recommendation if the current edition cannot accommodate Fountain's schema.
Bullhorn schema pre-creation
We pre-create Bullhorn custom fields (for Fountain's editable custom attributes), Custom Objects (if needed), and Record Types before any data migration. Bullhorn custom fields are created via the Custom Object Setup spreadsheet submitted to Bullhorn Support; Bullhorn reviews and enables them. We also configure Opportunity stages to match Fountain's pipeline stage names and sequence. Bullhorn schema pre-creation happens in a Sandbox or staging org for validation before production migration.
Sandbox migration and reconciliation
We run a full migration into a Bullhorn Sandbox (or partial copy if available) with production-like data volumes. The customer's Bullhorn admin reconciles record counts, spot-checks applicant profiles against Fountain source records, validates custom field values, and confirms document attachments are linked correctly. We run reconciliation reports for each object (Candidate count, JobOrder count, Stage mapping, Document attachment count) and correct any mapping errors before production migration begins.
Location-to-ClientCorporation strategy confirmation
Fountain Locations may represent either the customer's own hiring sites or client worksites. We confirm the intended mapping during discovery: if Locations represent client worksites, we create Bullhorn ClientCorporation records per Location and link JobOrders to them. If Locations represent internal offices, we attach address data as Candidate or JobOrder custom fields. Bullhorn requires ClientCorporation to exist before a JobOrder can reference it, so this step gates the JobOrder migration phase.
Production migration in dependency order
We run production migration in dependency order: ClientCorporations (if Locations map to worksites), then Candidates (from Fountain Applicants with fountain_applicant_id__c as audit key), then JobOrders (from Fountain Jobs linked to ClientCorporation), then Opportunity records linked to JobOrder (for stage history), then Offers (linked to Candidate and JobOrder), then Activity history (Notes as Bullhorn Note records), then Documents (as ContentDocument linked to Candidate). Each phase emits a reconciliation report before the next begins. readOnly custom attributes are excluded and documented for manual Bullhorn configuration.
Cutover, validation, and automation rebuild handoff
We freeze Fountain 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 Fountain Automation Rebuild Guide documenting every active workflow (trigger, conditions, actions, stage transitions) with Bullhorn Automation equivalents. We support a one-week hypercare window for reconciliation issues. We do not rebuild Fountain workflows as Bullhorn Automation inside migration scope; that is a separate engagement or internal admin task.
Platform deep dives
Fountain
Source
Strengths
Weaknesses
Bullhorn ATS & CRM
Destination
Strengths
Weaknesses
Complexity grading
Standard HRMS migration. All 7 core objects map 1:1 between Fountain and Bullhorn ATS & CRM.
Overall complexity
Standard migration
Derived from compatibility, mapping clarity, API constraints, and data volume across Fountain and Bullhorn ATS & CRM.
Object compatibility
All 7 core objects map 1:1 between Fountain 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
Fountain: Not publicly documented — Fountain does not publish specific per-minute or per-hour API limits.
Data volume sensitivity
Fountain 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 Fountain to Bullhorn ATS & CRM migration scoping. Not seeing yours? Book a call.
Walk through your Fountain 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 Fountain
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.