Consulting and recruiting
Bullhorn data migration: steps, timeline and contract checks
By SourceX Editorial · Reviewed by Noah Loul ·
Short answer
A Bullhorn data migration runs in five stages: check the contract, export the full record through the API or a vendor-assisted extract, map fields, validate, and archive what you do not import. The timeline depends less on record counts than on custom fields, attachments and the contract notice window, so read the renewal and data return terms first.
Key takeaways
- Read the master agreement and every order form for the renewal notice window, data return terms and post-termination access before picking a cutover date.
- A list-view CSV is a flat table; the full record, with notes, attachments and links, needs an API-based or vendor-assisted extract.
- Status values, note types and custom fields hold most of a staffing firm's process knowledge and take the most mapping effort.
- Plan backwards from the contract end date, with two trial extracts and a final delta extract well before access ends.
- Keep a complete, owner-controlled archive of everything the new ATS does not import.
What does a Bullhorn data migration involve?#
A Bullhorn data migration moves a staffing firm's candidates, client contacts, companies, job orders, submissions, placements and activity history out of Bullhorn and into a new ATS or a standalone archive, with the links between them intact. The links are the hard part. A single placement ties a candidate to a job order, a client contact, pay and bill rates, and a trail of notes, calls and interviews.
Most firms do not import everything. Open jobs, active candidates and recent placements usually go into the new system, while older history goes into an archive the firm controls. Deciding that split early keeps mapping work focused and stops the project from stalling on records nobody will search day to day.
| Stage | What happens | What drives the effort |
|---|---|---|
| Contract check | Confirm notice dates, export rights, post-termination access and fees | How close the renewal date is and who must sign |
| Export | Pull every record type with IDs, history and attachments | Custom fields, attachment volume and API access |
| Field mapping | Match Bullhorn fields and status values to the new ATS | How far your desks customized Bullhorn |
| Validation | Compare counts, links and sample timelines | Data quality and duplicate candidates |
| Archive | Store unimported records in an owner-controlled format | Retention rules and who needs read access later |
Which Bullhorn contract terms should you check first?#
The Bullhorn contract terms that matter most are the renewal and notice dates, the data return or export language, and whether any access continues after the term ends. Read the master subscription agreement together with every order form, because order forms often carry the dates, user counts and add-on products that the main agreement does not.
Set the cutover date only after this review. A migration planned around the wrong renewal date forces either a rushed extract or an unplanned renewal, and neither is a good position from which to ask for export help. Have counsel read the data and termination sections alongside the operations lead.
- Term end date, auto-renewal language and the notice window for non-renewal.
- Data return or export language: the formats offered, whether attachments and files are covered, and any fee for assisted extraction.
- Any read-only or archive access after termination, and what it costs.
- Deletion of your data after the term, and whether the vendor will confirm it in writing.
- Separate contracts for third-party tools connected to Bullhorn, such as texting, onboarding, e-signature, back-office pay and bill, or VMS connectors, which may hold their own copies of candidate and placement data.
- Client and MSP agreements that restrict where candidate or program data may be stored or moved.
Export routes: list-view CSV, API extract or vendor-assisted extract#
The full Bullhorn record comes out through the API or a vendor-assisted extract, because a list-view CSV is a flat table of the columns on screen. A list export is useful for counts and spot checks, but it cannot carry attachments and usually leaves out full note history and the many-to-many links between candidates, jobs and submissions.
An API extract needs a developer or migration partner who can handle paging, limits and incremental pulls. Check Bullhorn's current API documentation and your contract for what your edition and access allow before scoping the work. Pull records in dependency order, so every link has something to point to, and keep the Bullhorn record ID on every row and every file.
- Reference data first: users, departments, status values, note types, picklists and custom field definitions.
- Companies and client contacts, with ownership and history.
- Candidates, including work history, education, skills and source.
- Job orders, then submissions and interviews linked to both candidates and jobs.
- Placements, with start and end dates, rates and every later change.
- Notes, tasks, appointments and email activity, each carrying the IDs of every record it touches.
- Attachments last, each indexed by the Bullhorn ID of the record it belongs to.
| Route | What you get | What it misses | Best use |
|---|---|---|---|
| List-view CSV export | The columns in a saved list, for the records in that list | Attachments, full note history and links between records | Counts, spot checks and quick lookups |
| API extract by your developer or a migration partner | Every record type your access allows, with IDs, dates and links | Anything the extract code does not request | The complete record for import and archive |
| Vendor-assisted extract | A bulk extract prepared under your contract | Whatever falls outside the vendor's stated scope and format | Firms without developer capacity, or as a cross-check |
| New ATS vendor's import service | Records the new system is built to load | History the new ATS has no place for | Moving active records, not building the archive |
Mapping Bullhorn records to a new ATS#
Mapping Bullhorn records to a new ATS decides whether the new system reflects how your desks actually work, so it deserves more attention than any other stage. Start with status values and note types: every submission and placement status needs a clear match, or pipeline history collapses into a few vague stages, and note types are what let anyone later tell a prescreen from a reference check.
Custom fields carry much of a firm's process knowledge, such as shift preferences, clearance levels, specialty codes or client-specific requirements. The label recruiters see in Bullhorn can differ from the field name in an API export, and labels often stopped matching real use long ago, so have each desk define its fields before anyone maps them.
| Bullhorn record | Links that must survive | Common loss |
|---|---|---|
| Candidates | Work history, education, skills, source and owner | Original owner replaced by whoever ran the import |
| Companies and contacts | Contact to company, ownership and activity | Departed contacts merged into current ones |
| Job orders | Company, contact, owner and status history | History reduced to the current status |
| Submissions | Candidate, job order and each status change with its date | Status steps collapsed into a few stages |
| Placements | Candidate, job order, contact, dates, rates and rate changes | Rate changes overwritten by the latest values |
| Notes and activities | Every record the note was attached to, plus its note type | Note kept on the candidate only, losing the job it discussed |
| Attachments | Parent record ID and document type | Files imported with no parent record |
How long does a Bullhorn migration take?#
A Bullhorn migration takes as long as its slowest dependency, which is usually the contract notice window, the custom field mapping or the attachment extract rather than the raw number of records. Two firms of similar size can face very different timelines because one kept Bullhorn close to standard and the other layered years of custom fields and workflows on top of it.
Plan backwards from the contract end date rather than forwards from kickoff, and never schedule cutover for the last day of access. The order of work below holds for most firms; the dates between steps depend on the factors in the table.
- Non-renewal notice sent, and acknowledged by the vendor, before the deadline in your order form.
- First trial extract of every record type and attachment, used to build and test the field map.
- Test import of one pilot desk, followed by fixes to mapping and duplicate rules.
- Second trial extract and full test import, to prove the fixes.
- Data freeze, final delta extract and cutover, with access to spare.
- Validation sign-off and an archive check while Bullhorn can still be opened.
| Factor | Shortens the project | Lengthens the project |
|---|---|---|
| Custom fields | Few custom fields with clear definitions | Many reused or unlabeled custom fields |
| Attachments | Files already indexed to records | Large file stores with no index |
| Integrations | Few connected products | Job boards, VMS connectors and e-signature tools to rewire |
| Data quality | Duplicates merged regularly | Years of duplicate candidates and stale contacts |
| Decisions | One owner who can approve mapping choices | Mapping questions waiting on several desk heads |
| Contract | Notice window and export help confirmed early | Export rights discovered late in the term |
Validating the import before Bullhorn access ends#
Validation confirms that the new ATS holds the same records, links and history as Bullhorn, and it has to finish while you can still open Bullhorn to compare. General counts and sign-off matter, but the checks below target the places where Bullhorn histories most often break.
- Counts per record type in the extract match Bullhorn's own totals for the same filters, including any archived or deleted records you chose to keep.
- A note logged against both a candidate and a job order appears on both records in the new ATS.
- Placements with rate or date changes show the full sequence, not only the latest values.
- Submission status histories keep their dates, so time-to-submit and time-to-fill can still be calculated.
- Records owned by departed recruiters still show their original owner.
- Resumes and signed documents open and sit on the right candidate or placement.
- Each desk head confirms their own records in writing before the account is closed.
Illustrative: a staffing firm moves off Bullhorn without losing its history#
Illustrative: a fictional regional staffing firm runs light industrial and IT desks on Bullhorn and decides to move to a new ATS. The operations lead reads the order forms first and finds that the non-renewal notice window closes earlier than the team assumed, so cutover moves to a date that leaves room for a second extract.
During mapping, the IT desk explains that a custom field labeled for shift preference has held security clearance levels for years, so it maps to a clearance field instead. The firm imports open job orders, active candidates and recent placements. Older submissions, interview feedback and closed placements go into a read-only archive indexed by record ID, and when a client audit later asks about an old placement, the archive answers it without reopening a Bullhorn account.
How SourceX looks at an archived Bullhorn history#
SourceX looks at an archived Bullhorn history as a record of recruiting coordination: job orders, submissions, client feedback, interviews and placement outcomes, linked in sequence. Candidate personal data is the sensitive part, so preparation removes names, contact details and other identifying details, and resumes are often excluded entirely.
A review runs through the SourceX five-step transaction of Supply, Rights, Preparation, Approval and Delivery, and it starts from a description of the archive alone: which system, which record types and how many years. The firm approves every step, and a SourceX Evidence Packet for each package covers provenance, licensing rights, permitted use, the privacy record and release authorization.
Frequently asked questions
Can we keep read-only access to Bullhorn after we switch?
Sometimes, but do not plan around it. Whether a reduced or archive license is available depends on your contract and the vendor's current offers, so ask in writing before you give notice. Keeping your own complete archive removes the dependency and gives you records you control for audits and disputes.
Should we migrate every candidate record?
Usually not. Candidates with no activity for a long time may already be due for review or deletion under your retention policy, and importing them adds cost and privacy exposure. Decide which records move, which go to an archive and which are deleted, then apply the same rule across every desk.
Who owns the data in our Bullhorn account?
Generally the vendor owns the software and your firm controls the records you entered, but the subscription agreement sets the exact terms. Candidate records also carry privacy obligations, and client or MSP agreements may limit how program data is used or moved. Counsel should confirm both before you migrate or reuse anything.
Do candidates need to be told when their data moves to a new ATS?
It depends on where candidates live and what your privacy notice says. Moving records to a new service provider for the same recruiting purpose is often handled through updated notices and processor agreements, but laws such as the GDPR and state privacy laws may apply differently. Check with privacy counsel before cutover.
What should we do with Bullhorn data we do not import?
Put it in an archive your firm controls, in open formats with record IDs and an index, and apply your retention schedule to it. Records past their retention period should be deleted or reviewed rather than kept by default. Never leave the only copy inside an account that is about to expire.
Related resources
See if your company qualifies
A short company assessment. No data uploads are needed.