Skip to content

Migration Progress Dashboard

Date: 2026-02-27 Project: Progress Credit Union -- Umbraco v8 to v17 Migration Single source of truth for all migration progress. Overall Status: ~95% frontend complete. Only Phase 6 (NuGet RCL) and Phase 7 (Final Docs) remain.


Phase Status

Phase Description Status Commits
1 P0 Critical Fixes (data protection, DT 1055, alias verification) DONE 30706dd, 599d7f8, ff6173c, 65aace9
2 MkDocs + Documentation site DONE --
3A P1: 12 missing page templates DONE 11 created, 1 merged into existing
3B P1: ~45 missing component views DONE 10 blockgrid + 4 blocklist views created (121 blockgrid + 7 blocklist total)
3C P1: Calculator localization (IDictionaryService) DONE 6 calculator partials localized
3D P1: Orphan audit DONE 7 "missing" accounted for (3 settings + 3 child + 1 nested)
3E P1: Video slides (YouTube/Vimeo/internal) DONE 3 new views
4A Bootstrap 5: package upgrade 4.4.1 to 5.3.3 DONE 643174b
4B Bootstrap 5: page templates + site layouts DONE 4cfa267
4C Bootstrap 5: blockgrid component views DONE 7cd8ee8
4D Bootstrap 5: other partials + JS files DONE f7f697c, 08e9a5d, 7ae1735 (stickyNav fix), bd117a3 (no-gutters fix)
4E Bootstrap 5: client CSS (163 files, 1,142 patterns) DONE a6a776e (1,142 BS4 patterns replaced across 159 files)
5A Calculator slider UI (jQuery UI range inputs) DEFERRED Deferred to runtime testing
5B LoanBox ISiteSettingsService injection DONE Already properly injected, no changes needed
5C Move hardcoded API keys to appsettings.json DONE Mapbox to ProgressSettings:MapboxAccessToken
5D Calculator form validation (jQuery Validate) DEFERRED Deferred to runtime testing
5E Investigate 13 orphaned "Element" suffix views DONE 4 orphaned views removed
5F Test DT 2236 cleanup (cross-DB check) LOW PRIORITY Post-launch
5G Content usage audit (Report 04 Section 7) LOW PRIORITY Post-launch
-- Migration tool: element type duplication fixes DONE 09935d2, 164069f, 76a17cf (3 root causes fixed)
-- Code quality: obsolete API fixes DONE 4ea7268
4F Grid rendering: per-template breakpoints + generic styles DONE c8a9f35, 17d1cbd
6 NuGet RCL Architecture NOT STARTED --
7 Final Documentation + Client Handover NOT STARTED --

Build Status

  • Errors: 0
  • Warnings: 95 (all nullable reference warnings in Forms themes -- cosmetic only)

Migration Tool Fixes -- DONE

Element type duplication root cause analysis completed (Report 16). Three overlapping code paths were creating duplicate element types. All three fixed:

Commit Fix Root Cause
8e384d6 Prevent Path A/B duplicate element types on future runs Grid config migration created grid_element_* without checking Path A gridElement*
5268fa9 Folder organization for element types (sub-folders per datatype) Organization improvement
09935d2 Settings editor exclusion + ps-prefix target lookup + case-insensitive SQL gridSettingsMarginEditor/gridSettingsPaddingEditor incorrectly treated as content types; alias lookup didn't strip "ps" prefix
164069f DefaultGridEditorConverter uses grid_element_ prefix + settings skip Content migration fallback (Path 3) created gridElement* duplicates of existing grid_element_* types
76a17cf ps-prefix stripping in FindSourceElementTypeForGridEditorAsync SOURCE DB lookup: psFancyVideo now correctly resolves to fancyVideo. This is the primary fix -- avoids execution order problem (Step 6.5 before Step 6.6)

Result: ~455 to ~430 element types on fresh migration run. Eliminates: 9 gridElement* duplicates, 4 settings editor types (2 pairs), grid_element_psfancyvideo duplicate of fancyVideo.


Bootstrap 5 Upgrade -- ALL PHASES DONE

Bootstrap 4.4.1 to 5.3.3 upgrade across all views, partials, JS files, and CSS files.

Commit Phase Scope
643174b 4A Package: Bootstrap 5.3.3 CSS + JS bundle, Popper 2.x
4cfa267 4B Page templates + site layouts: data-* to data-bs-*, ml-*/mr-* to ms-*/me-*, sr-only to visually-hidden, etc.
7cd8ee8 4C Blockgrid component views: data attributes + utility class renames
f7f697c 4D Other partials: blocklist, calculators, loanboxes, news, forms, help, social
08e9a5d 4D JS files + remaining partials
7ae1735 4D Fix: stickyNav.cshtml data-toggle to data-bs-toggle (HTML/JS mismatch bug)
bd117a3 4D Fix: no-gutters to g-0 class rename
a6a776e 4E CSS: 1,142 BS4 patterns replaced across 159 client CSS files

CSS Pattern Replacement Summary (Phase 4E)

Pattern Replacement Count
.sr-only .visually-hidden 158
.form-group .mb-3 389
.badge-primary .bg-primary 397
.col-xs-* .col-* 76
.text-left/.text-right .text-start/.text-end 35
.pl-N/.pr-N .ps-N/.pe-N 67
no-gutters g-0 (in templates)
Total 1,142

Component Fix History (Streams 1-7)

Stream Commit Scope
1 30706dd LoanBoxes: dispatcher + 4 display modes (Tabs, Boxes, FlipCards, Accordion) + MediaPicker fix
2 599d7f8 Testimonials: default layout fix (col-lg-4 to col-md-12) + image suppression + read-more link
3 599d7f8 News: culture/visibility filters for NewsList, topStory, topStory5Articles
4 ff6173c Calculators: API controller, calculatorIcon + calculatorInputVarRate stubs implemented, JS endpoints, service fields
5 65aace9 Cleanup: remove Path B stubs, rename case-sensitive files, fix comments
6 8e384d6 Migration tool: prevent Path A/B duplicate element types
7 5268fa9 Migration tool: folder organization for element types

Component Readiness

Component Status Notes
News 100% Culture/visibility filters, all sub-partials complete
Grid Layouts 100% Whitelist confirmed complete
Testimonials 100% Default layout, image suppression, read-more link
LoanBoxes 100% All 4 modes. ISiteSettingsService already properly injected.
Calculators 90% Localized, API controller done. P2: slider UI + form validation deferred to runtime testing
Data Protection 100% All 5 components working, 3 camelCase duplicates removed
Video Slides 100% YouTube, Vimeo, internal video
Announcement/Spotlight 100% Scroll + spotlight grid verified

View Counts

Category Count
Page templates 45
BlockGrid component views 121
BlockList component views 7
SiteLayout partials 18
Client CSS files (BS5-updated) 163
JavaScript files (BS5-updated) 60

Grid Rendering Fixes -- Matching V8 HTML Structure

Commits: c8a9f35, 17d1cbd

Problem: The v17 grid rendering produced different HTML markup than v8, breaking existing CSS selectors. V8 had 9 different grid renderers, each with specific Bootstrap breakpoints and CSS classes. V17 had incorrectly used col-md-* for all templates.

Root cause analysis: Each v8 page template used a specific grid renderer: - homePageGrid.cshtml -- col-xl-* with merged area classes - StandardPageGridBootStrapNew.cshtml -- col-xl-* with merged area classes - StandardPageGridBootStrap.cshtml -- col-md-* with separate area inner div - footerGrid.cshtml -- col-lg-* with special footer classes - bottomGrid.cshtml -- col-lg-* with merged area classes - ContactUsGrid.cshtml -- sections col-xl-*, areas col-md-*

Fixes applied:

  1. Per-template breakpoints (c8a9f35): Set correct ColumnBreakpoint for each template to match its v8 grid renderer:
  2. home, homeGrid, homeFullWidthSection -- "xl" (was "md")
  3. Faq, Faq1, standardPageNew, StandardPageNewNoHeaderNoFooter, StandardPageThirdParty, TokenAuthentication, TestimonialsBlock -- "xl" (was "md")
  4. footerDefault -- "lg" (was "md")
  5. homeFullWidthSection bottomGrid -- "lg" with noPadding classes
  6. standardPage, CustomerOnlyPage1, error, testimonials, standardPageWow, standardPageWithImageText -- kept "md" (correct)
  7. Added MergeAreaClasses=true for all templates whose v8 renderer used RenderElementAttributesCol

  8. Generic BuildStyleAttribute (17d1cbd): Added generic fallback that iterates ALL settings properties as CSS styles (matching v8's fully generic approach). Previously only handled background-color, background-image, padding, and margin.

  9. Multi-section wrapper div removed (17d1cbd): Removed extra <div> wrapper inside multi-section columns in _MultiSectionGrid.cshtml. V8 rendered rows as direct children of the section column.

  10. ContactUs section breakpoint (17d1cbd): Fixed SectionBreakpoint from "lg" to "xl" to match v8 ContactUsGrid which used order-xl-*.

Files changed: 12 page templates + BlockGridExtensions.cs + _MultiSectionGrid.cshtml

Remaining known structural differences (acceptable): - V17 BootstrapGrid always wraps in <div class="umb-grid"><div class="grid-section"> -- v8 didn't have these wrappers for some renderers (homePageGrid, StandardPageGridBootStrap, etc.). Impact: LOW -- these are outermost wrappers. - V17 BuildHtmlAttributes uses explicit property mapping for config attributes (class, id, data-aos-*). If v8 had exotic config properties, they'd be lost. Impact: LOW -- common properties all handled.


Remaining Work

Deferred to Runtime Testing (P2)

  • 5A: Calculator slider UI -- jQuery UI range inputs instead of plain number inputs
  • 5D: Calculator form validation -- jQuery Validate with localization support

Low Priority (P3, post-launch)

  • 5F: Test DT 2236 cleanup -- cross-DB validation needed
  • 5G: Content usage audit -- Report 04 Section 7 (element-type-per-content breakdown)
  • Settings deduplication -- DEFERRED (29 potential savings, GUID remapping risk too high)

Future Phases

  • Phase 6: NuGet RCL Architecture -- move shared code to Razor Class Library packages
  • Phase 7: Final Documentation -- file-by-file migration map, client handover docs

Reports Index

# Report Description Status
00 00-SUMMARY.md Master summary with all phase status and action items Complete
01 01-views-migration-audit.md V8 to V17 views comparison (~95% complete, 121 blockgrid + 7 blocklist component views) Complete
02 02-duplicate-views-analysis.md Data protection views + naming duplicates analysis Complete
03 03-v8-grid-baseline.md Immutable v8 reference: 14 datatypes, 78 editor aliases Complete
04 04-v17-element-type-audit.md ~430 element types (455 before dedup fix): in-use, configured, orphaned Complete
05 05-grid-deduplication-analysis.md Per-datatype architecture verification (zero identical layouts) Complete
06 06-view-element-crossref.md View-to-element-type matching (121 views, orphan audit) Complete
07 07-deep-dive-analysis.md Component deep-dive: LoanBoxes, Calculators, Testimonials, News Complete
08 08-fix-plan-frontend.md Fix plan: frontend naming conventions Complete
09 09-fix-plan-doctypes.md Fix plan: document types and datatypes Complete
10 10-fix-plan-logic.md Fix plan: component rendering logic Complete
11 11-grid-dedup-deep-investigation.md Grid dedup verification: zero identical layouts confirmed Complete
12 12-grid-architecture-explained.md 4-level BlockGrid hierarchy architecture documentation Complete
13 13-grid-migration-visual-plan.md BlockGrid content migration visual plan Complete
14 14-element-audit.md Element type files audit (4 orphaned removed) Complete
15 15-bootstrap5-upgrade.md Bootstrap 4.4.1 to 5.3.3 upgrade -- ALL PHASES DONE Complete
16 16-element-type-duplication-analysis.md 3 root causes, 3 fix commits, all FIXED Complete
17 17-css-bs4-audit.md Client CSS: 1,142 patterns replaced across 159/163 files Complete
18 18-js-bs5-audit.md JavaScript BS5 audit: stickyNav fixed, tooltip deferred Complete
19 19-full-migration-validation.md Full file-by-file v8 to v17 validation (~95% coverage) Complete

Key Architecture

4-Level BlockGrid Hierarchy

Row Config to Layout to Area Wrapper to Content

  • AllowAtRoot = false (strict enforcement)
  • Area Wrappers preserve v8 cell-level styles (background, padding, margins)
  • Frontend: BootstrapGrid.cshtml + _MultiSectionGrid.cshtml

Element Type Duplication (fixed)

Three code paths were creating element types: 1. Content Type Migration (Step 6.6) -- copies v8 originals (~150 types) 2. Grid Config Migration (Step 6.5) -- creates grid_element_* (29 types) 3. Content Migration Fallback (Step 7) -- creates gridElement* (9 types)

Root cause: Step 6.5 runs before Step 6.6, so target DB lookups fail. Fixed by source DB lookup (commits 09935d2, 164069f, 76a17cf).

Shared Codebase

The v8 codebase is shared across MULTIPLE credit union projects/databases. Always migrate everything. Cleanup only from destination DB after cross-validating all clients.


Environment

Resource Location
V17 Umbraco https://psv17.double.pt
V8 Database cb-sql.double.pt,7071 / progresscu.ie
V17 Project C:\repos\progress\dbl.Progress
V8 Source C:\repos\progress\psCreditUnion (READ-ONLY)
Migration Tool C:\repos\progress\double-migration-tool
Documentation C:\repos\progress\docs\migration-review\
MkDocs Config C:\repos\progress\docs\mkdocs.yml
MkDocs Site http://127.0.0.1:8001/

Plans Reference

Plan File Status
Revised Master Plan REVISED_PLAN.md Active
Migration Orchestrator App PLAN-MIGRATION-ORCHESTRATOR.md Planned
Migration Performance (<10min) PLAN-MIGRATION-PERFORMANCE.md Planned
BlockPreview + ModelsBuilder PLAN-BLOCKPREVIEW-MODELSBUILDER.md Planned
Migration documentation by Double for Progress Credit Union