HR Software

How do we migrate from spreadsheets to an HRMS?

Decide which spreadsheet is authoritative for each field before exporting anything, clean the data while it is still in your hands, load in dependency order - people, then jobs, then balances, then history - run parallel against the old sheets, cut over at a period boundary, then lock the spreadsheets read-only. Migration exposes disagreements that were always there.

Which spreadsheet is right?

Answer that field by field, not file by file, because the honest answer is usually different for each. The payroll sheet may hold the correct salary while the HR master holds the correct designation and the attendance file holds the only accurate joining dates. Write a short table listing every field you intend to load, the file it will come from and the person who confirms it. That table becomes the specification for the whole migration and settles arguments later, when two numbers disagree and nobody remembers which source was chosen. Building a single [employee database](/employee-database-software) is the goal, but you cannot merge sources until you have decided which one wins for each column.

Why clean before you load rather than after?

Because cleaning inside a live system is slower, riskier and visible to everyone. In a spreadsheet you can sort, filter, compare columns and fix a hundred rows in one operation. In a system each correction is a transaction, possibly requiring an approval, possibly triggering a recalculation, and always leaving a trail that someone will later have to interpret. There is also a sequencing trap: load first and you will be cleaning while people are already transacting, so the data moves underneath you. Fix name formats, duplicate people, impossible dates, blank identifiers and inconsistent salary structures before anything is imported, and validate the file against the target format rather than against your own eye.

What does dependency order mean in practice?

Load in the order the system needs things to exist. Organisation structure, locations and legal entities come first, since a person cannot be assigned to a department that has not been created. People come next, with the identifiers everything else will reference. Jobs, grades, managers and pay structures follow, because they attach to a person. Balances and accruals come after that, since they belong to a policy that must already be configured. History comes last, if at all. Loading out of order produces orphaned records and forced re-imports, and a [core HR record](/hris) built on a broken first load is far harder to repair than to redo. Import into a test environment first, every time.

How much history should you bring across?

Enough to operate and to answer the questions you can reasonably expect, and no more. Current balances, employment status changes and salary history are usually worth carrying because they get queried. Old attendance detail, superseded policy versions and archived approvals rarely are, and each of them multiplies the cleansing work. A practical split is to load what a person or their manager might look up, and to retain the rest as exported files stored under your retention policy so it remains available without cluttering the system. Decide this early, because history scope quietly drives the size of the whole exercise and it is the easiest thing to over-order at the start.

How do you know the load actually worked?

Reconcile at three levels before anyone is allowed to transact. Counts first: people loaded against people expected, by department and by status, with the differences explained rather than accepted. Totals next: aggregate salary and total leave liability compared against the source. Then individual spot checks, deliberately choosing awkward cases - the person who changed grade mid-year, the one on unpaid leave, the transfer between entities, the rehire. Sign each level off with a name against it. Reconciliation done by the same person who prepared the file catches fewer errors than reconciliation done by someone who did not, which is a good reason to split those roles.

How do you retire the spreadsheets safely?

Freeze them rather than delete them. Once the system is live, move every source file to a read-only location with a dated name, tell people plainly that it is historical, and remove edit access from everyone including yourself. Files left editable get updated by someone acting in good faith, and within a couple of cycles you have two competing records again. Announce the change with the same seriousness as the go-live itself, because the sheets are habit and habits outlive announcements. Keep the archive accessible for the retention period you have committed to, since the migration table you built at the start is exactly what you will need if a historical figure is ever questioned.

Why does a migration start arguments?

Because it forces agreement on facts that were previously allowed to differ quietly. Two sheets held two joining dates and nobody had to reconcile them; the system accepts only one. A leave balance calculated one way by HR and another way by the team lead has to become a single number that someone will be paid on. A designation used in a report turns out never to have matched the one on the contract. None of these are created by the migration - they were always there, absorbed by human judgement each time they surfaced. Expect the conversations, schedule time for them, and treat the decisions as policy outcomes rather than data-entry problems.

Want Pitch N Hire to handle this for your team?

Related glossary terms

Related roles to hire

Choosing your recruiting stack

Next step

FAQ

Frequently asked questions

Can we migrate without cleaning first if the deadline is tight? +
You can, and you will pay for it during stabilisation instead, at a worse exchange rate. Errors loaded into a live system surface as individual complaints spread over cycles, each needing investigation. If time is genuinely short, reduce scope rather than skip cleaning - load fewer fields and less history, but load them correctly.
Who should own the migration internally? +
Someone from HR operations who knows the exceptions, supported by whoever maintains the current sheets. Handing it entirely to IT or to the vendor is the common mistake, because the hard questions are about your history rather than about file formats. The owner needs enough authority to settle which source wins for a disputed field without escalating every instance.
What do we do about employees who have left? +
Load them only if you need them in the system - for statutory reporting, historical headcount or rehire checks - and mark their status clearly so they never appear in active lists or notifications. Many organisations keep leavers as an archived export instead, which is simpler, provided the export is complete and stored under your retention policy.
Should we run the old sheets alongside for a while? +
For one full cycle as a controlled comparison, yes. Beyond that it becomes a shadow system that quietly wins, because it is familiar and requires nobody's permission. Set the end date before you start, tell everyone what it is, and hold to it unless the comparison actually fails - which is different from people finding the new system unfamiliar.
How do we handle a field the new system does not have? +
First check whether the field is genuinely needed or simply inherited, since spreadsheets accumulate columns nobody uses. If it matters, look for a custom field, then for a report you can derive it from. Resist recreating it in a side spreadsheet, because that is precisely how the arrangement you are leaving behind originally began.
Pitch N Hire ATS

See how this works in a real applicant tracking system

Pitch N Hire is an applicant tracking system built for recruiters and hiring teams. If this answer described something you want to run properly, the ATS is where it lives.

  • One pipeline for every role, applicant, and interview stage
  • Structured scorecards so the panel compares candidates on the same criteria
  • Careers page, job posting, and candidate communication in one place

Free for 1 user · No credit card · Talk to a real hiring expert

Built for recruiters & hiring teams

See how much faster your team could hire

Get a personalized walkthrough of Pitch N Hire on your own roles and workflow. No slides, no obligation.

Prefer to talk? Book a demo · Talk to sales · View pricing

Free 1-user plan · No credit card · Talk to a real hiring expert

One Hiring Infrastructure.
Zero Tool Chaos.

Demos are consultative. We respect privacy and enterprise
governance. No lock-ins.

Start free Book demo