Sample cleanup delivery
What an ERP export cleanup delivers
Invented data only: this 40-row Business Central-style item master shows the original file, confirmed rules, every logged edit, unresolved exceptions and an independent QA check.
By Dan K., CPIM, DDMRP certified · Updated October 20, 2026
Drafted with AI assistance; every worked example is recomputed in code before publishing.
This is an actual run of the delivery toolkit, not a manually prepared before/after example. All names, suppliers and descriptions are fictional. The original stays untouched. The cleaned review file keeps unresolved values so you can inspect them; the separate cleared-only file holds back every row with an exception.
What was sent and what came back
One item-master export with item number, description, base unit, inventory, unit cost, lead-time text, outstanding quantity and vendor name. It includes formatting drift, damaged IDs, blanks and a report total. There is no monthly usage or inventory-health assessment in this cleanup scope; see the sample inventory checkup report for that service.
Row accounting from the generated files
| Measure | Count |
|---|---|
| Input rows (excluding the header) | 40 |
| Rows cleaned and cleared | 30 |
| Rows held with exceptions | 10 |
| Individual exception entries (one row can have several) | 12 |
| Rows in the full cleaned review file | 40 |
| Rows removed by the cleanup toolkit | 0 |
| Logged cell edits | 111 |
40 input rows = 30 cleaned and cleared + 10 rows in exceptions. These groups are disjoint. The review CSV retains all 40 rows, including the total and conflicting duplicates; the cleared-only CSV contains 30. Held rows may still have approved formatting edits, all in the log.
The rules a client would confirm
These are the explicit approvals for this invented export, recorded in the downloadable rules file. They are not defaults to apply to other exports.
- Six transformations are agreed for this sample; confirm scope and price before work starts.
- The semicolon export is UTF-8 with a BOM; its first row is the header.
- Trim only surrounding whitespace. Item identifiers are case-insensitive and should be uppercase.
- EA, each and Each all mean one each here. No pack-size conversions are approved.
- Unit Cost uses European notation and two decimal places. Currency is not inferred.
- Inventory notation is mixed: normalize only unambiguous numbers to two decimals; flag 1,234.
- Only identical duplicates may be removed. Conflicting duplicate rows must both be held.
- Valid identifiers are six digits beginning 000 or FX- plus three digits. Do not reconstruct lost zeros or scientific IDs.
- No., Description, Base Unit of Measure, Inventory and Unit Cost are required; stock and cost cannot be negative.
- Hold any row with an exception from the cleared-only file. Keep it unchanged except for logged approved transformations in the review file.
- Lead times such as 2W and open-order quantities are passed through, not converted or checked in this cleanup scope.
Before and after
Source rows refer to the original CSV, including its header. Each excerpt below is read from the generated files. Values are quoted; ␠ marks a space and empty quotes mean a blank. A held row is excluded from the cleared-only download.
Representative source fields before and after cleanup · Swipe sideways to see all columns.
| Source row / field | Before | After | Disposition |
|---|---|---|---|
| 2 / Description | "Fictional␠moon-press␠spacer␠101␠␠␠" | "Fictional␠moon-press␠spacer␠101" | Cleared |
| 5 / No. | "fx-104␠" | "FX-104" | Cleared |
| 2 / Base Unit of Measure | "each" | "EA" | Cleared |
| 8 / Unit Cost | "1.234,50" | "1234.50" | Cleared |
| 3 / No. | "102" | "102" | Held: client decision needed |
| 4 / No. | "7.81E+11" | "7.81E+11" | Held: client decision needed |
| 7 / Inventory | "1,234" | "1,234" | Held: client decision needed |
| 9 / No. | "fx-108" | "FX-108" | Held: client decision needed |
| 10 / No. | "␠FX-108␠" | "FX-108" | Held: client decision needed |
| 41 / No. | "TOTAL" | "TOTAL" | Held: client decision needed |
Every change has a receipt
Logged edits by transformation
| Change type | Cell edits |
|---|---|
| Map approved units to EA | 26 |
| Uppercase item identifiers | 2 |
| Normalize numeric notation | 78 |
| Trim surrounding whitespace | 5 |
The 111 edits above count operations, not unique cells: a field trimmed and then uppercased has a log entry for each change. Every entry records the source row, item key, field, old value, new value and rule. Case normalization identifies conflicting duplicates; it does not decide which stock balance is correct.
Exceptions: what needs your decision
No missing digits are reconstructed. A mixed-format quantity needs its notation confirmed; a blank balance is not assumed to be zero. Conflicting duplicates need a source-system decision, and a total is held for confirmation rather than silently deleted. Negative stock is held because this sample's approved rule forbids it; a different business might legitimately allow it.
All held source rows and the toolkit's reasons · Swipe sideways to see all columns.
| Source row | Item key | Fields and retained values | Why held |
|---|---|---|---|
| 3 | 102 | No.: "102" | identifier outside approved pattern (possible lost zeros or totals row); left as supplied |
| 4 | 7.81E+11 | No.: "7.81E+11"; No.: "7.81E+11" | scientific-notation identifier may be Excel-damaged; left as supplied; identifier outside approved pattern (possible lost zeros or totals row); left as supplied |
| 6 | 000105 | Description: "" | blank required field; left as supplied |
| 7 | 000106 | Inventory: "1,234" | non-numeric or ambiguous value (ambiguous numeric notation; specify format us or eu); left as supplied |
| 9 | FX-108 | No.: "FX-108" | duplicate key with conflicting values across rows ['9', '10']; all kept for client decision |
| 10 | FX-108 | No.: "FX-108" | duplicate key with conflicting values across rows ['9', '10']; all kept for client decision |
| 11 | (blank) | No.: ""; No.: "" | blank key; row kept, not deduplicated; blank required field; left as supplied |
| 12 | 000111 | Inventory: "" | blank required field; left as supplied |
| 13 | 000112 | Inventory: "-12.00" | value below approved minimum; left as supplied |
| 41 | TOTAL | No.: "TOTAL" | identifier outside approved pattern (possible lost zeros or totals row); left as supplied |
There are 12 issue entries across these 10 rows. An identifier can trigger more than one check. Values shown in the exceptions list reflect the rule stage that raised the issue; approved formatting changes remain visible in the change log.
Independent QA: PASS
The separate QA script replays the change log against the original and compares every retained cell with the review output: 0 row-accounting or unlogged-change errors. It checks required fields and duplicate keys, with known unresolved issues disclosed as informational findings. It records SHA-256 checksums for the original, review CSV, change log and exceptions. PASS confirms the delivery's traceability; it does not certify held rows for import or prove the source stock is correct.
The QA report's run timestamp is omitted for reproducible public files. The checks, results and checksums are the actual tool output.
Download the delivery
- Original ERP export (semicolon CSV, UTF-8 BOM)
- Full cleaned review file (includes held rows)
- Cleared-only rows (derived from the review file)
- Cell-by-cell change log
- Exceptions and source row references
- Independent QA report
- QA checks and SHA-256 receipts (JSON)
- Rules and client confirmations (JSON)
- Initial data profile (JSON)
- Toolkit cleanup summary
CSV does not enforce text types. When opening in Excel, import item numbers as text so leading zeros survive; do not double-click and resave the original. The cleared subset is a reviewable starting point, not a destination-specific ERP upload format.
For your own export, agree the rules, required fields and handling of exceptions before processing. Nothing is changed in your ERP. See cleanup scope and order through Upwork.
FAQ
Is this a real customer export?
No. All item identifiers, descriptions and supplier names in this sample are invented. The files were generated from a fixed seed and processed by the same cleanup and independent QA scripts used for delivery.
Does QA PASS mean every row is ready to import?
No. QA PASS verifies row accounting and that every edit is logged, with unresolved issues disclosed. This sample has 30 cleared rows and 10 held rows. The full cleaned review file retains all 40 rows; only the cleared-only CSV excludes held rows. Confirm your destination system's import format before loading anything.
Will damaged identifiers or ambiguous numbers be guessed?
No. Lost leading zeros, scientific-notation identifiers, conflicting duplicate rows and ambiguous numeric notation need confirmation from your source system or an approved reference. Required blanks are not filled with zero or invented text.
Does viewing this sample upload any of my data?
This page has no upload form and its downloads contain only invented data. For the free calculators: No. Calculations and CSV parsing run in your browser, and the numbers and files you enter are never sent to a server, unless you choose to share a link, which carries the single-item inputs in its address. The page has no ads, sign-up or third-party trackers; the site host keeps standard anonymous visit counts. The paid cleanup service is separate: you choose which export to share through Upwork after agreeing the scope and rules.