1. All regions
FEATURES
Pending Approval & Timesheet Report Enhancements
Three pieces of information that the system was working out “on the spot” every time you loaded the timesheet or ran the pending approval report — timesheet status, submission state, and assigned approver — are now stored directly in the database instead.
This should mean:
- Faster load times for timesheets and the pending approval report
- More reliable filtering when searching or sorting by those fields
Enhacements
[#74720] BE: Update the V1 Project Loader
The legacy project import tool has been updated to support three new capabilities when bulk importing projects.
The Product field (column X) has been updated to replace the old brand field, and now accepts either a Product ID or a Product Unique Code. If the value provided cannot be found in the system, the row will be skipped with a clear error message.
Two new columns have also been added to the import template. The first allows a project to be flagged as a Master Job by entering “Yes” or “No”, defaulting to No if left blank. The second allows a Master Job to be linked to the project being imported, accepting either a job number or a job ID. The system will validate that the Master Job belongs to the same brand, product, contract client, and finance profile as the project being imported. A row cannot have both fields populated at the same time — a project cannot be both a Master Job and have a Master Job assigned to it.
Error handling has also been improved. Any rows that fail validation are skipped without stopping the rest of the import, and a summary is displayed at the end showing how many rows were processed successfully, how many failed, and the reason for each failure. An updated template file with all new columns is available to download directly from the import page.
[#79804] Timesheet Amendment: Approved
The approval email sent to users when a timesheet amendment is approved has been updated to use the new Pronto email template, bringing it in line with the rest of the system’s email styling. The email will continue to include a button that takes the user directly to their timesheet page.
[#79803] Timesheet Amendment: Rejected
The rejection email sent to users when a timesheet amendment is declined has been updated to use the new Pronto email template, bringing it in line with the rest of the system’s email styling. The email will continue to include a button that takes the user directly to their timesheet page.
[#79802] Timesheet Amendment: Request
The request email sent to approvers when a timesheet amendment is submitted has been updated to use the new Pronto email template, bringing it in line with the rest of the system’s email styling. The email will continue to include a button that takes the approver directly to the amendment review screen.
[#79798] Enhancement: Add ‘Select all’ in the Finance Reports export modal
A “Select All” checkbox has been added to the export modal in both the Finance Detail Report and the Finance Summary Report, bringing them in line with the existing behaviour in the Timesheet report. This allows users to quickly check or uncheck all available columns at once when choosing what to include in their export.
[#79797] Enhancement: Add 1 day to date limit in Timesheet Report
The maximum date range allowed in the Timesheet Report has been extended from 365 to 366 days to account for leap years. Previously, selecting a full calendar year that happened to be a leap year would incorrectly trigger a validation error. The validation message has also been updated to reflect the new 366 day limit. This applies to both the Timesheet Date and Submitted Date filters across all relevant report tabs.
[#79746] BE: Set invoices.agresso_client_id when an invoice is credited / write off/ void when DIH is enabled
When voiding an invoice in German offices using DIH — whether it results in a void, credit, or write-off — the system was not correctly recording the client ID against the invoice. This caused the “Invoice To” column to appear blank in finance reports. This has been fixed and the client ID will now be correctly saved in all three scenarios, ensuring the field is populated as expected in reports.
[#80322] Email Notifications: Ziflow email notification
Logo in Ziflow email notifications updated from Havas to Pronto logo.
[#79482] Show workflow banner to finance document queued for submission
The workflow banner was disappearing from finance documents — estimates, POs, and invoices — once they reached a “Queued for Submission” status, leaving users without a clear visual indicator of where the document was in the process. The banner will now remain visible across three additional statuses: Queued for Submission, Ready to be Queued, and Submission Marked for Auto-Retry, displaying the same “Approved & Locked” banner as seen on fully approved documents.
[#79483] FE: Add a link to project finance profile & Amendments from the FINANCES tab
Quick access links for Finance Profile and Project Amendments have been added to the kebab menu on the Finance tab, so users no longer need to navigate back to the Summary tab or Project Details to reach them. The links are separated from the rest of the menu options with dividers to keep things tidy. The same permissions apply as elsewhere in the system — Finance Profile is visible to superusers and FM group members only, and Project Amendments will only appear for users who have been granted amendment access through their office settings.
[#80088] Enhancement: Improve the Master Job Dropdown
The Master Job dropdown has been improved across three areas of the system — the Project Wizard, the Finance Profile, and Project Amendments. Previously, the dropdown only showed the job title, making it difficult to search by job number, and search in general was unreliable. It will now display both the job number and title together, support searching by either, and show the most recently created jobs at the top of the list. The existing behaviour of only showing Master Jobs matching the same Brand and Product as the current project remains unchanged.
[#78555] BE: Update Admin Tool to Close Resource ID
When a user was moved from one office to another, their old resource ID in Agresso was being left open indefinitely because the system was simply unlinking the record rather than formally closing it. This has been fixed so that when a user is moved via the Agresso User Office Management tool, a closure request for the old resource ID is now automatically sent to Agresso, ensuring no resource IDs are left open after an office move.
[#75710] FE: Don’t delete approver group when changing to auto approve
When timesheet amendments were set to auto-approve, there was no fallback in place if the auto-approval failed. This left the amendment in a stuck state that nobody — including superusers — could access to reject or retry, requiring a cumbersome workaround through the office settings. The approver group field is now mandatory even when auto-approve is enabled, acting as a fallback for exactly this situation. Amendments will continue to auto-approve as normal, but members of the approver group will always retain access to view, reject, or retry an amendment should anything go wrong.
[#75272] Timesheet: Timesheet Email for Missing Time Approvers
The Missing Time Approvers email — sent to the Operations Group when timesheets are awaiting approval but have no assigned approver — has been updated to use the new Pronto email template. The sender address has also been updated to reflect the Pronto branding. The email’s functionality remains the same, with both call-to-action buttons continuing to link through to the Pending Approval Report.
FIXES & IMPROVEMENTS
[#80538] Disable public asset links for deleted assets
When a public link was shared for a file (such as a video) and that file was later deleted, anyone clicking the link would cause the system to crash rather than see a helpful message. This has now been fixed — the system will instead display a clear “Invalid link” message, so broken public links no longer cause an error and fail gracefully for the end user.
[#77760] Production: Project > Files > Manage File Noti: The counting on Notify does not match the number of user picked
The notification counter on the Files tab was not accurately reflecting the number of users selected to be notified, as it was incorrectly including the initially notified user in the count regardless of the current selection. This has been fixed and the counter will now only reflect the users actually selected at the time.
[#79238] Finance Document: Ellipsis button > “Star Project” option is blank when checking from finance document builders
A blank option was appearing in the dropdown menu within the Estimate, PO, and Invoice builders, which would show an error if clicked. This was caused by the “Star Project” option failing to display correctly in this context. The option has been removed from the dropdown in finance document builders, where it was not intended to appear.
[#79237] Fix: The New Mine: missing icons on the new Mine filters
Small icons — including the close (X) and star icons — were appearing as blank squares on filter labels in the New Mine’s advanced filters. This has been fixed and the icons will now display correctly.
[#79810] Fix: Summary chart data in the Finance Summary Report don’t match the report
An issue was discovered where the summary chart on the Finance Summary Report was showing all zeroes when a custom date range was applied, even though the data grid below it contained results. The two were pulling data differently, causing them to fall out of sync. This has been investigated and fixed — the chart will now correctly reflect the data shown in the grid when filtering by a custom date range, and exported data will also match what is displayed on screen.
[#80474] Enhancement: Project Passport page doesn’t use the new Upload Form
The file upload form on the Project Passport page has been updated to match the newer upload form already in use on the Project Files tab, bringing it in line with the rest of the project.
[#80374] Fix: The Mine: Didn’t reset URL after deleting asset
When deleting an asset directly from the Asset Detail Flyout in the Mine, the page URL was not updating after the deletion was complete. This left the deleted asset’s URL in the browser, meaning a page refresh would show an error stating the asset could not be found. The system will now automatically redirect back to the default Mine page after a successful deletion, so refreshing the page will no longer produce an error.
[#80356] Fix: Distorted utility banner when Agresso Project Owner has been suspended
When a project’s Agresso Project Owner account had been suspended, a warning banner would appear on the project’s Finance tab. However, this banner was overlapping and distorting the existing utility banner on pages such as Estimates, POs, and Invoices — though the Overview page was unaffected. This has been fixed and the two banners now display correctly alongside each other without any visual overlap or distortion.
[#80175] Fix: Investigate failed Job Submission Requests for “Imaging”
Submissions made through a specific briefing in the Job Builder were failing to process through to Workfront and, unlike other failures, were not even attempting to retry. This has been fixed and submissions made through this form will now process and send correctly.
[#79192] Fix: Login: Distorted checkmark
A visual issue on the login screen was causing the success checkmark and its label to appear distorted or hidden beneath the footer when scrolling immediately after logging in. This has been fixed and the login confirmation now displays correctly within the visible area of the screen.
2. UK / EU
FEATURES
IMPROVEMENTS
[#80348] Issue: Agresso Invoice Numbers not being stored
Agresso invoice numbers were not being saved against invoices in the system after syncing with Agresso, leaving the field blank. This has been fixed so that whenever a new invoice instruction is received from Agresso, the corresponding invoice number is now correctly recorded and stored against the invoice.
[#80484] TypeError array_filter expects array, string given in TaskRepository applyFilters
When filtering tasks by brand, brand category, or department with a single value selected, the system would crash due to the filter expecting a list of values rather than a single one. This has now been fixed — the system handles single value selections correctly, so filtering by any of these fields will work as expected regardless of how many options are selected.
3. TECH DEBT
[#80433] Remove log error [The JobGroup with jobid:xxx groupid:xxx does not exist]
Some unnecessary error logs were being generated in the monitoring system when removing a group from a job. These were false alarms — triggered by harmless scenarios such as a user double-clicking “Remove”, two users removing the same group at the same time, or the frontend being slightly out of sync. In all of these cases, the end result was already correct — the group was no longer on the job — so there was nothing actually wrong. These misleading logs have been removed to reduce noise in the monitoring system, while genuine errors will continue to be logged as normal.
[#80412] strcmp Passing null to parameter #1 of type string is deprecated in timesheet.inc.php 9359
A technical fix has been applied to the timesheet to ensure compatibility with a stricter version of PHP. A small piece of code responsible for checking the locked or unlocked status of a timesheet submission was not handling empty values correctly, which could cause issues in the background. This has been resolved, and the timesheet status will continue to display correctly as before.
[#80396] DateTime parameter #1 of type string is deprecated in utility.inc.php 2256
A technical fix has been applied to the timeline Gantt view to ensure compatibility with a newer version of PHP. A small piece of code responsible for calculating the duration of timeline items was not handling missing date values correctly, which could cause issues in the background. This has been resolved, and durations on the Gantt timeline will continue to display correctly as before.
[#80094] BE: Update to Timesheet Fixes Tool to add two new options
Two new options have been added to the Timesheet Fix tool to help the support team resolve common timesheet issues without needing direct database access.
The first allows support to mark timesheet records as Approved when the overall submission is approved but individual records have been left in a rejected or pending state. This situation can prevent projects from being closed, and the fix will only be permitted where the overall submission is confirmed as approved.
The second allows support to delete a TalentSpace PTO amendment using just the submission ID. This is particularly useful in cases where users have not amended their own timesheets and the window to do so has long passed, leaving support to clean these up manually.
[#79209] NR: Exception ‘TypeError’ with message ‘App\Models\Client::getAgressoClientBranch(): Return value must be of type array, null returned’
A recurring background error was occurring when loading certain project finance profiles where no matching Agresso branch could be found. Instead of handling this gracefully, the system was crashing with a 500 error. This has been fixed so that the page loads correctly in all cases, even when no Agresso branch data is present.
[#78817] NR: Exception ‘TypeError’ with message ‘Unsupported operand types: Illuminate\Support\Carbon ^ string’ in app/Services/JsonApi/ExportForResourceData.php:88
A recurring background error was occurring when creating a new project using a template that contained tasks with a start date but no end date. The system was attempting a calculation it couldn’t perform in this scenario, causing it to crash silently. This has been fixed and projects will now be created successfully regardless of whether template tasks have an end date defined.