Release v1.37.0
Released May 2026
Executive Summary
Features
Product Flows
- Migrated user-present product flows from Durable Functions to the Dapr actor-based pattern, with supporting ProductFlowStatus lookup table and actor callback reliability improvements (153617) (135432) ([PR 24461, PR 24622, PR 24639, PR 24595])
Billing & Quoting
- Added account-specific price list preference for quoting and contract renewals, enabling accounts to have dedicated price lists overriding default pricing (154953) (PR 24555)
- Added CSV export functionality to the account aggregation screen in Apex Portal billing (157870) (PR 24753)
Contract Management
- Enabled account administrators to add additional contracts to their existing account, including onboarding service refactoring and disablePayg support (151587) ([PR 24473, PR 24602, PR 24568])
Notifications & Feedback
- Introduced MyEcho automated survey integration, enabling notification-scheduled feedback collection via the MyEcho platform (136873) ([PR 24687, PR 24761])
Onboarding
- Added HTML/Markdown support for onboarding Terms & Conditions via a new MarkDown MFE component (153955) (PR 24665)
- Extended universal onboarding with OnboardingUrl tenant configuration and subscription friendly name inline editing (156551) (135545) ([PR 24725, PR 24739, PR 24746, PR 24773])
Observability
- Added DORA metrics Grafana dashboard using Infinity datasource and Azure DevOps REST API for tracking engineering performance (152870) (PR 24537)
Infrastructure
- Introduced KEDA Service Bus scaling rules, HTTP scale rules, Dapr resiliency policies, queue maxDeliveryCount configuration, and a 2-hour cooldown for scale-to-zero container apps (152399) ([PR 24658, PR 24659, PR 24662])
- Upgraded Dapr to v1.16 (154040) (PR 24617)
Testing & Quality
- Expanded integration testing with Dapr sidecar Testcontainer infrastructure, ProductManagement domain tests, and Tenant Management removal tests (156201) (152535) (154195) ([PR 24600, PR 24547, PR 24477])
- Migrated code quality analysis from SonarCloud to Qodana (154751) (PR 24740)
Bug Fixes
- Resolved multiple Notifications Worker reliability issues including stuck Processing states, missing retry logic, per-iteration timeout, and ICachingService DI error on startup (155568) ([PR 24570, PR 24675, PR 24695])
- Fixed Dynamics address and province field mapping during the onboarding process (151580) ([PR 24592, PR 24599, PR 24604])
- Fixed tenant removal failures due to incorrect intersection entity primary key in
DynamicsTenantContactUpdatedEvent(135189) (PR 24551) - Fixed Peach Payments
forceDefaultMethodincorrectly set to true, causing payment method selection issues (108012) (PR 24528) - Realigned the credit card payment form layout (139267) (PR 24539)
- Restored missing show/hide password styling on the sign-in form (157242) (PR 24691)
- Fixed FinalizeOnboarding invites not being routed through IInviteService, causing invite delivery failures (135545) (PR 24682)
Overview
Release v1.37.0 is a significant release delivering major architectural improvements, new user-facing capabilities, and infrastructure enhancements. The headline change is the migration of user-present product flows from Azure Durable Functions to the Dapr actor-based pattern, eliminating the Durable Functions dependency for interactive flows. Account administrators can now add additional contracts to their accounts, and a new account-specific price list preference enables customised pricing per account. Onboarding is extended with HTML/Markdown support for Terms & Conditions and the new OnboardingUrl tenant configuration. The release also ships MyEcho survey integration, DORA metrics observability, KEDA-based infrastructure autoscaling, and resolves multiple Notifications Worker reliability issues.
Features
Product Flow Migration: Durable Functions to Actor-Based
Migrated user-present product flows from Azure Durable Functions to the Dapr actor-based pattern, aligning with the platform's actor-first architecture:
- Actor-based user-present product flow — Replaced the Durable Functions orchestration with a Dapr actor implementation, providing improved scalability, state management, and consistency with the broader actor pattern used across the platform (153617) (PR 24461)
- Actor callback reliability — Migrated actor callbacks from Service Bus topics to queues and fixed message processing to ensure reliable callback delivery (153617) (PR 24639)
- ProductFlowStatus lookup table — Added a
ProductFlowStatuslookup table to the product management database to support structured status tracking for actor-based product flows (135432) (PR 24622) - DbContext factory refactor — Refactored
SqlStorageProductFlowInstanceRepositoryto useIDbContextFactoryfor improved DbContext lifetime management in concurrent actor scenarios (PR 24595)
Billing & Quoting
- Account-Specific Price List Preference — Implemented the ability to assign a dedicated price list to individual accounts, allowing overrides of the default pricing for quoting and contract renewals (154953) (PR 24555)
- Account Aggregation CSV Export — Added CSV export for account aggregation data in the Apex Portal billing screen, enabling offline reporting of aggregated account billing data (157870) (PR 24753)
Contract Management
- Account Admin Add Contract — Enabled account administrators to add additional contracts to their existing account through the onboarding flow, including a redesigned
OnboardingDataWithoutBankDetailsservice layer anddisablePaygproperty on subscription modals (151587) ([PR 24473, PR 24602, PR 24568])
Notifications & Feedback
- MyEcho Surveys Integration — Introduced an automated feedback loop using the MyEcho platform, enabling notification-scheduled survey delivery. Includes the
MyEchoSurveyProcessorwith form-URL-encoded token requests for reliable authentication with the MyEcho API (136873) ([PR 24687, PR 24761])
Onboarding
- Terms & Conditions HTML Support — Added a MarkDown MFE component to support rich-text HTML/Markdown rendering for onboarding Terms & Conditions pages (153955) (PR 24665)
- OnboardingUrl Tenant Configuration — Added
OnboardingUrlas a configurable field on tenant data, surfaced through the tenant management API and list attributes, enabling tenants to specify their onboarding entry point (156551) ([PR 24725, PR 24739]) - Subscription Friendly Name Inline Editing — Added inline editing support for subscription friendly names, allowing users to update display names directly from the subscription view (135545) (PR 24746)
Observability
- DORA Metrics Dashboard — Added a Grafana dashboard for DORA (DevOps Research and Assessment) metrics using the Infinity datasource and Azure DevOps REST API, providing visibility into deployment frequency, lead time, change failure rate, and recovery time (152870) (PR 24537)
Infrastructure
- KEDA Service Bus Autoscaling — Added KEDA-based Service Bus scaling rules and HTTP scale rules to container apps, ensuring worker services scale based on queue depth. Also added Dapr resiliency policies and configured queue
maxDeliveryCountfor reliable message processing (152399) ([PR 24658, PR 24659]) - Scale-to-Zero Cooldown Period — Set a 2-hour cooldown period for scale-to-zero container apps to prevent excessive cold-start cycles during low-traffic periods (152399) (PR 24662)
- Dapr v1.16 Upgrade — Upgraded all Dapr dependencies to version 1.16.0 (154040) (PR 24617)
Testing & Quality
- Dapr Sidecar Testcontainer Infrastructure — Added Dapr sidecar support to the Testcontainers-based integration test infrastructure, enabling full actor and pub/sub testing in isolation across all domains (156201) (PR 24600)
- ProductManagement Integration Tests — Introduced an integration test suite for the ProductManagement domain (152535) (PR 24547)
- Tenant Management Removal Integration Tests — Added integration tests covering the tenant removal flow (154195) (PR 24477)
- Notifications Worker Timeout Integration Tests — Added integration tests for the per-iteration timeout reliability fix (157238) (PR 24686)
- Qodana Code Quality Migration — Migrated static code analysis from SonarCloud to Qodana (154751) (PR 24740)
- BMAD Upgrade to v6.6.0 — Upgraded the BMAD AI-assisted development framework to v6.6.0 (156586) (PR 24664)
Bug Fixes
-
Notifications Worker Reliability — Resolved five reliability issues in the Notifications Worker including stuck
Processingstate with no retry, missing per-iteration timeout preventing hung message processing, andICachingServicedependency injection error on startup (155568) ([PR 24570, PR 24675, PR 24695]) -
Dynamics Address & Province Field Mapping — Fixed the onboarding address mapping to Dynamics 365: corrected field name mapping, mapped
stateOrProvince, and fixedaddress1_countymapping toaddress1_stateorprovince(151580) ([PR 24592, PR 24599, PR 24604]) -
Tenant Removal Failures — Fixed tenant removal issues caused by an incorrect intersection entity primary key in the
DynamicsTenantContactUpdatedEventhandler (135189) (PR 24551) -
FinalizeOnboarding Invite Routing — Fixed invites sent during
FinalizeOnboardingnot being routed throughIInviteService, which caused invite delivery failures (135545) (PR 24682) -
Peach Payments forceDefaultMethod — Changed
forceDefaultMethodtofalsein Peach Payments requests, restoring correct payment method selection behaviour (108012) (PR 24528) -
Credit Card Payment Form Layout — Realigned the credit card payment form layout to match the intended design (139267) (PR 24539)
-
Show/Hide Password Styling — Restored missing styling for the show/hide password toggle on the sign-in form (157242) (PR 24691)
-
Missing OriginatingTenantId — Fixed
OriginatingTenantIdnot being propagated correctly in the universal onboarding flow (135545) (PR 24773)