Phase 0
Decide & Plan
Lock scope, ownership, and constraints before any export job runs.
-
Risk if skipped: Mid-project entity additions force re-running mapping, sandbox tests, and the entire load-order sequence from the start.
-
Risk if skipped: A mapping that depends on Custom Objects that the edition does not support forces a last-minute redesign or an unplanned tier upgrade.
-
Risk if skipped: Without a cut-off, the export expands into a multi-year dump that no one budgeted for transforming.
-
Risk if skipped: Legal blocks the import on go-live day when candidate consent or retention review was not completed earlier.
-
Risk if skipped: A cutover during a placement push forces recruiters to log activity in two systems and reconciliation breaks.
Phase 1
Pre-Migration Prep
Source-system cleansing and destination-tenant configuration before any export.
1a. Source-system audit and cleansing
-
Risk if skipped: Duplicate source rows merge into a single Candidate and historical JobSubmissions attach to the wrong person.
-
Risk if skipped: Pipeline reports double-count revenue across split company records.
-
Risk if skipped: Required-field rejections show up mid-import and stop the load until manual triage.
-
Risk if skipped: Orphan rows fail the relationship load and force a stop-and-fix cycle inside the cutover window.
-
Risk if skipped: Without a baseline, post-migration validation cannot prove completeness.
1b. Destination-tenant setup
-
Risk if skipped: Sandbox results that do not reflect production schema mislead the go/no-go decision.
-
Risk if skipped: Records load owned by the migration service account and ownership reports break until manually reassigned.
-
Risk if skipped: Datetime values silently shift by hours and audit-trail timestamps no longer match the source.
-
Risk if skipped: The Custom Object provisioning lead time blows the cutover window because the ticket sat unfiled.
-
Risk if skipped: Custom data lands in nothing and is not discoverable until users complain weeks later.
-
Risk if skipped: An incorrect edit type forces field deletion and re-creation, which loses any data already imported.
-
Risk if skipped: Mid-import picklist rejections halt the load until each new value is added by an admin.
-
Risk if skipped: Migrated records trigger candidate emails, automation drip campaigns, or VMS resubmissions on day one.
-
Risk if skipped: Parser overwrites carefully-mapped fields the first time a recruiter opens a record.
1c. People prep
Phase 2
Source Export
Pull every byte you will need, in a form you can transform — including the things you forgot.
-
Risk if skipped: Resumes without a parent ID become orphan files that cannot re-attach in Bullhorn.
-
Risk if skipped: Without both parent IDs, the pipeline rebuild collapses and reports cannot show placement history.
-
Risk if skipped: Missing user mappings push every record into a single migration account and ownership reports become useless.
-
Risk if skipped: Files above 20 MB silently fail and the missing-document list surfaces only after recruiters look for them.
Phase 3
Transform & Map
Reshape source files into Bullhorn-shaped CSVs with every relationship, picklist, and datetime resolved.
3a. Mapping spreadsheet
-
Risk if skipped: Without one source of truth, mapping decisions drift between engineers and the final load disagrees with the design.
-
Risk if skipped: Without an upsert key, re-runs duplicate rows instead of updating them.
-
Risk if skipped: Field Mappings rejects non-listed picklist values and the row fails the load mid-job.
3b. Data transformation
-
Risk if skipped: Activities appear hours earlier or later than the source and audit reconciliation fails.
-
Risk if skipped: Mojibake on candidate names blocks search and forces a per-row re-load.
-
Risk if skipped: Right-truncation errors halt the import partway and the failed rows must be patched and re-run.
-
Risk if skipped: Notes import as garbled HTML and recruiters spend weeks re-formatting by hand.
-
Risk if skipped: Misparsed delimiters shift columns and silently corrupt every downstream row.
3c. Relationship and audit-trail decisions
-
Risk if skipped: Loading out of order produces orphan rows that the next stage cannot resolve.
-
Risk if skipped: Tenure, time-to-fill, and source-of-hire reports show every record as 'created today' until the custom field is rebuilt.
3d. ATS-specific transforms
-
Risk if skipped: Parser-driven imports overwrite cleanly mapped Candidate fields with whatever the resume happens to contain.
-
Risk if skipped: Pipeline reports collapse because submissions and placements lose their JobOrder parent.
-
Risk if skipped: Marketing attribution reports cannot answer 'which channel placed which candidate' because every row reads 'Other'.
-
Risk if skipped: EEOC reports run on populated fields with inconsistent values and the OFCCP audit trail breaks.
-
Risk if skipped: Time-in-stage and recruiter-velocity reports cannot be reproduced after the cutover.
-
Risk if skipped: Activity feed shows every historical note timestamped at the import moment.
-
Risk if skipped: Header mismatch causes Data Loader to silently skip columns and the data lands in nothing.
Phase 4
Sandbox Test Migration
Catch every problem in the sandbox before it costs you in production.
-
Risk if skipped: Skipping the sample run means every defect surfaces during cutover instead of during a low-stakes test.
-
Risk if skipped: Broken chains discovered in production force a stop-and-rebuild during the cutover window.
-
Risk if skipped: Late-evening activities silently land on the wrong day after the timezone shift.
-
Risk if skipped: A panicked double-click during cutover doubles the loaded data and a mass-delete-and-restart eats the day.
Phase 5
Production Cutover
Execute the load in a tightly sequenced window with capture, checkpoint, and reversibility at every step.
-
Risk if skipped: Late source-side writes never make it to Bullhorn and surface as missing data weeks later.
-
Risk if skipped: Migrated records trigger candidate emails or automation drip campaigns the moment they land.
-
Risk if skipped: Parser auto-runs and overwrites freshly-loaded structured Candidate fields.
-
Risk if skipped: Orphan submissions or placements break pipeline reports and require per-row patching.
-
Risk if skipped: Oversized files silently fail and the missing-document list surfaces only after recruiters look for them.
-
Risk if skipped: Quietly dropped rows accumulate and undermine the final reconciliation.
Phase 6
Validate
Prove the migration was correct before letting users into Bullhorn.
6a. Reconciliation
-
Risk if skipped: An unreconciled delta becomes silent data loss after the source is decommissioned.
6b. Relationship validation
-
Risk if skipped: Broken chains discovered after the source is read-only force a manual rebuild from screenshots.
6c. Audit and compliance
-
Risk if skipped: An OFCCP audit finds a distribution mismatch and the migrated EEOC data must be re-loaded.
6d. User-acceptance check
6e. Sign-off
Phase 7
Post-Migration Cleanup
Close out so the team can move on and Bullhorn becomes the single source of truth.
Watch list
Risks to track throughout
These risks live across multiple phases — keep an eye on them from kickoff through cutover.
-
Eastern Time storage shifts every datetime in your data
Bullhorn stores every dateTime field server-side in Eastern Time. Source data captured in any other timezone shifts by hours when loaded naively, and late-evening activities cross day boundaries. Track this across Phase 1 (document the offset from every source timezone), Phase 3 (apply the conversion in transform, not at load), Phase 4 (test edge-of-day activities in the sandbox), and Phase 6 (sample 25 activities across timezones for date accuracy).
-
Custom Import duplicates everything on a double click
On step 7 of the Custom Import wizard, clicking Next more than once creates a second copy of every record that just imported. There is no in-tool undo; recovery is a mass-delete-and-restart. Track this across Phase 1 (write the rule into the runbook), Phase 4 (rehearse the click sequence in the sandbox), and Phase 5 (have two people present for every wizard-driven cutover load).
-
Custom Object provisioning is a support-ticket bottleneck
Custom Objects must be created by Bullhorn Support before they accept any data, and the edition's tier caps them at 10/2/0 searchable Custom Objects per entity. Late-discovered need for a Custom Object can delay the cutover by days. Track this in Phase 0 (confirm the edition's tier), Phase 1 (file the support ticket the week prep starts), and Phase 3 (have a fallback plan that folds the data into existing custom fields if the ticket stalls).
-
Resume Parser overwrites compound during cutover
The Resume Parser overwrites Candidate fields on re-parse. A cutover that does not stage the Candidate load with the parser disabled can lose the carefully-mapped structured data the team spent weeks building. Track this across Phase 1 (confirm parser settings), Phase 3 (sequence the Candidate-then-resume load), and Phase 5 (re-confirm parser state before the Candidate load begins).
Pair this with the long-form guide
The complete Bullhorn ATS & CRM migration guide
Same research, written as prose: data model, import mechanisms, mapping strategy, pitfalls, and partner landscape.
