Reviewing, Reconciling, and Rolling Back an Import
Summary
Section titled “Summary”After an import finishes, Torqueflow gives you three tools for making sense of what happened: the reconciliation report (what was created, updated, preserved, or flagged), the data quality report (which records had issues and why), and the rollback function (delete everything this import created and start over). This article walks through all three, plus how refresh mode re-imports work when you want to sync updated data from your source system without overwriting Torqueflow-native work.
Prerequisites
Section titled “Prerequisites”- You are an owner or admin with the
settings.import.managecapability. - You have at least one completed import run on the organisation.
Understand initial mode vs refresh mode
Section titled “Understand initial mode vs refresh mode”Every import run has a mode stored on the ImportRun record:
| Mode | When it applies | What it does |
|---|---|---|
| Initial | First import from a source system. No prior ImportMappings exist. | Creates new records for every row. Duplicates are handled via the duplicate picker. |
| Refresh | Later imports from the same source system. ImportMappings already exist. | Records with an existing mapping are updated (source-owned fields only). Records without a mapping are created. Torqueflow-native records are invisible to the import. |
Torqueflow auto-detects the mode when you start a new run by counting existing ImportMapping entries for the source system. You can confirm the detected mode or override it in the UI before running.
Understand the source-owned field policy
Section titled “Understand the source-owned field policy”- Refresh mode only updates source-owned fields - the fields that came from the external system in the first place. This includes things like customer name, phone, address, VRM, make/model, etc.
- Torqueflow-native fields (notes you added in Torqueflow, tags, custom fields, status changes made via the Torqueflow UI) are preserved and never overwritten.
- Every entity type has its own field policy defined in the system. For example:
- Customer source-owned: title, name, email, phone, address, account customer flag, credit hold, marketing consent, customer group.
- Customer Torqueflow-native: notes, tags, custom fields, customer_type changes.
- Vehicle source-owned: registration, make, model, year, VIN, fuel type, MOT expiry, service date.
- Vehicle Torqueflow-native: colour (if user-set), notes, status changes.
- Work Order: largely Torqueflow-native - only booking date, invoice date, and mileage are source-owned.
- Financial records (SalesInvoice, SalesPayment, PurchaseInvoice, PurchasePayment) are append-only. Refresh never updates or deletes existing financial records - it only adds new ones that don’t already have a mapping.
See the conflict preview before running refresh
Section titled “See the conflict preview before running refresh”- Before executing a refresh import, Torqueflow identifies records where source data differs from current Torqueflow data on source-owned fields.
- The conflict summary at the top of the run shows:
- Total records to create (no existing mapping).
- Total records to update (existing mapping, source data changed).
- Total records unchanged (existing mapping, no changes detected).
- Total conflicts requiring review.
- For each conflict, you can preview the diff (old value vs new value) and choose per-record or in bulk:
- Accept update - apply the source data.
- Skip - preserve the current Torqueflow value.
- Review later - mark for follow-up after the run.
- This is how you avoid accidentally overwriting manual fixes you made in Torqueflow after the initial import.
Read the reconciliation report
Section titled “Read the reconciliation report”After an import run completes:
- Go to Settings > Import Data and click the completed run from the Import History list.
- The Reconciliation Report shows a table with one row per entity type:
- Entity - Customer, Vehicle, Product, etc.
- Created - new records added (green badge).
- Updated - refresh-mode updates (blue badge, hidden in initial mode).
- Unchanged - records with a mapping but no changes (slate badge, hidden in initial mode).
- Skipped - records the user chose not to import.
- Flagged - records with warnings for review (amber badge).
- Failed - records that could not be imported (red badge).
- A totals row at the bottom summarises the whole run.
- If the run is mixed-mode (some jobs were initial, some were refresh), initial-mode jobs appear with their own counts and the refresh-mode columns are blank.
Read the data quality report
Section titled “Read the data quality report”- Click any individual job within the run to see its Data Quality Report.
- The report shows a quality score as a percentage - 100% means every record was clean, under 90% means there were many issues.
- The severity breakdown categorises issues as error, warning, or info.
- The issue type breakdown groups issues as:
- Parse errors (malformed dates, unreadable numbers).
- Validation failures (required field missing, invalid format).
- Duplicate suspects (flagged during dedup).
- Placeholder data (obvious test values).
- Format anomalies (strange characters, truncation).
- An expandable flagged records table lists each problem row with: row number, field, issue type, severity, original value, and a suggested fix.
- Click Download Quality Report to get a CSV with all the issues and suggested fixes - useful for cleaning source data before a refresh re-import.
Re-import just the failed records
Section titled “Re-import just the failed records”- Open the quality report CSV.
- Filter the source data down to the rows listed in the report.
- Fix the issues at source.
- Re-upload just those rows in a new import. Because refresh mode uses ImportMapping to match existing records, fixed duplicates will update cleanly rather than creating new copies.
Roll back an import
Section titled “Roll back an import”If an entire import was a mistake:
- Open the run from the Import History list.
- Click Roll Back Import. This is only available for runs in
completedstatus. - A confirmation dialog shows exactly how many records will be deleted per entity type: customers, vehicles, work orders, products, suppliers, labour units, invoices, payments.
- Warning: if any imported records have been modified in Torqueflow after import (for example, a new payment was recorded against an imported invoice), the confirmation dialog flags these and asks you to acknowledge data loss risk before proceeding.
- Click Confirm Rollback.
- Rollback runs in the background. It deletes records in reverse dependency order:
- Payments
- Invoices
- Work orders
- Products, suppliers, labour units
- Vehicles
- Customers
- ImportMappings are marked as rolled back (not deleted - the audit trail is preserved).
- The ImportRun status transitions to rolled_back.
- When rollback completes, the run detail page shows the final state.
Understand rollback limits
Section titled “Understand rollback limits”- Rollback only removes records created by this specific import run, identified via ImportMapping. Records created in other ways (manually, by other imports) are never touched.
- Append-only financial records (sales invoices, payments) are deletable via rollback only for the run that imported them. Later financial activity is not.
- If a record was merged (not created) during import, rollback cannot restore it to its pre-merge state - merges are destructive on the existing record. For this reason, it is always safer to run a fresh test import on a demo organisation first.
- Rollback is not a time machine. It does not undo Torqueflow-native changes made to source-owned fields after the import.
Resume an interrupted import
Section titled “Resume an interrupted import”- If you navigate away mid-import and come back later, the run page reconnects to live updates and shows the current state - still importing, completed, failed, or rolled back.
- No progress is lost. Batches process independently, and the Run record tracks aggregated counts.
Review the audit trail
Section titled “Review the audit trail”- Every import run creates an audit log entry in Settings > Audit Log.
- Every rollback creates its own audit entry.
- This is the canonical source of truth for “who ran what import when” and is retained per your organisation’s retention policy.
Expected Outcome
Section titled “Expected Outcome”- You understand what was created, updated, preserved, skipped, and flagged in any completed import.
- You can identify and fix data quality issues before or after an import.
- You can safely roll back an import when needed, knowing exactly what will be removed and with an acknowledged warning if any imported records have been modified since.
- You can re-run a corrected import in refresh mode without losing work done in Torqueflow between runs.
Troubleshooting
Section titled “Troubleshooting”Problem: Refresh mode was detected but I wanted to do a fresh initial import. Cause: ImportMappings already exist for this source system. Fix: Override the mode manually in the import setup UI. Or roll back the previous import first, then run a new initial import.
Problem: Refresh import reported many unchanged records - expected updates. Cause: The source system does not mark fields as changed, or your source-owned field list does not include the fields you modified. Fix: Check the field policy for the entity type. If the field is not classified as source-owned, refresh will not update it. Contact support if you need the policy adjusted.
Problem: Rollback failed mid-way. Cause: A referenced record in a later entity (for example, a payment) cannot be deleted cleanly because it has downstream dependencies. Fix: Check the error message on the run page. You may need to manually remove the conflicting downstream record first, then resume rollback.
Problem: Quality score is low but I cannot see any obvious issues. Cause: Soft warnings (format anomalies, placeholder data) count against the score but do not prevent import. Fix: Download the quality report CSV and filter by severity. Info-level issues are often safe to ignore.
Problem: Reconciliation report shows records in “flagged” that were not flagged during the preview. Cause: Some issues are only detected during import execution (for example, foreign key conflicts discovered when creating related records). Fix: Click through the flagged records to see the specific issues. Fix them at source and re-import.
Problem: “Roll Back Import” button is missing.
Cause: The run is not in completed status (it may still be importing, or already rolled back).
Fix: Wait for the run to complete, or check the status badge. Only completed runs can be rolled back.
Problem: Rolled back an import but some records are still showing in Torqueflow. Cause: Those records were created manually or by a different import, not by the run you rolled back. Only records with a matching ImportMapping are removed. Fix: Delete the remaining records manually if appropriate, or run a new rollback against the correct import run.
- Re-running the same import run produces identical results - it is idempotent. ImportMapping is the single source of truth for “what has already been imported”.
- The reconciliation report gracefully handles runs that predate refresh-mode support (
updated_count,unchanged_countfields) by displaying them as initial-mode imports. - Append-only financial records are intentional - the tax and accounting audit trail must be immutable.
- Rollback preserves the ImportMapping records (marked as rolled back) so you can see in the audit log that this import existed and was reversed.
- For high-value migrations, always run a test import against a demo organisation first to validate field policies and catch issues before production.
Permissions
Section titled “Permissions”settings.import.manage- required to view reports, re-run, and roll back imports. Assigned to owners and admins by default.