Skip to main content

Preparing a staff list

A good staff list saves more time than anything else in an engagement. This page covers what to ask the client for, how to check the file before we upload it, and what the Workbench does with each column. The upload itself is described in Uploading a staff list.

Start from the template

Download the staff list template (CSV). Its headings are all recognised automatically. The four sample rows are fictional, and one is a leaver so the row filter has something to do: delete them before filling it in.

What to ask for​

One row per person, with these columns. Only the job title is required; every other column unlocks more of the analysis.

ColumnNeedWhy we want it
Job titleRequiredEvery figure starts from it: each distinct title is classified to a standard occupation and a Workbench role.
Employee IDStrongly recommendedA stable key. It links reporting lines, lets us match the client's licence lists without names, and lets the client trace a row back. Without it we number rows by their spreadsheet row.
Manager's employee ID or manager's emailStrongly recommendedReporting lines: the organisation chart, spans and layers, roll-ups up every line, and rollout cohorts such as "the top three levels" or "everyone reporting into".
Business, division, sub-division, departmentStrongly recommendedThe rollups on the report (By business), filters in the Explorer, and rollout cohorts. Some title rules apply only within a named division.
Location and/or countryStrongly recommendedLocation salary factors and the offshore view.
FTEOptionalA fraction between 0 and 1 (blank counts as 1). It counts FTE saved person by person and never changes the cost: the salary is taken as the cost of the post. Hours such as 37.5 are not read as FTE; those people count as 1 and we say how many.
Extra groupingsOptionalUp to five more columns, such as an IFA firm or a region, to see where the savings land. They are chosen under Extra groupings when mapping columns. Groupings only: never names, identifiers (such as employee or payroll numbers), managers or advisers, emails or contact details, and not a column with a different value for almost everyone.
Base salaryOptionalThe client's own pay instead of national benchmark pay. Without it, each role is priced at the ONS ASHE median for its occupation.
Microsoft 365 tenantOptionalPer-tenant Copilot licence counts. We can derive tenants from work email domains instead.
Status (or contract type)OptionalLets us keep only the people in scope with the row filter, for example active, permanent staff.
Name and work emailOnly if neededNamed licence lists and matching the client's licensed-user export by email. See Names and emails.

Ask the client not to include anything else: home addresses, dates of birth, National Insurance numbers, diversity data, performance ratings. Columns we don't map are never sent anywhere, but the safest personal data is the data we never receive.

How headings are recognised​

When we choose the file, the Workbench guesses which column is which from the headings. Headings are compared ignoring case, with underscores and hyphens read as spaces. It tries exact matches first, then headings that contain one of the recognised words, and never uses one column for two fields. We can change any guess on the mapping step.

FieldRecognised headings
Employee IDUnique ID, Employee ID, Employee Number, Emp ID, Staff ID, Person ID, ID
Job title *Job Title, Title, Role, Position, Job
Business / root divisionBusiness, Company, Operating Company, Business Unit, Entity
DivisionDivision
Sub-divisionSub Division, Sub-division, Subdivision
DepartmentDepartment, Dept, Team
LocationWork Location, Location, Office, Site, City
CountryCountry
M365 tenantTenant, M365 Tenant, O365 Tenant
Base salary (GBP)Base Salary, Annual Salary, Salary, FTE Salary
FTEFTE, Full Time Equivalent, Full-time Equivalent, Contracted FTE
Manager's employee IDManager ID, Manager Employee ID, Line Manager ID, Reports To ID
Manager's emailManager Email, Line Manager Email, Reports To Email
NameName, Full Name, Employee Name
Work emailWork Email, Email, Email Address, E-mail

A heading containing "manager" is only ever used for the two manager fields, so Manager Name isn't taken for Name.

Check the guesses

"Contains" matching is generous. A Job Family column is taken as the job title if there's no better heading; a Personal Email column can be taken as the work email; a Team column becomes the department. Look down the mapping before going further, and set a field to unmapped if the guess is wrong.

When a later staff list in the same engagement has the same headings, the earlier mapping is reused automatically (We reused the column mapping from …).

Formats and limits​

File typesExcel (.xlsx) or CSV.
LayoutHeadings in the first row, one person per row below. Remove title rows, notes and merged heading cells above the headings. Blank rows are ignored.
Excel workbooksThe first worksheet is read. Put the staff list on the first sheet, or save that sheet on its own.
CSV filesComma-separated and UTF-8 (in Excel, CSV UTF-8 (Comma delimited)). Other encodings are refused with CSV files must use UTF-8 encoding.
File sizeUp to 20 MB. A workbook that expands beyond the safety limit when opened is refused: Remove unused sheets or save it as CSV.
ColumnsUp to 256.
PeopleUp to 50,000 in one staff list, after the row filter. A larger list is stopped with Too many people for one staff list: filter it (for example to active staff) or split it.

Cleaning the file​

One row per person​

The Workbench counts rows as people. A list with one row per position, assignment or contract counts some people twice. If an employee ID repeats, we keep every row but the organisation chart uses the first, and the check before upload says N rows repeat an employee ID.

Leavers, vacancies and contractors​

Rather than deleting rows by hand, keep a Status column (or contract type) and use Choose who to include at upload to keep, say, only Active. Rows filtered out are never sent.

The filter works on one column. If two conditions matter (active and permanent, say), combine them into one column in the file first, for example an Include column of Yes and No.

Vacant posts with no person attached usually belong outside the list: they'd be costed as people.

Consistent job titles​

Each distinct title is classified once, so tidy titles mean fewer to review:

  • Differences of case, repeated spaces and surrounding punctuation don't matter: Claims Handler, claims handler and Claims Handler – are matched as the same title for overrides and the shared cache.
  • Different spellings do matter: Snr Claims Handler and Senior Claims Handler are two titles. Agree any harmonisation with the client, and never merge genuinely different roles to save review time.
  • Grade codes, locations or team names inside the title (CH2 Claims Handler – Leeds) make otherwise identical titles distinct. A separate column for them is better.

Salaries​

  • Annual base salary in pounds. Values such as £42,500, 42500, 42.5k, 45.5k and 1.2m are understood, and so are 52.000 and 52.000,50.
  • Currency words and symbols are ignored, not converted: $60,000 is read as £60,000. Convert other currencies to pounds before uploading.
  • A salary outside £1,000 to £10m a year is treated as a data error: it's left out, that person is priced at the benchmark salary instead, and the check before upload says how many were affected. Hourly rates or codes in the salary column are the usual cause.
  • A blank salary simply uses the benchmark.
  • The benchmark salaries are full-time medians, so full-time-equivalent salaries compare most closely. Note which basis the client supplied.

A client-supplied salary is used as given: location factors apply to benchmark salaries only.

Reporting lines​

  • IDs are stored with every row, so they must be IDs: a column of email addresses, or one where most values are people's names, can't be mapped as Employee ID or Manager's employee ID. The mapping shows why, names the field the column belongs in (Work email, Manager's email or Name), and the upload button stays off until it's changed.
  • A manager's employee ID must match that manager's Employee ID exactly, and the manager must be in the list. Managers outside the list (or filtered out) leave the link unresolved; the check before upload counts them, and the Spans and layers report shows how far they could move the figures.
  • If we only have manager emails, the file also needs each person's work email, so the manager can be found. Emails are matched in the browser and never uploaded.
  • An email shared by several people (a team mailbox, say) can't identify a manager, so reporting lines through it are left unlinked rather than guessed: left unlinked: manager email shared by several people.

Locations​

  • A country column is matched exactly against each region's country values (for example GB or United Kingdom) and takes priority over location.
  • A free-text location (London, Remote - UK) is matched to a region by keyword.
  • After upload, check the location salary factors on the staff list's Assumptions tab.

Microsoft 365 tenants​

Licences are bought per tenant. Either supply a tenant column, or map the work email column and we derive each person's tenant from their mailbox domain, naming the twelve largest domains for us to rename or merge at upload.

Names and emails​

Names and work emails are personal data, and most of the analysis doesn't need them. We only need them for:

  • named licence lists in the Copilot allocation workbook; and
  • matching the client's licensed-user export (or a named cohort list) by email rather than employee ID.

If the client's lists carry employee IDs, ask for the staff list without names. If we do need them, only someone with PII access on the engagement can store them, by ticking Store names and emails, encrypted at upload. See Names, emails and personal data.

What never leaves the browser​

The workbook is read on our own machine. Only the mapped columns of the rows we keep are uploaded.

Never uploaded
Unmapped columnsWhatever else is in the file.
Rows removed by the row filterThey're dropped before upload.
Manager emailsTurned into reporting lines in the browser.
Work emails used for tenantsTurned into tenant names in the browser.
Names and work emailsUnless someone with PII access chooses to store them, and then they're encrypted.

The pill beside the upload button confirms the choice: No names or emails leave this browser or Names & emails will be encrypted.

Before uploading: a checklist​

  • Headings in the first row, staff list on the first sheet (or saved as UTF-8 CSV).
  • One row per person, with an employee ID.
  • A job title in every row (rows without one are skipped).
  • Manager IDs (or manager emails plus work emails) for reporting lines.
  • A status column if the file includes people out of scope.
  • Salaries annual, in pounds, or left blank.
  • No names or emails unless the work needs them.
  • No columns the client didn't need to send.

The template​

Download the staff list template (CSV). It has these headings, in this order, all recognised automatically:

Employee ID, Job Title, Manager Employee ID, Manager Email, Business, Division,
Sub-division, Department, Work Location, Country, M365 Tenant, Base Salary,
Name, Work Email, Status

Delete the columns the client won't supply, and the sample rows. If we don't need names, delete Name; if manager IDs are supplied, delete Manager Email too, and then Work Email unless we need it for tenants or licence matching.