Dashboard
The Dashboard is the NomaUBL home page. It opens by default after sign-in and surfaces the operational state of the platform on a 12-column widget grid — four hero KPI cards at the top, then a sequence of paired widgets that cover ingestion volume, dispatcher pipeline, recent + stale invoices, top failing validation rules, per-company breakdown, e-reporting coverage and PA round-trip times.
The page applies regardless of source system — JD Edwards, SAP, NetSuite or a custom ERP. Every number is read from the local NomaUBL database, so the dashboard reflects what NomaUBL has processed and persisted, not directly what the source system or the Plateforme Agréée holds.
The bottom row went from 6 + 6 over two rows to a single 4 + 4 + 4 row — Per-company, E-Reporting coverage and PA round-trip share one balanced row instead of leaving a half-empty cell. The Scheduler-health widget moved to the new Tech Dashboard where it sits next to the JVM, database and filesystem widgets the IT team relies on. The grid also switched to align-items: stretch so panels in the same row align bottoms.
The dashboard was rebuilt as a 12-column widget grid in 2026.05.4. The previous stacked layout of status counter cards was replaced by four hero KPIs (Total / In flight / Rejected — IT / Rejected — Business) plus eight paired widgets. Click-throughs from the hero cards now use a multi-status filter, so In flight lands on the actual in-flight invoices instead of dropping the status filter.
At a glance
The grid collapses to a single column below ~900 px. Hero cards keep their 220 px minimum on every screen, so the four KPIs always sit on the same horizontal band.
The date-range filter
A single filter sits at the very top of the page. It restricts every widget that depends on a time window — hero KPI counts, pipeline funnel, recent activity, top failing rules, per-company breakdown.
| Preset | Window |
|---|---|
| Today | Today only. |
| Yesterday (default) | The previous full day. |
| Last 7 days | The last seven full days, ending yesterday. |
| This month | The current month from day 1 to today. |
| Last month | The previous full month. |
| Custom range | Pick the From and To dates manually. |
A small set of widgets ignore the date filter on purpose — Stale invoices (always counts the last 90 days) and E-Reporting coverage (always the current month). Each carries its own time-window indicator so the difference is obvious.
Hero KPI cards
Four cards summarise the operational state of the platform at a glance. Each card carries a label, the count, a 7-day sparkline of daily volume, a one-line caption explaining the underlying status set, and — on full-licence installations — a click-through to the E-Invoicing page with the right filter pre-applied.
| Card | Counts | Statuses behind it | Click-through |
|---|---|---|---|
| Total invoices | All invoices in the date range | every status | E-Invoicing with date range only |
| In flight | Dispatcher pipeline + PA in-transit | 9900 9901 9902 9903 9906 (internal in-progress) and 201 202 203 204 214 224–227 (PA in-transit) | E-Invoicing with status=9900,9901,9902,9903,9906,201,202,… |
| Rejected — IT | Tech failures owned by the IT / dev team | 9904 9905 9907 (internal failures) and 213 (PA technical rejection) | E-Invoicing with status=9904,9905,9907,213 |
| Rejected — Business | Failures owned by customer-services | 206 207 208 210 221 501 600 (commercial disputes, refusals, suspensions, routing, recovery, e-mail-delivery) | E-Invoicing with the matching multi-status filter |
The In flight / Rejected — IT / Rejected — Business cards used to drop the status filter entirely on click — /api/invoices?status= was a single-value parameter, so a list of codes was rejected and the page fell back to the full list. The hero cards now pass a comma list (/api/invoices?status=A,B,C) which the backend parses into a multi-status IN (…) clause, so the click lands on the actual subset.
A red border + red value on Rejected — IT signals a non-zero count; same orange treatment on Rejected — Business.
The widget grid
Below the hero row, a 12-column grid hosts eight widgets paired to balance content density.
Pipeline funnel (12 cols)
Five horizontal stages — Validated / Sent to PA / Pending / Deposited / Rejected — with the count under each label. Clicking a stage opens E-Invoicing pre-filtered on the matching status set. The funnel reads left to right: anything sitting on Pending for too long flows into the Stale invoices widget below; anything on Rejected needs the Integration Errors page.
Daily volume (12 cols)
A 30-day area chart of daily ingestion volume — the same series feeding the hero card sparklines, rendered full-width so a single weekday slump is visible at a glance.
Recent activity (6 cols) + Stale + Top failing rules (6 cols)
This row used to be 8/4, which made the right column visibly thinner than the left. It was rebalanced to 6/6 in 2026.05.4 so all subsequent rows align on the same column boundary.
| Widget | What it shows |
|---|---|
| Recent activity | The last few invoices touched in the date range, with their canonical triplet (doc · dct · kco), status label and relative timestamp. Clicking a row opens the E-Invoicing list filtered on that status. |
| Stale invoices | Up to 50 rows where the status has not changed in the last 7 days. Each row carries the triplet, the current status and the days-since-last-update count. |
| Top failing rules | Top 10 validation rules by failure count over the date range. Each row shows a rank badge, the rule code, the rule's description as a secondary line, and the count. A header toggle scopes the list to ALL / UBL (Schematron / XSD) / INTEG (lifecycle / runtime errors). The View all link opens the Integration Errors page on its by-rule tab; clicking a specific rule lands on the by-event tab with that rule chip pre-applied. |
The proportional bars of the previous version made counts of 160 and 10 almost indistinguishable. The new ranked rows give every rule the same visual weight, with the count on the right.
Per company (4 cols) + E-Reporting coverage (4 cols) + PA round-trip (4 cols)
The three short widgets share a single balanced row in 2026.05.6 — the previous 6 + 6 over two rows left a half-empty cell once Scheduler-health moved to the Tech Dashboard.
| Widget | What it shows |
|---|---|
| Per company | One stacked horizontal bar per KCO (UHKCO from F564231) split into OK (green) / Pending (blue) / Error (red), labelled with the count and the company code. Useful when a spike is concentrated on a single company. |
| E-Reporting coverage | A percentage and three rows summarising the current month's e-reporting submission state: Flux 10.1 (B2BINT detail) and Flux 10.3 (B2C / OUTOFSCOPE aggregated) — deposited / generated. Clicking the widget opens the E-Reporting page. |
| PA round-trip | Average duration Send → Deposit and Send → Reject over the date range, computed from the lifecycle table. A spike on one of these reveals a slowdown on the PA side that is otherwise invisible from the daily counts alone. |
The grid uses align-items: stretch and each card grows with flex: 1 inside its column span — so all three cards in this row align bottoms even when one carries more content than the others.
The Scheduler-health widget is no longer on this page. It lives on the Tech Dashboard alongside the JVM, database, filesystem and live error tail widgets. The IT team gets a single page sized to operational concerns; the business audience here sees only the metrics they act on.
Quick actions + About
Below the grid, three shortcut buttons remain:
| Button | Behaviour |
|---|---|
| Create invoice | Opens the new invoice modal directly on the dashboard. After saving, navigation hands off to the E-Invoicing page. |
| Status reference | Navigates to References → Status Reference — the catalogue of every lifecycle status code. |
| Reason codes | Navigates to References → Reason Codes — the catalogue of every refusal / rejection / irregularity reason code. |
The About this release card sits at the very bottom and lists the release number, build date, AFNOR profile version and the bundled Schematron versions per module (EN 16931, BR-FR Flux 2, BR-FR CPRO, EXTENDED-CTC-FR).
Tips & best practices
- Read the hero row first. The four KPIs answer the question "is anything broken right now?" in one glance — a non-zero red border on Rejected — IT takes priority over anything else on the page.
- Use the date-range presets. Yesterday fits a morning monitoring routine; This month fits a finance overview; Custom range covers month-end reconciliation or specific incident windows.
- Match the funnel against the hero counts. In flight should equal the Sent to PA + Pending stages of the funnel. A divergence is usually a status that has not been mapped yet on either side.
- Top failing rules drives the work. A single rule with hundreds of hits often points to one upstream change (a renamed field, a stale tax code) — fixing the rule typically clears most of the integration errors.
- The dashboard is the right place to spot trends, not investigate a row. For a single-invoice deep-dive use the E-Invoicing detail modal; for a rule-level analysis use the Integration Errors page.
- Bookmark the dashboard. It is the natural daily landing page; bookmarks survive session expiry, so the next sign-in lands on the same view.