Skip to content
Surhires

Migration

In build

Bring your database across, properly

Every recruitment software evaluation ends at the same question, and it is never about features. It is whether fifteen years of database survives the move.

Generic CSV and Excel import with a column-mapping wizard and in-batch duplicate detection is in build for the Wave 1 release. A migration off an established incumbent is run as a paid, founder-led concierge project rather than sold as a one-click importer, because real migrations rarely survive a generic one.

By Surhires Editorial · Published · Reviewed

In the product: generic CSV and Excel import with a column-mapping wizard and in-batch duplicate detection is in build for Wave 1

The import wizard being built

The generic importer is in build for Wave 1. It takes a CSV or an Excel file, shows you the columns it found, and lets you map each one to a field on the candidate, client or job record, including custom fields you have already created. Mappings are saved, so a recurring import from the same source is configured once.

Duplicate detection runs inside the batch as well as against the existing database. That distinction matters: most importers check each incoming row against what is already stored and cheerfully load two copies of the same person if both are in the file, which is precisely what happens when a spreadsheet has been maintained by four people. In-batch detection catches those before they land.

  • Column mapping to standard and custom fields, with the mapping saved for reuse
  • Duplicate detection within the batch as well as against the existing database
  • A preview of what will be created, updated and skipped before anything is written
  • Row-level error reporting, so a bad file fails per row rather than as a whole
  • Dry-run mode that reports the outcome without writing a record

Why a real migration is not an import

Moving a working agency database off an established system is a different problem from loading a spreadsheet. A mature Bullhorn or Vincere tenant holds custom fields nobody documented, attachments hanging off records in several places, ownership and desk assignments that determine commission, consent history that legally has to survive the move, years of activity records, and placements with rates, splits and guarantee terms attached.

A generic importer handles the first ten percent of that: names, emails, phone numbers, titles. It fails on exactly the accounts worth migrating, because the value of a fifteen-year-old database is not in the contact rows. It is in the relationships, the history and the attachments, and those are the parts a column mapper cannot infer.

The failure is quiet, which is what makes it dangerous. The import reports success, the row count looks right, and six weeks later somebody discovers that the notes are gone and every record is owned by the person who ran the import.

So we run migrations as a paid concierge project

A migration off an established incumbent is scoped and run as a paid, founder-led project. Someone from our side looks at your actual export, maps the custom fields with you, decides with you what is worth bringing and what should be left behind, runs a test migration into a sandbox tenant, and gives you a reconciliation before anything touches your live data.

It is paid because it takes real work and because free migrations are done badly by whoever has a spare afternoon. It is founder-led because the person doing it needs to be able to make judgement calls about your data and be accountable for them. We would rather charge for it and get it right than include it as a checkbox and hand you a broken database on day one.

What a migration scope actually covers

The parts that need deciding, one by one: candidates and their custom fields; clients, contacts and the relationships between them; jobs and requisitions, open and historic; attachments including resumes, right-to-work documents and signed agreements; record ownership and desk assignment; consent basis and its capture date; activity and note history, and how far back it is worth carrying; and placements with their fees, splits and guarantee terms.

Each of those is a decision rather than a default. Carrying twelve years of activity history costs something and is sometimes not worth it; consent history is almost never optional; ownership almost always needs correcting during the move rather than after. A scoping conversation is where those decisions get made deliberately instead of by whatever the exporter happened to include.

Test, reconcile, then cut over

Every migration runs into a sandbox tenant first. You get counts by object, a sample of records to inspect against the source system, a list of what was skipped and why, and a written reconciliation. Nothing goes into your live tenant until you have looked at the test and agreed it is right.

Cut-over is planned rather than assumed. There is usually a delta load for the records that changed while the migration ran, a agreed period of parallel running, and a point at which the old system becomes read-only rather than being switched off. Agencies that skip the parallel period are the ones who discover a missing field during a live client conversation.

What you should ask any vendor about migration

Four questions separate a real migration capability from a marketing claim. Does the attachment history come across, or only the latest resume? Does record ownership survive, or does everything arrive owned by the admin who ran it? Does consent basis and its capture date come across, or is your compliance position quietly reset? And is there a test run into a sandbox with a reconciliation you can check before anything is written to live?

Ask us those questions too. The honest answer to the first three is that it depends on what your current system will export and what you decide is worth bringing, which is why the conversation happens before the money rather than after the migration.

What you get

CSV and Excel import

Generic file import for candidates, clients and jobs, in build for the Wave 1 release.

Column-mapping wizard

Map each source column to a standard or custom field, with the mapping saved for reuse.

In-batch deduplication

Duplicates inside the file are caught, not just duplicates against what is already stored.

Dry-run preview

See what would be created, updated and skipped before a single record is written.

Row-level errors

A malformed row is reported and skipped rather than failing the entire import.

Custom field targets

Import into the typed custom fields your desk already uses, not just the standard set.

Concierge migration

A paid, founder-led project for moving off an established system, scoped before it is priced.

Sandbox test run

Every migration lands in a sandbox tenant first, with counts and samples to inspect.

Written reconciliation

Object counts, skipped records and the reason for each, delivered before the live load.

Attachment handling

Resumes, documents and signed agreements scoped explicitly rather than assumed to come across.

Ownership preservation

Desk and recruiter ownership mapped deliberately, not reset to whoever ran the import.

Consent history carried

Consent basis and its capture date migrated, so your compliance position is not quietly reset.

Questions recruiters ask

Can we import our spreadsheet today?

The generic CSV and Excel importer with column mapping and in-batch duplicate detection is in build for Wave 1, so not yet through a self-service wizard. Data loads during onboarding are currently handled with our help. When the importer ships, a straightforward spreadsheet becomes a job you can run yourself in a few minutes.

Why do you charge for migration?

Because doing it properly takes real work, and because free migrations get done by whoever has an afternoon spare. A paid, founder-led project means someone is accountable for the judgement calls about your custom fields, your ownership mapping and your consent history. We would rather charge and get it right than include it and hand you a broken database.

Why not just build a one-click Bullhorn importer?

Because it would fail on exactly the accounts worth migrating. A mature tenant holds undocumented custom fields, attachments in several places, ownership that drives commission, consent history, years of activity and placements with splits and guarantee terms. A generic importer moves names and emails, reports success, and leaves the valuable part behind.

What happens to our attachments?

It depends on what your current system exports and what you decide is worth carrying, which is why attachments are an explicit line in the scoping conversation rather than an assumption. Resumes, right-to-work documents and signed agreements are usually worth bringing. Fifteen years of formatted CV variants for the same person usually are not.

Will we lose our consent records?

Not if the migration is scoped properly. Consent basis and the date and channel it was captured through are carried across, because a database whose consent history was reset by a migration is a compliance problem you created on day one. If your current system cannot export it, that is something to discover during scoping rather than afterwards.

How long does a migration take?

It depends entirely on the size and the state of the source data, so we scope before quoting a timeline rather than publishing a number that would be wrong for most people. What is fixed is the sequence: scope, test run into a sandbox, reconciliation you check, delta load, then cut-over with a period of parallel running.

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.