
Keep the original file and create a working layer
Store the received file as immutable evidence and build a separate working representation. Editing cells in place removes the ability to explain what the user submitted and what the system transformed.
Assign an ID to the batch and to every row before validation. This link supports precise errors, result reconciliation, and resume operations without depending on spreadsheet order.
Validate format without erasing identity
You can create a normalised form for comparison, but always retain the submitted value. Spaces, hyphens, or letter case may be formatting errors or part of a different identifier; every transformation should be explicit and reversible.
Separate local rejections from provider results. An invalid plate format does not need to leave your system and should have a different cause from a valid query that produced no result.
Deduplicate within the batch and across retries
Two rows may request the same capability for the same identifier. Resolving that match before querying reduces cost and avoids contradictory responses within one job. Each row remains linked to the single operation that was executed.
The deduplication identity must include capability, contract version, and relevant parameters. The same plate queried for fines and technical inspection represents two different operations.
Deliver partial results honestly
Enterprise batches rarely end with every item in the same state. Model completed, rejected, pending, and retryable items without turning the first error into the status of the whole file.
A useful output includes totals, row status, a safe cause, and the associated operation identity. Avoid copying full responses into logs or reports when they contain data that is not necessary to operate the process.
Sources and references
Informational content for integration design. It is not legal, regulatory, or financial advice.

