Created: October 15, 2025

Performance Boost, Financial Fixes,
and Integration Updates

This release delivers dramatic performance improvements to project loading times, corrects critical financial calculation errors, and enhances integration stability. Users gain faster access to project data and more reliable reporting across the platform.

Release dates: 10/14/2025

Critical performance optimizations

  • Optimized loading speed for the Fixed/Ongoing Projects page. We created a new DAG (scope_projects_metrics) that pre-calculates metrics for Fixed and Ongoing projects and stores them in a separate table. The page now pulls data from this cached table instead of calculating in real time, reducing load time from 40+ seconds to 2-3 seconds. Users now have instant access to project lists, a 13x+ speed improvement that makes working with project portfolios comfortable by eliminating long waits every time data refreshes or when switching between tabs. This is especially critical for managers who frequently work with project lists throughout the day.

Financial calculation and report fixes

  • Fixed sorting of financial fields in the Margin by project report. We resolved an error ("'<' not supported between instances of 'dict' and 'dict'") that occurred when sorting by financial fields (Expected income, Net price, Margin, Invoice Status, Discount, Expenses). All fields now sort correctly without errors. Finance teams have regained full functionality for working with project margin reports. They can now sort data by any financial metric to quickly identify the most and least profitable projects. This is critical for management decisions about project prioritization and portfolio optimization.
  • Fixed margin calculation formula for Fixed-scope projects. We changed the margin calculation formula in the Budget widget for Commercial Fixed-scope projects: Margin = Budget - Net Cost instead of the previous incorrect formula Margin = Budget - Spent - Net Cost. Commercial Fixed-scope project managers now get accurate margin calculations because the new formula correctly shows planned project profit as the difference between budget and cost without double-subtracting spent funds. This ensures accuracy in financial planning and management decisions regarding pricing and project profitability.
  • Fixed critical error in the Employee Costs report. We resolved a division-by-zero issue in hourly rate calculations that occurred with very short worklogs (for example, less than 17 seconds). The system now correctly handles cases where rounding to two decimal places results in 0; previously, it caused errors in the Costs & Margin with details and the Internal costs report. Clients have regained access to critical financial reports. The system now works stably even when brief or accidental worklogs exist, eliminating situations where financial analytics become completely unavailable due to individual incorrect time entries and ensuring business process continuity.
  • Fixed handling of negative worklog values in Azure DevOps integration. We improved the logic for parsing changes to the Completed Work field from Azure DevOps. The system now correctly handles cases where values decrease, converting sequential changes into only increasing worklogs and preventing negative values from appearing when hours are reduced in tasks. Clients using Azure DevOps integration now have accurate time tracking; correcting mistakenly entered hours in Azure no longer creates negative worklogs in Enji. This ensures work effort data integrity and eliminates distortions in time reports when corrections are made in the source system.

Integration fixes

  • Eliminated random failures of the sending_alert DAG. We added TimeoutError handling when sending alerts to all messengers, which prevents the DAG from failing due to random Telegram API issues and eliminates infinite retry loops that spam notifications. Users no longer receive repeated alerts every few minutes due to technical messenger failures. The system now stably handles temporary delivery issues, and the DAG completes successfully on the first attempt, ensuring predictable notification system behavior and eliminating spam in the team’s work channels.