{"id":"691678dbadcd0bfee0251f83","title":"2025 11 04 Issue 73","path":"how-to/committee/release-notes/2025-11-04-issue-73","contentMarkdown":"# 4th November 2025 — Member Bulk Load Date Format Fix [#73](https://github.com/nbarrett/ngx-ramblers/issues/73)\n## [build 345](https://github.com/nbarrett/ngx-ramblers/actions/runs/19082746244) — [fixes #73](https://github.com/nbarrett/ngx-ramblers/issues/73) — [commit 33d7112](https://github.com/nbarrett/ngx-ramblers/commit/33d7112)\n\nCorrected date format parsing for Ramblers Insight Hub Excel exports, preventing membership expiry dates from being incorrectly set to null.\n\n**Where to Find It**\n\n- **Admin → Members → Bulk Load**: Import functionality from Ramblers Insight Hub exports\n- **Member Management**: Membership expiry date handling\n\n**Benefits**\n\n- **Correct Date Parsing**: Handles 2-digit years (15/07/26) for expiry dates and 4-digit years (15/07/2023) for email permission dates\n- **Preserved Data**: Prevents existing expiry dates from being overwritten with null\n- **Type Safety**: Enum values used throughout for maintainability\n- **Comprehensive Testing**: 8 unit tests verify correct date format handling\n- **Clear Code**: Renamed enum values reflect actual format (TWO_DIGIT_YEAR vs FOUR_DIGIT_YEAR)\n\n**Technical Details**\n\nRoot Cause:\n- Ramblers Insight Hub uses different date formats for different columns\n- \"Expiry date\": dd/MM/yy (e.g., 15/07/26)\n- \"Email Permission Last Updated\": dd/MM/yyyy (e.g., 15/07/2023)\n- Code incorrectly configured membershipExpiryDate with dd/MM/yyyy (4-digit year)\n- Parse failures returned null, overwriting existing valid dates\n\nSolution:\n- Rename RamblersInsightHubDateFormat enum values:\n  - JOIN_DATE → TWO_DIGIT_YEAR (dd/MM/yy)\n  - OTHER_DATES → FOUR_DIGIT_YEAR (dd/MM/yyyy)\n- Configure membershipExpiryDate to use TWO_DIGIT_YEAR\n- Configure emailPermissionLastUpdated to use FOUR_DIGIT_YEAR\n- Update all test assertions to use enum values (type safety)","contentHtml":"<h1>4th November 2025 — Member Bulk Load Date Format Fix <a href=\"https://github.com/nbarrett/ngx-ramblers/issues/73\">#73</a></h1>\n<h2><a href=\"https://github.com/nbarrett/ngx-ramblers/actions/runs/19082746244\">build 345</a> — <a href=\"https://github.com/nbarrett/ngx-ramblers/issues/73\">fixes #73</a> — <a href=\"https://github.com/nbarrett/ngx-ramblers/commit/33d7112\">commit 33d7112</a></h2>\n<p>Corrected date format parsing for Ramblers Insight Hub Excel exports, preventing membership expiry dates from being incorrectly set to null.</p>\n<p><strong>Where to Find It</strong></p>\n<ul>\n<li><strong>Admin → Members → Bulk Load</strong>: Import functionality from Ramblers Insight Hub exports</li>\n<li><strong>Member Management</strong>: Membership expiry date handling</li>\n</ul>\n<p><strong>Benefits</strong></p>\n<ul>\n<li><strong>Correct Date Parsing</strong>: Handles 2-digit years (15/07/26) for expiry dates and 4-digit years (15/07/2023) for email permission dates</li>\n<li><strong>Preserved Data</strong>: Prevents existing expiry dates from being overwritten with null</li>\n<li><strong>Type Safety</strong>: Enum values used throughout for maintainability</li>\n<li><strong>Comprehensive Testing</strong>: 8 unit tests verify correct date format handling</li>\n<li><strong>Clear Code</strong>: Renamed enum values reflect actual format (TWO_DIGIT_YEAR vs FOUR_DIGIT_YEAR)</li>\n</ul>\n<p><strong>Technical Details</strong></p>\n<p>Root Cause:</p>\n<ul>\n<li>Ramblers Insight Hub uses different date formats for different columns</li>\n<li>&quot;Expiry date&quot;: dd/MM/yy (e.g., 15/07/26)</li>\n<li>&quot;Email Permission Last Updated&quot;: dd/MM/yyyy (e.g., 15/07/2023)</li>\n<li>Code incorrectly configured membershipExpiryDate with dd/MM/yyyy (4-digit year)</li>\n<li>Parse failures returned null, overwriting existing valid dates</li>\n</ul>\n<p>Solution:</p>\n<ul>\n<li>Rename RamblersInsightHubDateFormat enum values:<ul>\n<li>JOIN_DATE → TWO_DIGIT_YEAR (dd/MM/yy)</li>\n<li>OTHER_DATES → FOUR_DIGIT_YEAR (dd/MM/yyyy)</li>\n</ul>\n</li>\n<li>Configure membershipExpiryDate to use TWO_DIGIT_YEAR</li>\n<li>Configure emailPermissionLastUpdated to use FOUR_DIGIT_YEAR</li>\n<li>Update all test assertions to use enum values (type safety)</li>\n</ul>\n"}