Root release update | March 2025

We’re committed to keeping you fully up to speed with all of the features, enhancements and fixes we ship at Root. Here are all of the updates and improvements we shipped over the last month 🛠️

Features

We’ve introduced new features to improve flexibility and customisation:

  • Customisable PDF configuration: You can now adjust PDF generation settings, including margins, orientation, page size, DPI, and zoom, using HTML data attributes. These settings apply per document type, allowing for more flexibility in formatting. Read the docs.
  • Cancel policy action for lifecycle hooks: You can now use the Cancel policy action within lifecycle hooks, providing greater flexibility in automating policy management. Read the docs.

Platform Enhancements

  • Performance Enhancements

    We’ve introduced enhancements to improve stability, efficiency, and visibility across Root:

    • Improved monitoring for policy activation: We’ve introduced a check to ensure policies expected to activate on payment_method_assigned do so successfully. If a policy remains in a pending state, an alert is sent for review, improving monitoring and reducing activation delays.
    • Configurable capacity parameters for product code Lambda: We’ve made memory, timeout, and concurrency parameters configurable for the product code Lambda, giving us greater flexibility to respond to capacity demands in our stacks. This enhancement improves efficiency and scalability across the platform.
    • Enhanced Mixpanel tracking across Root: We’ve expanded Mixpanel tracking to improve insights across the platform. This includes new tracking for application management on the dashboard, additional event properties for the Embed Management flow, as well as tracking for Insights and domain access. These enhancements provide better visibility into user interactions and platform usage.
    • Standardised API integration for product modules: We’ve replaced the internal gRPC Root SDK with a new client that uses standard API calls in the product module environment. This change is fully backwards compatible and enables authenticated requests to the Root API without storing API keys in code. It also reduces platform complexity and running costs, and paves the way for Node 20 support in product modules.
    • Support for Node 20 in product modules: Template modules in the Root testing environment now run on Node 20 using the new API client, allowing us to deprecate Node 12. This upgrade improves platform performance, security, and long-term support for module development.
    • Increased document queue concurrency: We’ve increased the number of documents that can be processed concurrently, improving the efficiency and speed of document generation across the platform.
    • Migration of notifications queue to SQS: We’ve started migrating the notifications queue to SQS, with the new setup currently enabled for an internal testing organisation. This change improves scalability and reliability in the way notifications are processed across the platform.
  • Billing Enhancements

    We’ve made several improvements to increase reliability, accuracy, and automation across Root’s billing processes.

    • New feature flags for Nedbank statement payment processing:
      • The process_payments_via_statements flag enables payments to be processed via account statement files
      • The use_assume_success_setting flag allows payments to be marked as successful based on configurable assumeSuccess settings in the product module.
      • Read the docs.
    • New endpoint to update payment method verification status: We’ve introduced a new endpoint that allows you to update the verification status of a payment method. This provides greater flexibility in managing payment methods programmatically.
      • Endpoint: PATCH /payment-methods/:payment_method_id/verification-status
    • New combineProRataAndPremium product module setting: You can now define the threshold for combining pro rata and premium payments, instead of the default 5-day rule. This setting is controlled by the combine_prorata_and_premium feature flag.
    • Prevent failed payments before policy start date from triggering lapse or NTU: We’ve introduced a feature that prevents failed payments made before a policy’s start date from causing a lapse or NTU. This ensures policies aren’t incorrectly impacted by payments that were attempted before coverage begins. The feature can be enabled or disabled via the ExcludePaymentsBeforeStart flag.
    • Improved handling of policy lapse and NTU: We’ve updated the lapse and NTU process to handle already lapsed or NTU’d policies more gracefully. Instead of throwing errors, the system will now recognise that the intended outcome has already been achieved and continue processing smoothly.
    • Improved efficiency in debit premiums job: The debit premiums job now ignores policies created on the same day it runs, preventing unnecessary delays. We’ve also introduced a configurable timeout alert to notify us if a job runs longer than expected, improving monitoring and reliability.
    • Configurable minimum payment amount: You can now set a minimum payment amount to reduce manual intervention on small payments. Billing jobs will honour this threshold when the use_minimum_payment_amount_setting feature flag is enabled.
    • Improved reliability and visibility in billing runs: We’ve introduced multiple checks and enhancements to billing, including more robust validation for payment dates and amounts, improved notifications for batch processing, and better logging for debugging. We also simplified alert logic and cleaned up deprecated configurations to streamline billing operations.
    • New alert for pending or processing EFT payments: We’ve introduced a new alert that notifies you when EFT payments are pending or processing during allocation. This is currently behind a feature flag. We also updated the icons on existing alerts for improved clarity.
    • Automated batch and lapse/NTU submissions: The billing run now supports automatic submission of payment batches and lapse/NTU requests. This reduces manual intervention and improves billing efficiency.
    • Improved handling of early payment dates: We’ve introduced validation to prevent payments from being scheduled before a policy’s start date, even in edge cases like weekend billing adjustments. This ensures that all payments align with policy coverage periods and reduces the risk of processing errors.

Bug fixes

We’ve addressed key issues to improve system reliability:

  • Resolved Knex timeout errors: We fixed an issue where database connections were timing out due to pool exhaustion, causing KnexTimeoutErrors. Increasing the connection acquisition timeout has improved stability and reduced failures.
  • Ensuring policy activation on payment method assignment: We identified cases where some policies remained in a pending state instead of activating as expected when a payment method was assigned. To address this, we’ve added a check that alerts us if a policy isn’t activated when it should be, improving reliability and reducing delays.
  • Preventing unflushed claims for flushed policies: We resolved an issue where claims linked to flushed policies were causing errors during processing. To prevent this, we’ve updated the flush process to ensure all related entities are flushed before the policy. When an individual policy is flushed, all linked claims are now flushed as well.
  • Improved claims block date handling: The claims block date no longer defaults to today, and you can now clear the date if needed. This update also resolves an issue where all claim block dates were unintentionally saved at the same time, preventing aggregate conflict errors.

If you have any suggestions or feedback, please share them with your Client Success Manager or submit them via the Root product roadmap to make sure we always know what’s top of mind for you.