Migration
Getting your data out of Bullhorn intact
What actually moves, what quietly does not, and how to run the cutover without losing a week of billing or a decade of candidate history.
A Bullhorn migration succeeds or fails on reconciliation. Inventory every object and attachment count before exporting, accept that notes, activity streams, email associations and consent history rarely transfer with full fidelity, test-load a representative slice, reconcile field by field, and cut over on a date fixed around your billing cycle.
By Surhires Editorial · Published · Reviewed
Inventory before you export anything
The single most common migration failure is that nobody counted. Records arrive in the new system, they look plausible, work continues, and eleven months later somebody discovers that attachments before a certain date never came across. By then the source system has been cancelled.
Start by producing a census. How many candidates, contacts, companies, jobs, submittals, placements and activities exist. How many attachments in total and how many megabytes. How many notes, and how many of those notes are attached to records whose owner has left the firm. What the oldest record is and what the newest is.
Then sample the extremes rather than the average. Open the candidate with the most notes, the placement with the most attachments, the client with the longest history. Those records will break the migration if anything will, and they are the ones you should reconcile most carefully afterwards.
- Record counts per object type, taken on a stated date and saved
- Attachment count and total size, plus the largest single file
- Note counts, and how many carry an author who has left
- Custom fields, with what each one actually means to the desk today
- Users, including inactive ones whose names appear as record owners
What moves cleanly and what does not
Structured records move well. Candidates, contacts, companies and jobs with standard fields transfer with high fidelity, because both systems model them similarly. Custom fields move if somebody maps them by hand, which is slower than it sounds because half of them will turn out to mean something different from their label.
Notes are the first thing to degrade. The text usually arrives; the authorship and the original timestamp frequently do not, or arrive as a single import user with today's date. That is the metadata that makes a note evidential rather than anecdotal, so decide in advance whether you will prefix each note with its original author and date in the body text as a preservation measure.
Attachments are the second. They are stored separately, they are large, and export tooling often has limits that produce partial transfers with no error. Activity streams, email associations and consent history are the third: they are commonly not exportable in any usable structure, because they were never separate objects in the same way in both systems.
Ownership, placements and submittals need decisions, not defaults
Record ownership drives commission, visibility and reporting, and it is where migrations quietly change the business. If a departed recruiter owns four thousand candidates, importing that ownership faithfully recreates a dead desk in a new system. Reassigning them all to one manager creates a different distortion. Decide the rule explicitly, write it down, and tell the desk before go-live rather than after somebody notices.
Placements carry financial history: fee, rate, start date, end date, guarantee window, extensions, rebate obligations. Migrate the ones still commercially live with full fidelity, because those are the records a dispute will turn on. Historical closed placements can often move as a flatter summary, which is a legitimate trade if it is a decision rather than an accident.
Submittals matter more than firms expect. They are what your conversion reporting is computed from, so if they do not come across, your new system starts with no history and every ratio reads as new for a year.
Consent history is the item people forget
Under UK and EU rules, and increasingly under US state law, the lawful basis for holding a candidate record is part of the record. If consent history does not migrate, you arrive in the new system holding personal data with no recorded reason for holding it.
There are three defensible responses and they are all decisions you make with your own counsel, not choices a vendor can make for you. Re-permission through a campaign before or shortly after migration. Carry the records under a basis your advisers agree applies, with the reasoning documented. Or do not migrate the records at all, which for a database with a long dormant tail is often both the cheapest and the cleanest option.
What you should not do is import everything silently. The obligation travels with the data, and a migration is the one moment where a firm can see the whole database at once and act on it.
Duplicates are best resolved during the load
Most long-lived databases contain the same person several times: sourced by two recruiters, applied twice under different email addresses, imported once from a job board. Migration is the natural point to fix that, because you are touching every record anyway.
Deduplicate on the way in rather than afterwards. That means agreeing a match rule before the test load, deciding which record wins a conflict and on what basis, and deciding what happens to the losing record's notes and attachments. Merging should preserve both histories rather than discarding the loser, because the discarded record is the one with the note explaining why the client rejected them.
Expect a manual review queue. An automatic rule will handle the clear cases and should refuse the ambiguous ones. A migration that silently merges two different people with the same name creates a problem far worse than the duplicate it removed.
Contract, notice period and timing
Read your agreement before you start, specifically the notice period, the auto-renewal date and the data-retrieval window after termination. Firms routinely discover that notice had to be given ninety days before a renewal that has now passed, which means paying for another year alongside the new system.
Ask what your export entitlement actually includes, in writing, and whether it is self-service or a chargeable service request. Ask how long the data remains retrievable after the contract ends. Then take your export earlier than feels necessary and keep it, because retrieval gets harder once you are a former customer.
Time the cutover around the billing cycle rather than the calendar. Cut over just after a pay or invoice run, not in the middle of one, and avoid the week a large client's process peaks.
- Confirm notice period and auto-renewal date in the signed agreement
- Get the export entitlement and its cost in writing before giving notice
- Take and retain a full export while you are still an active customer
- Cut over immediately after a billing or pay run, never during one
- Keep the legacy system read-only for a defined window, then archive it
Running the cutover without losing a week
The pattern that works is a test load, a reconciliation, a fix cycle, then a final delta load over a weekend. The test load uses a representative slice, not the easy records. Reconciliation compares counts and spot-checks the extreme records you identified in the inventory. The fix cycle addresses what the reconciliation found, and it usually takes two rounds.
During the final load, freeze writes in the old system. Any record created during the freeze goes into a short manual list to be re-entered afterwards, which is far cheaper than trying to reconcile a moving source. Publish the freeze window in advance so the desk plans around it.
On the first working day, the priority is not training, it is confidence. Have someone available to answer where is my candidate, and have the reconciliation counts ready to show. A desk that believes its data arrived will use the system; one that suspects data is missing will keep a private spreadsheet, and that habit is very hard to reverse.
Why our first migrations are hands-on rather than one-click
Everything above is why Surhires runs early Bullhorn migrations as paid, founder-led concierge projects rather than shipping an importer button. A generic importer handles standard fields and then produces a result that looks finished, which is the most dangerous possible outcome. The parts that need judgement are custom-field meaning, ownership rules, duplicate conflicts, consent basis and what to do with orphaned notes.
The migration feature page explains the scope, what is included and what is not. It is deliberately a service today rather than a self-service tool, and it is described that way rather than as automation that does not exist yet.
If you are evaluating and want to know whether your specific data shape will move, the useful first step is the inventory in the first section of this page. It is worth producing whichever system you end up choosing.
What you get
Pre-export census
Record, attachment and note counts captured on a stated date before anything is exported.
Extreme-record sampling
The most-noted candidate and the largest attachment set as your reconciliation canaries.
Object-by-object fidelity
Which objects transfer cleanly and which lose metadata, stated plainly.
Note authorship handling
Preserving original author and date in note bodies when the fields will not carry.
Attachment verification
Counting and sizing files on both sides, because partial transfers fail silently.
Ownership rules
Deciding what happens to records owned by departed recruiters before go-live.
Placement fidelity tiers
Full fidelity for commercially live placements, summary form for closed history.
Submittal history
Why losing submittals resets every conversion ratio you report on.
Consent basis decisions
Re-permission, documented basis, or deliberate non-migration of a dormant tail.
Deduplication on load
Agreed match rules, conflict winners, merged histories and a manual review queue.
Contract and notice
Notice periods, auto-renewal dates, export entitlement and post-termination retrieval.
Cutover sequencing
Test load, reconcile, fix, delta load over a weekend with a published write freeze.
First-day confidence
Showing reconciliation counts so the desk does not start a private spreadsheet.
Concierge scope
Why the first Surhires migrations are hands-on projects rather than an import button.
Questions recruiters ask
Can you migrate everything from Bullhorn?
No, and any vendor saying yes is describing standard fields. Structured records move well. Note authorship, attachment completeness, activity streams, email associations and consent history are the areas that degrade, and they degrade differently depending on your configuration and export entitlement. That is why the inventory and reconciliation steps exist rather than being optional extras.
How long does a migration take?
The technical load is short. The project is not, because it is mostly decisions: field meanings, ownership rules, duplicate conflicts and what to do about consent. For an established database expect several weeks between the first inventory and a confident cutover, with two rounds of reconciliation and fixes in the middle.
Do we have to give notice before migrating?
Check your agreement, because that answer is contractual rather than technical. What matters practically is that you take and keep a full export while you are still an active customer with full access. Giving notice first and then discovering the export is a chargeable service request is a common and avoidable sequencing error.
What happens to records with no consent basis?
That is a decision for you and your legal advisers, not for us. The realistic options are re-permissioning, carrying them under a basis your counsel agrees applies with the reasoning documented, or not migrating them. We can support consent capture on records going forward, but we cannot retrospectively create a basis that was never recorded.
Is the migration free if we sign up?
No. Early migrations are paid, founder-led projects with a defined scope, because doing them properly takes real hours of judgement rather than running a script. Bullhorn migration assistance is included in the scope of the Enterprise plan; for other plans it is quoted separately against your inventory.
Will there be an automated importer later?
That is the intention, and it is on the roadmap rather than shipping. The concierge projects exist partly to learn what the importer would need to handle, because the hard cases are custom fields and merge conflicts rather than the file format. It is described as planned here and it will be described as shipping when it ships.
Keep reading
- Move off Bullhorn without losing the history that makes the database worth moving
- Recruitment software that is not gated behind the top tier
- Working out whether to leave Bullhorn, and what the alternatives really cost you
- Bring your database across, properly
- Stop paying twice for the same candidate
- Buying an ATS for an agency, start to finish
See it against your own reqs
Bring one live role and three resumes. In twenty minutes you will see the match scores, the shortlist and the placement invoice that comes out the other end.