Bringing in what you have
Import takes the spreadsheet you already keep and turns it into the register. Every column is accounted for, nothing is guessed, and the whole run can be reversed.
- For
- Import a CSV or Excel file and turn it into the register, with every column accounted for.
- Will not
- Nothing is written until you press Import. Ambiguous prices, costs and dates are left blank or flagged rather than guessed, because guessing would be wrong by a factor of a thousand.
- Writes
- Adds new assets and updates matched ones, plus suppliers and agreements; the undo is recorded as a change so the audit trail shows the import and its reversal.
What the sheet does
Import Assets is one sheet with four stages, and it tells you which one you are on. Nothing is written to the register until you press Import.
The stages are: choose a file, pick a sheet if the workbook has more than one, review the column mapping, and confirm anything the sheet turned out to hold besides devices. A fifth screen reports the result and offers Undo.
The whole analysis runs on the Mac. There is no AI in this path, which is deliberate: the same file resolves the same way every time, so a mapping you checked on Monday is the mapping you get on Friday.
Accepted types are CSV, tab-separated text, plain text and .xlsx. If the workbook has several tabs, you are asked which one holds your assets, with a row count beside each name so you can tell the data tab from the cover sheet.
Reviewing the mapping
Every column in your file appears in this list, including the ones Manifest does not recognise. Nothing is dropped.
Columns are matched on their values as well as their headers, so a column called Who full of names is recognised as an assignee rather than becoming a custom field. Anything that does not match a built-in becomes a typed custom field instead, with the type inferred from the values in the column.
The menu on each row offers three destinations: an Asset field from the built-in list, a Custom field of the inferred type, or Ignore this column. Built-in targets are unique, so assigning one to a column takes it away from whichever column held it before, and that column is demoted to a custom field rather than being left with no destination.
If two columns look like they could both be the same built-in field, a banner names them and says so. Pick one to keep the built-in field; the others import as custom fields. The choice is yours rather than the resolver’s.
What happens on a match
When a row in your file matches an asset you already have, the footer asks what to do about it.
The picker appears only when there is something to decide, and it offers Update existing or Leave unchanged. Beside it, the preview line reads out the split before you commit: how many rows are new, how many will update or be skipped, and how many are empty.
The button in the corner says Import when this is the last step, and Continue when a confirmation screen follows. It does not say Continue and then import anyway.
Suppliers and agreements hiding in the sheet
A contract repeated on sixty rows is one agreement, not sixty. The confirmation screen is where that gets settled.
The plan is read from the sheet’s own headers, so it is settled the moment a sheet is chosen. Changing a column’s mapping cannot alter it, and going back to the review step does not throw away answers to questions that are still the same questions.
Every name defaults to being created, so an operator who reads nothing and presses Import still gets a correct import. The only rows that ask for a decision are the ones where something in your workspace looks like it might already be the same record. Those are counted at the top, so the size of the job is visible before it is scrolled.
- Add as new creates the record. This is a real answer, not a fallback, and choosing it for a look-alike is fine.
- Use “name” links the incoming rows to a record you already have.
- A row with nothing to compare against says New plainly rather than showing a menu that wants something.
Each row also says what the name is doing in the sheet: Supplied 42 devices for a supplier, Covers 42 devices for an agreement. That is the number that tells you whether the decision matters.
A column that is becoming a contract is withdrawn from the device mapping, so it does not also become a custom field on every machine. Without that, Contract End would be filed as one agreement and copied onto all 120 devices, which is the duplication this screen exists to end. A column the resolver matched to a real asset field is left alone: a supplier belongs on the device as well as in the vendor list.
Reading the result
The last screen reports what landed, and it is honest about the parts that did not.
The headline reads Imported, added 118, updated 3 assets, or Nothing to import when there was nothing to do. If custom fields were created, they are named. If rows were skipped, the count is given.
Some outcomes are reported rather than fixed, because fixing them would mean guessing:
- Prices left empty. If your sheet does not say whether a comma means thousands or decimals, the figure is left blank and flagged. Guessing would be wrong by a factor of a thousand, and a blank you can fill in is better than a number you cannot trust.
- Agreements filed as Other. A contract whose kind the sheet did not state is filed as Other and flagged for review. Your sheet’s wording is kept on the record.
- Monthly costs left empty. The same ambiguity as prices, on the one figure an auditor reads.
- Currency assumed. If the sheet had no currency column, costs are filed as USD and the screen says so.
- Dates read one way. If every date in the file could be read either way, the screen says which order was used. If some rows put the day first and others the month, it says that too, and asks you to check any that look wrong.
- Agreements with no supplier. Surfaced, not patched. An invented “Unknown” supplier would show up in a purchasing report as a company somebody bought from.
If the devices imported but their suppliers and agreements did not, the screen says so in those words. The assets are real, and stopping at a success message would leave you believing the rest came with them.
Undoing an import
One button, on the result screen, while the session is still open.
Undo import removes the assets that were added and restores the ones that were updated. Suppliers and agreements filed in the same run are withdrawn with them, because they went into the same session. The confirmation screen after an undo reports the counts: how many added assets were removed, how many were restored, and how many suppliers and agreements were withdrawn.
The undo is itself recorded as a change to the register rather than erasing the session, so the audit trail shows that the import happened and that it was reversed.
Undoing soft-deletes what the import created, and the next import of the same file still sees those records when it looks for matches. That is deliberate: a second run would otherwise create a duplicate supplier beside the hidden one and split that supplier’s spend across two rows of every report after.
When the import fails part-way
The failure that matters is the one after some rows have already landed.
If the write fails part-way through, the error is shown on the stage you are on, not only on the first one. The spinner stops, the error stays visible, and the result screen is where you end up so the counts and Undo are in front of you.
A lapsed licence stops the import before it starts rather than halfway through a hundred and twenty rows. The check runs when you press Import, and the message is shown in the same place as any other error.
If the workspace cannot be read for comparison when the confirmation screen is being built, every name on it would look new. The screen says so at the top rather than offering to create duplicates of records that are sitting right there.