Wisej.NET 4 Modernization & Migration Strategy
This example builds a migration dossier for the Intermediate TicketOps Console and extend it into the Advanced EnterpriseOps baseline — current-state inventory, target-state inventory, compatibility/risk matrix, a screen regression plan for ten key flows, and a rollback strategy. Then prove it by running the path, hitting the failure, rolling back, mapping the theme and re-running.
Run it
cd "Module 2/EnterpriseOps"
dotnet run -f net10.0 --urls http://localhost:5202
Then open http://localhost:5202. In-memory only: no database, no network, no cloud account, nothing deployed.
The Windows target (net10.0-windows) is what the Wisej.NET Designer opens; both frameworks build.
The two screens
| Screen | What it is |
|---|---|
UI/MigrationDossierPage (MainPage, 1048×600) | the dossier: toolbar Build dossier · ▶ Run migration path · Cancel · ↶ Roll back failed step · Map theme mixin · Work orders →, six tabs (Dossier · Inventory · Compatibility / risk · Incremental path · Regression plan (10 flows) · Decision memo), the banner and the dark footer with the harness verdict |
UI/WorkOrdersPage (908×600) | the migrated TicketOps screen from the video — Open / In progress / Done, + New work order, dgvWorkOrders (Id · Title · Priority · State), lblStatus, the dark footer, and ← Migration dossier in the app bar. It paints itself from ThemeService.Current, so the visual diff is on the screen rather than in a document |
What to click
Do it in this order the first time — it is the walkthrough.
| # | Button (screen) | What you should see |
|---|---|---|
| 1 | Build dossier (Dossier) | 7 dossier areas with the risk computed (H×3 M×3 L×1), 14 inventory items, 9 compatibility entries (3 blocked, 3 mitigated). Footer: Dossier: 7 areas · risk H×3 M×3 L×1 · 3 blocked combinations mitigated. The Decision memo tab is written |
| 2 | Work orders → | the broken build, visible: grey app bar, square tabs, monochrome priority column, red banner Visual diff — 3 failure(s): accent color lost … · corner radius 0 … · priority colors dropped …. It compiles, it runs, it is wrong |
| 3 | In progress / Done tabs, + New work order, then ← Migration dossier | the server-side filter, a created work order, and navigation back with the same session and services |
| 4 | ▶ Run migration path | steps 1–3 turn ✓, the flows tab fills in live, then step 4 Check themes turns ✕. Footer: Regression harness: FAIL — 7/10 flows, 3 theme flows broken (…). Steps 5–7 are never started |
| 5 | Map theme mixin | refused: Step 4 is in the Failed state — roll back to "theme folder copy" first. Fix on the fallback point, never on the broken build. |
| 6 | ↶ Roll back failed step | step 4 → ↶ rolled back to "theme folder copy" — fix, then re-run; steps 1–3 keep ✓; the dossier row Themes / resources reopens |
| 7 | Map theme mixin | Theme mixin mapped — 3/3 tokens match the 3.5 baseline. |
| 8 | ▶ Run migration path again | resumes at step 4, Regression harness: PASS — 10/10 flows, then 5, 6, 7 → Migration path complete — 7/7 steps passed, 7/7 dossier rows proven |
| 9 | Work orders → | the fix, visible: blue app bar #1565D8, rounded tabs, High red / Normal amber / Low green. Footer: N open work orders — Wisej.NET 4, mapped theme mixin; on In progress: N in progress — filter ran on the server, same as 3.5. Critical rows stay grey on purpose: the 3.5 theme only defined three priority colours and Critical is new in the Advanced baseline — inventory item #9 |
| 10 | Decision memo tab | regenerated after every action from the evidence the run produced — steps, harness verdict, theme diff |
| — | Cancel (during a run) | the run stops at the next check; passed steps keep their state |
The failure path, in one paragraph
The package upgrade succeeds. dotnet build reports 0 errors. The session starts, the screens open, the grid
binds. And the 4.x theme engine has quietly ignored Themes/Blue-2019/*.json, because that is a 3.x format, so
every screen renders with engine defaults: accent #6B7C8F instead of #1565D8, corner radius 0 instead of
7, and no priority colours at all. Nothing throws. The only thing that notices is the harness, whose flows 6–8
diff the theme token map against the 3.5 baseline — which is why the plan protects behavior, not compilation.
The workflow then refuses to start step 5, refuses to let you fix forward, and names the fallback point
(theme folder copy) that gets you back.
File tree
Module 2/
README.md ← this file
EnterpriseOps.slnx .gitignore
EnterpriseOps/
Program.cs session entry point: one SessionContext + one ServiceRegistry
Startup.cs Default.html Default.json Web.config
Properties/launchSettings.json port 5202
UI/
MigrationDossierPage.cs / .Designer.cs the dossier screen (MainPage)
WorkOrdersPage.cs / .Designer.cs the migrated TicketOps screen, painted from the theme map
Domain/
DossierRow.cs + RiskLevel, DossierRowState
InventoryItem.cs + InventoryCategory (10 categories)
CompatibilityEntry.cs one cell of the compatibility matrix
MigrationStep.cs + StepState — a step, its check, its fallback point
RegressionFlow.cs + FlowCategory, FlowOutcome
ThemeMap.cs the three tokens + the visual diff
WorkOrder.cs + WorkOrderStatus, Priority, Tenant
Services/
MigrationAssessmentService.cs risk rule · matrix check · decision memo
MigrationWorkflow.cs the seven steps, the refusals, the rollback
RegressionHarnessService.cs the ten flows
ThemeService.cs unmapped → folder copy → mapped mixin
WorkOrderService.cs the behaviour that must not change
ActivityTrace.cs server-side log (System.Diagnostics.Trace)
CommandContext.cs CommandResult.cs ServiceRegistry.cs
Data/
MigrationInventoryStore.cs dossier rows · inventory · matrix · steps · flows
FakeWorkOrderStore.cs 45 in-memory work orders, ids 2002–2005 as in the video
ThemeStore.cs the three theme states
Security/
SessionContext.cs per session, zero static fields (flow 9 asserts it)
PermissionService.cs server-side rules
docs/
MigrationDossier.md the dossier table (the file the video opens)
MigrationInventory.md deliverable 1
RiskMatrix.md deliverable 2
RegressionPlan.md deliverable 3
RollbackPlan.md deliverable 4
ModernizationDecisionMemo.md deliverable 5
MigrationPath.svg the seven steps and their fallback points
The Solution Explorer shows these under docs/migration/; this sample keeps docs/ flat.
Not yet exercised at runtime
| Item | Where |
|---|---|
Wisej.Web.TabControl + TabPage with a Dock = Fill grid per page, SelectedIndex set from code | MigrationDossierPage |
DataGridViewCell.Style read-modify-write to colour one cell | MigrationDossierPage.PaintCell, WorkOrdersPage.PaintPriorityColumn |
Control.CssStyle = "border-radius: 7px !important;" for the theme's corner radius on the tab buttons | WorkOrdersPage.ApplyTheme |
TextBox with Multiline = true + ScrollBars.Both for the memo | MigrationDossierPage.Designer.cs |
Navigation by assigning Application.MainPage = new <OtherPage>(services) mid-session | btnWorkOrders_Click, btnBackToDossier_Click |