Date: 2026-03-13
Feature: XLSX Jurisdiction Import
Change Type: Correct Course during implementation
Scope Classification: Minor
The XLSX jurisdiction import feature was implemented from the original quick spec, but the business rules changed during implementation review.
New required behavior:
Jurisdiction rows must show the full imported record, not just row number and reasonJCode rows must now be inserted into Jurisdiction instead of being skippedIMB_Digits build failures must also show the full imported recordContext:
JCode rows should be skippedEvidence:
JCode rows are skippedNo epics or stories artifacts exist for this quick-flow change, so there is no epic backlog to rewrite.
No formal story artifacts exist. The impact is limited to the current quick-spec-driven implementation.
Affected artifacts:
/workspace/_bmad-output/implementation-artifacts/tech-spec-add-xlsx-jurisdiction-import.md/workspace/App/Controllers/Jurisdiction/JurisdictionController.asp/workspace/App/Views/Jurisdiction/import.asp/workspace/App/DomainModels/JurisdictionRepository.asp if insert support needs refinementConflicts discovered:
JCode rows should be skipped, but new requirement says they must be insertedupdated and insertedJurisdictionDirect Adjustment
This is a bounded feature correction, not a broad replanning event. The existing implementation is already concentrated in one controller and one view, so the safest path is to update the quick spec and then amend the implementation directly.
Primary risk areas:
Jurisdiction recordsSmall extension to the current implementation pass. No broader program impact identified.
JCode behaviorOLD
JCode values not found in Jurisdiction should be skipped and counted in the final summary instead of inserted.NEW
JCode values not found in Jurisdiction should be inserted into Jurisdiction.Rationale
This aligns the artifact with the corrected business rule.
OLD
NEW
Rationale
Operators need enough detail to identify and repair bad workbook rows quickly.
OLD
IMB_Digits failures are treated as row-level failures with summary text.NEW
IMB_Digits failures must include the full row content in the error output.Rationale
The source data causing the failure must be visible without cross-referencing the spreadsheet manually.
JCodeOLD
FindByJCode failure increments unmatched count and records an error.NEW
FindByJCode failure creates a new jurisdiction model and inserts it using the imported values.insertedCount.Rationale
This is the main behavioral correction.
OLD
Row 14: Jurisdiction field is missing a code in parentheses.NEW
Row 14: Jurisdiction field is missing a code in parentheses. Record: County=..., Jurisdiction=..., Mailing Address=..., City & Township=..., ZIP + 4=..., Mailer ID Option 1=...Rationale
This directly satisfies the new operational requirement.
OLD
updated, unmatched, invalid, failed, duplicatesNEW
updated, inserted, invalid, failed, duplicatesRationale
The UI should reflect what the import actually does.
Minor
JCodeJurisdiction rows display full record detailsJCode rows insert new jurisdictions successfullyPowered by TurnKey Linux.