Phase 2:
Polish
Reports, unified workspace, entity scoping, and scalability fixes -- turning a working prototype into a multi-tenant production platform.
What's Included
Seven improvements that took the platform from functional to production-ready.
Dashboard Report Navigation with Dynamic Date Filters
Dashboard cards link to filtered report views. Date ranges adjust dynamically so users always see current data, not stale snapshots.
Unified Delivery Workspace Tab
A single Salesforce tab that consolidates board, dashboard, and reports. Replaces the multi-tab navigation that forced users to context-switch.
ETA Service Parameterized for Any Workflow Type
WorkItemETAService now accepts a workflow type parameter instead of assuming Software Delivery. Any workflow with terminal stages gets accurate ETAs automatically.
Portal Dashboard with Dynamic Phases from CMT
The portal dashboard reads phases from WorkflowStage__mdt instead of using hardcoded phase names. Adding a new workflow type automatically updates the portal.
Board Entity Scoping
Each client sees only their work items on the board. Entity scoping is applied at the query layer via NetworkEntity__c, not via UI filtering.
Activity Log Reports + Dashboard
Pre-built reports and a dashboard for activity logs. Shows who did what, when, and how often -- surfacing Ghost Recorder data in a consumable format.
Test Coverage: 74% to 89% (820 Tests)
Massive test coverage push. Every controller, service, and trigger has test coverage. CI pipeline enforces 85% minimum per class.
Design Choices
Why each fix was done the way it was done.
Why entity scoping at the query layer (not row-level security)
Salesforce row-level security (sharing rules, OWD) is complex to manage across packages and can break in namespaced contexts. Filtering by NetworkEntity__c in every SOQL query is explicit, testable, and works identically in every org regardless of sharing configuration.
Why parameterize ETA service instead of creating per-workflow services
One service class with a workflow type parameter means zero code changes when a new workflow type is added. The alternative -- one ETA service per workflow -- would mean N service classes, N test classes, and N maintenance burdens. The CMT-driven terminal stage list makes parameterization trivial.
Why dynamic date filters on dashboard reports (not static)
Static date filters go stale. A report filtered to 'March 2026' is useless in April. Dynamic filters like 'LAST_N_DAYS:30' always show the current window. The dashboard cards pass these filters as URL parameters, so the reports are always relevant.
Why a unified workspace tab instead of multiple tabs
Context switching between Board, Dashboard, and Reports tabs forces users to lose their mental model. A single workspace tab with embedded components keeps everything in view. Users can collapse sections they don't need, but never lose context.
Why 85% minimum test coverage per class (not 75%)
Salesforce requires 75% org-wide for deployment, but that allows critical classes to be undertested. Enforcing 85% per class means every service, controller, and trigger is individually tested. This catches bugs that org-wide averaging would miss.
Before / After
Side-by-side comparison of what changed.
| Area | Before (Phase 1) | After (Phase 2) |
|---|---|---|
| Board | One board for all entities. Admins manually filter. | Auto-scoped per entity. Each client sees only their items. |
| ETA | Hardcoded for Software Delivery only. | Works for any workflow type via parameter. |
| Reports | Static date filters. Users had to edit each report. | Dynamic date parameters. Always current. |
| Portal Phases | Hardcoded phase names in JavaScript. | Reads dynamically from WorkflowStage__mdt. |
| Navigation | 5 separate tabs (Board, Items, Reports, Logs, Settings). | Unified workspace with embedded sections. |
| Test Coverage | 74% org-wide. Some controllers at 50%. | 89% org-wide. 85% minimum per class. |
Key PRs
Three pull requests that delivered the Phase 2 improvements.
Dashboard Navigation + Workspace Tab
Report card navigation with dynamic date filters
Unified Delivery workspace tab
Dashboard layout improvements
Activity Log Reports & Dashboard
Pre-built activity log reports
Activity dashboard component
Ghost Recorder data surfacing
Scalability Unlock
ETA service parameterized for any workflow type
Portal dashboard reads phases from CMT
Board entity scoping at the query layer
Test coverage push to 89%
Related Pages
Phase 2 made the platform production-ready. Phase 3 made it self-service.