Phase 2: Polish

Phase 2:
Polish

Reports, unified workspace, entity scoping, and scalability fixes -- turning a working prototype into a multi-tenant production platform.

Complete
89%
Test Coverage
820
Total Tests
3
Key PRs
6+
Scalability Fixes
1

What's Included

Seven improvements that took the platform from functional to production-ready.

#464

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.

#464

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.

#471

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.

#471

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.

#471

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.

#468

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.

Multiple

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.

2

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.

3

Before / After

Side-by-side comparison of what changed.

AreaBefore (Phase 1)After (Phase 2)
BoardOne board for all entities. Admins manually filter.Auto-scoped per entity. Each client sees only their items.
ETAHardcoded for Software Delivery only.Works for any workflow type via parameter.
ReportsStatic date filters. Users had to edit each report.Dynamic date parameters. Always current.
Portal PhasesHardcoded phase names in JavaScript.Reads dynamically from WorkflowStage__mdt.
Navigation5 separate tabs (Board, Items, Reports, Logs, Settings).Unified workspace with embedded sections.
Test Coverage74% org-wide. Some controllers at 50%.89% org-wide. 85% minimum per class.
4

Key PRs

Three pull requests that delivered the Phase 2 improvements.

#464

Dashboard Navigation + Workspace Tab

Report card navigation with dynamic date filters

Unified Delivery workspace tab

Dashboard layout improvements

#468

Activity Log Reports & Dashboard

Pre-built activity log reports

Activity dashboard component

Ghost Recorder data surfacing

#471

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.