July was one of our biggest months yet. This release delivers several highly requested new features — including the ability to recover accidentally deleted projections and dedicated documentation for each projection — alongside a major expansion to compare and merge capabilities, a wave of formula builder improvements, new API endpoints, and dozens of fixes and quality-of-life improvements across the platform.
Reminder: The Slope Reporting Dataset Migration is scheduled for August 24th. Plan to review your custom workbooks on or soon after this date. See this post for more details.
✨ New Features
Restore Recently Deleted Projections Accidents happen. A new Recently Deleted folder now appears in your projections list, giving you up to 48 hours to restore any projection you’ve deleted. Restored projections return to their original folder if it still exists.

Documentation & Attachments on Projections Projections now have a dedicated Documentation tab with a rich text editor, so you can capture run notes, assumptions, and adjustments right alongside your results. You can also attach files to a projection for easy reference. When duplicating a projection, you can choose whether to carry the documentation over. Documentation and attachments also appear in the Compare Projections module.

Description Field for Model Point File Fields Model Point File Definition fields now support an optional description (up to 2,000 characters), so you can document expected values, formats, or other details about each field. Descriptions carry through model copies and compare/merge workflows.

Min/Max Model Point Aggregation Methods Two new model point aggregation methods — Min and Max — are now available on product variables. When selected, the variable returns the minimum or maximum value across all model points.
Current Array Size System Variable A new Current Array Size system variable is available when a variable has an array set in its properties. It returns the number of values in the array, making it easy to build dynamic formulas that depend on array length. For 2D arrays, each dimension has its own Current Array Size.
Company-Level Future Time Period Output for HPM HPM projections now support a Company option for the “Output Future Time Period Results for” setting. When selected, company-level variables calculated beyond the projection end date will appear in the Company tab of the Projection Run Summary workbook.
Direct Variable References to Table Variables Variables that return Data Tables, Scenario Tables, or Yield Curves can now be directly referenced in formulas — enabling more advanced expressions like coalescing between two tables when one is empty.
🔧 Enhancements
Formula Builder & Variable Properties
- Faster operand search: You can now start typing to search for an operand immediately after selecting an operator — no extra click needed.
- Force Recalc & Post Projection mutual exclusion: The Force Recalc and Post Projection settings are now mutually exclusive in variable properties, with clear UI guardrails to prevent invalid configurations. Existing variables have been automatically migrated.
Projections
- Read-only mode for results-only users: Users with Model Results access (but not Model Execution) can no longer edit projection details or configuration. All projections are now visible to these users regardless of status, in a read-only view.
- Scenario file version selector: The scenario file dropdown on projections now includes a version selector, so you can choose a specific version of a scenario file rather than always defaulting to the latest.
- Smarter model point default in workbooks: When model point filters are applied, the Model Point Details view in the workbook now defaults to the first model point that actually has results, preventing confusion when model point 1 has no output.
- Links to scenario tables from projections: Scenario Table names on Projection and Projection Template detail pages are now clickable links that navigate directly to the scenario table in Assumptions.
- Links to product definitions from projections: Product Definition names on Projection and Projection Template detail pages now link directly to the corresponding product definition page.
- Clearer cancelled projection messaging: When a projection is cancelled, the Run Logs tab now displays a clear message explaining that run logs are unavailable for cancelled projections.
- Variable errors in debug view: Calculation errors now appear inline on the debug view for the variables that errored, making it easier to investigate issues without switching to the error report separately.
- Run more HPM scenarios: HPM projections now support running up to 250 scenarios.
Compare & Merge
This month includes a significant expansion to what can be compared and merged between models:
- Portfolio details (name, description, Cash Before Investment, New Business Sales Amount) can now be viewed and merged.
- Product Variable Output Grouping differences — including variable additions and deletions — can now be viewed and merged.
- Product Output Grouping Arrays and Calculated Range Array differences (including start/end index and step) now appear in the diff view and can be merged.
- Table structure deletions can now be merged from the source to the target model, including all associated data tables.
- Investment strategy differences on projection portfolios are now visible in the projection diff view.
- Indirect array labeling in the diff view now clearly distinguishes between direct (“Array”) and indirect (“Indirect Array”) references for better clarity.
- Static Aggregate operand order is now preserved consistently across model copies and compare/merge workflows.
- Links to source and target projections now appear in the Compare Projections module for easy navigation.
- Links to source and target products now appear in the Compare Products module.
- Performance: Model comparison is now significantly faster for models with large numbers of data tables.
Data Tables & Arrays
- Array source changes propagate to tables: When a static array used as a dropdown list source for a table column is updated, the change now propagates to the data table automatically.
- Paste from Excel with commas: Numbers with comma formatting (and accounting-style dashes for zero) can now be pasted directly from Excel into the table editor without error.
- No unnecessary versioning on name-only changes: Renaming a Decrement Table or Improvement Scale no longer creates a new version — only the last modified date is updated, matching how Data Tables and Scenario Tables already behave.
- Scrollable data table list: The data table list in the left-hand rail now scrolls independently, so you no longer need to scroll the entire page to navigate a long list.
API Enhancements
- New: GET Product Output Groupings — retrieve all Product Output Groupings for a model, including IDs, names, and associated variable names:
GET /api/v1/Models/{ModelId}/ProductOutputGroupings - New: DELETE Decrement Table — delete decrement tables via the API:
DELETE /api/v1/DecrementTables/{id} - New: POST Static Array — create static arrays via the API, including specifying values in order:
POST /api/v1/Arrays TableStructureIdin GET Data Tables Data — the GET/api/v1/DataTables/Dataresponse now includesTableStructureId, making it easier to use the GET response directly in POST/PATCH calls.
🛠 Fixes
- Resolved an issue where multi-scenario HPM runs could stall when workers were all concentrated on a single scenario simultaneously.
- Fixed an issue where multi-scenario Cores runs could intermittently hang with one scenario stalling indefinitely while all others completed.
- Resolved an issue where certain forward-projected portfolio variables relying on product aggregates would produce an unknown error at future time periods.
- Fixed an issue where variable errors were sometimes absent from the Variable Errors workbook in HPM runs when the error limit was reached with dynamically generated model points.
- Resolved an issue where running a projection with all model points filtered out produced incomplete Company and Portfolio level results.
- Improved error messaging when scaled model point values falling outside the valid decimal range caused runs to fail.
- Fixed an improper validation error that appeared on scenario tables when no yield curve points are configured but none are needed.
- Resolved an issue where a false diff would appear after toggling the Required flag on a model point field in the compare view.
- Fixed an issue where a product merge was showing model point fields from all products in the destination dropdown, instead of only the relevant target product’s fields.
- Fixed an issue where the Decrement Table formula merge was not displaying Table field differences when other field differences were also present.
- Fixed an issue where the Annuity Factor formula merge did not detect differences in Gender, Age, Duration Frequency, and Duration fields.
- Fixed an issue where a table structure column merge could produce an unknown error when the operation would result in duplicate column names, rather than surfacing a clear explanation.
- Fixed an issue where 2D array variables would produce an unknown error when aggregating one dimension while referencing another 2D array variable.
- Fixed an issue where deleting a 2D array set to “Formula per array value” would fail with an error instead of completing successfully.
- Fixed an issue where editing a 2D array to change both dimensions simultaneously would produce an error.
- Resolved an issue where the Current Array Index and Current Array Value system variables were not selectable inside Present Value, IRR, or Goal Seek formulas when the variable had an indirect array reference.
- Fixed an issue where array values were not available in the formula builder when the only reference to an array variable came through a Data Table selection.









