Portal Recon â Go-Live Status & Remaining Features
Updated 2026-07-30 â the coordinator feature batch is live in production (CieTrade deep links, corrected Location, grouped-invoice variance, filtered export, VAWS work-order matching, Open Orders filters + fix). The full 8-portal baseline remains live and validated; remaining items are optional/post-go-live.
Shipped and liveâ
From the July 24 coordinator requests + SME feedbackâ
| Request | Status |
|---|
| Notes are read-only / need edit access (#154, #159) | â
Editor role â all 8 coordinators can edit Notes & Alt Invoice # |
| Select-all + bulk edit multiple lines (#155, #160) | â
Select-all (filtered) + bulk panel: Waiting on Customer, Unresolvable, Clear flag, Set note |
| Filter by portal (#157) | â
Portal multi-select filter |
| Multiple service months (#156) | â
Service Month multi-select |
| Column data misalignment (#158) | â
Fixed â header and rows share one grid |
| WO # and CT invoice # on the same line (#161, #162) | â
PO/WO # and Location columns |
| Waiting On / Unresolvable in the export | â
Columns in the detail sheet + Annotations sheet |
| Parent-account filter (#163) | â
Parent Account multi-select (account-hierarchy mapping) |
| Editable Location by invoice # (#169) | â
Inline-editable Location (editors) |
| CT Posting Date range filter (#170) | â
From/To date filter |
| Per-user column arrangement (#171) | â
Columns button â show/hide + reorder, saved per browser |
| Search and sort by Group # | â
Search box matches Customer / Invoice # / Group #; Group # column sortable |
| FM Pilot DNE alert "not showing up" | âšī¸ Lives on the Flagged tab â amber "DNE / No Cost" rows (needs an FM Pilot file with DNE > 0 and no Final Cost in the run) |
From the July 27 SME meetingâ
| Item | Status |
|---|
| CT Posting Date wrong on not-yet-posted rows (#168) | â
Now shows the projected posting date (1st of month after service) â SME-confirmed rule; invoice 1154851 â 2026-08-01 |
| Data re-baseline | â
Done â old runs purged (coordinator notes & flags preserved), clean baseline loaded |
| wdp-palantiri (Streamlit) page | â
Decision: no further development (retire after coordinators sign off on the React app) |
From the July 30 coordinator batchâ
| Request | Status |
|---|
| CieTrade deep links on invoice & group numbers (#183) | â
Invoice # links to the Billing Sheet, Group # to the Grouped Invoice Report â clickable in-app and in the Excel export |
| Customer location from the CieTrade billsheet (#186) | â
Location column now shows the billsheet location (e.g. CHI9 - 2725 Bilter Rd) for every invoice â see the fix note below |
| Grouped-invoice vs CieTrade variance (#187) | â
Group rows are labeled and show the group's submitted amount vs. the summed CieTrade total, with the variance |
| Export honors active filters (#184) | â
The Excel export now reflects the portal / service-month / customer filters you have applied (no filter = full run) |
| VAWS work-order matching (#185) | â
VAWS work orders now link to their CieTrade billsheet via the work-order number, so far fewer show as "not in CieTrade" |
| Open Orders â Customer & date filters (#179) | â
Added to the Open Orders tab |
| Open Orders â Service Month showed dollar amounts (#180) | â
Fixed â Service Month now shows the YYYY-MM month |
Location fix + backfill (2026-07-30): Location was initially sourced from the matched portal record (so it was blank for unsubmitted invoices); it now correctly comes from the CieTrade billsheet, populated for every invoice. The current baseline run (Jul 29) has had its Location values backfilled from CieTrade â refresh the app to see them. One caveat: only Location was backfilled on that existing run; the grouped-invoice labeling was not applied retroactively (those rows still work and their links are correct). The next upload/reconciliation populates everything â Location and group labeling â automatically, no extra steps.
Data-quality fixes surfaced by the baseline runsâ
| Fix | Status |
|---|
| Duplicate portal rows from overlapping export windows | â
De-duplicated at run time (was inflating some group variances) |
| Voided/cancelled submissions counted in Group # sums | â
Excluded â group variances now reflect live submissions only |
| Open Orders showed almost nothing | â
Fixed â Coupa PO customer mapping repaired; latest run shows 6,637 open lines across 38 customers |
| Accidental empty (no-file) runs became the default view | â
Runs with zero portal records are no longer saved |
| Files that fail to parse were skipped silently | â
Now listed as run warnings so uploaders see exactly what didn't load |
Current baseline run â validatedâ
Latest reconciliation (Jul 29) â 144,260 portal records across all 7 portals, validated end-to-end (0 duplicate rows, Coupa drafts correctly excluded, group sums clean, Open Orders populated):
| Portal | Records |
|---|
| Corrigo | 80,896 |
| Coupa | 45,004 |
| VAWS | 15,813 |
| FM Pilot | 2,161 (75 DNE / No-Cost alerts) |
| Ariba | 221 |
| Oracle | 148 |
| VendorCafe | 17 |
FM Pilot's DNE / No-Cost alerts (75) appear as amber rows on the Flagged tab. Mercado is intentionally excluded for now (SME: optional for go-live).
Remaining features (tracked in the Project Overseer)â
| Item | State |
|---|
Oracle legacy .xls support (#176) | Adapter can't read old .xls; interim: Save As .xlsx. Native support pending a sample file |
| VendorCafe PO adapter (#165) | Sample now in hand â buildable next |
| Mercado PO adapter (#165) | Still needs a sample export |
| Export â offline markup â re-upload | Design needed; interim workflow is edit-in-app |
| Coupa customer resolution via DB address match (#175) | Covers the ~1% of PO lines not in the location map |
| Streamlit page decommission (#172) | After coordinators sign off on the React app |
What we need from the teamâ
- Every coordinator: sign in, confirm the amber Editor badge, and start working the queue on this baseline â add notes, flag Waiting/Unresolvable, try a bulk action.
- Anyone: report issues via the in-app Request / Report button.
- Group: agree on a run cadence and queue ownership (data refreshes when an uploader runs â there is no scheduled refresh).
See the Coordinator Guide (docs/coordinator-sop.md in the portal-reconciliation repo) for the day-to-day workflow.