An issue was corrected where attempting to upload pay band files with over 10,000 rows, the process was hanging and would stop only when the system timeout was reached. After reconnecting, no pay bands were uploaded.
This issue was corrected; the modification or upload of large pay band files no longer leads to a freeze.
Release v2026-06-09_01
Type
Jira
Description
PA-7809
A currency dropdown was added to the Compensation Assistant result page. Users running the Compensation Assistant with datasets containing multiple currencies can now select their preferred currency directly from the result page, allowing suggested compensation and ranges to be reviewed in any currency present in the uploaded dataset. The currency selector operates consistently with the currency switching functionality available in other parts of the platform, such as the employee overview table.
PA-8072
An issue was corrected where the predicted compensation displayed in the Compensation Assistant did not match the value shown for the same employee in the Analysis Overview. This occurred because numerical input fields in the Compensation Assistant Run form were prepopulated with rounded display values rather than exact values when launched from an employee row action. The form now carries the employee's exact values, ensuring that running the assistant without editing inputs produces a predicted compensation that matches the Analysis Overview.
PA-8090
An issue was corrected where the analysis salary field (e.g. 'Total Target compensation') remained pinned to the top of the compensation components list on the Pay Explainability screen, even after the initial fix to respect Excel column order. Residual hard-coded logic was overriding the uploaded dataset order for this specific field. The compensation components list now correctly follows the column order from the uploaded Excel dataset for all fields, including the configured analysis field.
PA-8103
An issue was corrected where cloning a dataset with a numeric record filter that contained a null or missing value resulted in a server error ('column none does not exist'). This occurred because null values in numeric filter parameters (such as 'greater than', 'less than', or 'between' comparisons) were incorrectly passed to the database query without validation. The clone action now validates numeric filter parameters before processing and returns a clear validation error if a value is missing or invalid, preventing the server error and ensuring no incomplete clone is created.
PA-8118
An issue in which pay-analysis job logs displayed duplicate and false "job will time out" warnings was corrected. The warnings appeared multiple times for a single job run and sometimes fired when the job was not actually close to its timeout deadline, with the problem worsening as more jobs ran in the same environment. The issue was caused by a debug timer thread leaking across Lambda container reuse, accumulating warning threads from prior invocations. The job logging behavior now ensures at most one timeout warning per job run, only when genuinely near the deadline.
PA-8132
Three issues in the internal pa-analysis benchmark tool were corrected. An issue where the backward-elimination cutoff value specified in a benchmark scenario was ignored at run time (with the tool falling back to the on/off toggle instead) was corrected; the configured cutoff value is now honored. An issue in the scenario-pairing logic for cross-run comparison was corrected where the per-group pay-gap grouping field was excluded from configuration matching, causing scenarios with different settings to be compared as if identical; scenario pairing now accounts for all configuration fields that affect results. An issue where comparison report tables rendered mismatched column headers and the environment summary table displayed empty difference columns was corrected; tables now render headers that match their data columns.
PA-8155
An issue was corrected where running a pay analysis on a dataset without a configured first demographic variable (e.g. Gender) could leave the dataset in a contradictory state — simultaneously locked from further configuration and flagged as incomplete. The system now refuses to start a pay analysis on a dataset whose configuration is incomplete, and returns a clear error message prompting users to complete the required configuration first.
Release v2026-06-01_01
Type
Jira
Description
PA-7221
The calculation method for Estimated Adjusted Pay Gap values was standardized across the platform. All pay gap analyses now use the log_residual calculation method, including historical analyses that were originally generated using the pct_residual method. The pct_residual option has been removed and is no longer selectable. This change ensures consistent methodology across all analyses and simplifies the calculation approach used throughout the platform.
PA-7701
An issue was corrected where clicking "Reset all filters and pins" on the Employee Overview page did not clear the displayed values in filter input fields, even though the table results were reset. The filter UI now properly clears all text inputs, checkboxes, and numeric fields when the reset button is clicked, providing a complete visual reset across all filterable tables including Employee Overview, Pay Adjustments, Evaluation, Position Comparison, and Reports screens.
PA-7885
The dataset clone API endpoint (the programmatic interface used to create child datasets from a source dataset) was extended to support partition mode. When a partition field is specified, the endpoint now creates one child dataset per distinct value of that field, applying row filtering, label inheritance, and demographic variable recalculation to each partition. This allows automated pipelines to split a single source dataset into multiple analysis-ready subsets in a single API call. The response structure was unified so that both single-clone and partition operations return the same format, ensuring consistent integration behavior.
PA-7930
A New Bulk Export modal was added to the Bulk Exports page, allowing users to create bulk exports by naming them, selecting an analysis, and defining employee filters. The modal includes a required name field, an analysis selector, and an Employee Scope filter section supporting multiple dimensions (Age, Country, Ethnicity, Education, Marital Status, Preferred Language, and compensation-related fields via a dimension picker). Selected filters appear as removable tags, and an employee count preview updates as filters are applied. The modal validates required fields before submission and displays inline error messages if the API call fails, allowing users to retry without losing their work.
PA-8064
The Employee Pay Transparency Report tab on the EUPTD page was updated to display peer averages that reflect each employee's actual sub-group peer scope when the underlying analysis uses a parent sub-grouped configuration. Previously, the tab displayed dataset-wide averages computed across the entire parent group, which did not accurately represent the employee's true peer comparison. The tab now includes a clear notice when averages are scoped to a sub-group narrower than the on-screen group-by dimension, displays all amounts in the employee's own dataset currency (with no conversion to the viewer's display currency), shows explicit error messages when a report cannot be loaded, and handles masked or missing peer cells with clear placeholders. The Excel export of the Employee Pay Transparency Report was updated to remain fully consistent with the on-page view, including headers, masking, sub-group indication, and currency display.
PA-8078
An issue was corrected where an internal background job that warms the parquet cache would crash with a ValueError when a DataUpload was deleted shortly after a row edit, before the queued cache-warming job had executed. This race condition was reachable in production whenever a DataUpload was deleted immediately after data changes, though it surfaced first in automated end-to-end test environments due to aggressive test teardown. The background worker now detects the missing DataUpload row, logs the event, and exits cleanly without attempting to upload to the cache. The crash was never visible to end users, as it occurred in a fire-and-forget background process; the fix eliminates spurious error reports and ensures the correct outcome—no cache entry for a DataUpload that no longer exists.
PA-8083
The per-column filter inputs in the New Bulk Export modal now match each column's data type. Numeric columns such as Salary, Seniority, and ABS prorated now offer a minimum and maximum range input instead of a long checkbox list of individual values, allowing users to filter by range (for example, salary between 50,000 and 80,000). High-cardinality text columns such as Employee ID and Job Title, which previously either disappeared from the filter picker or rendered as unmanageably long checkbox lists, now offer a substring search input. Short categorical columns such as Gender and Country continue to display the existing checkbox list with search.
PA-8094
An issue was corrected where missing Content Security Policy (CSP) rules in the Nginx configuration prevented connection to the AskBee server (PayAnalytics' AI-powered assistant) from production environments. The required CSP rules for the AskBee API endpoints have been added, restoring connectivity.
PA-8116
A linting issue that caused the continuous integration pipeline to fail on the main branch was corrected. The axios HTTP client library (used internally for API requests) version 1.16.1 introduced a named export that conflicted with an ESLint code quality rule. Three frontend files were updated to use the named export instead of accessing the method via the default import, resolving the CI failure. No user-facing functionality was affected.