1. All Regions
FEATURES
[#70289][#73831] BE: Update the Project Owner / Account Manager field in Bulk Amendments

We’ve enhanced the Bulk Amendments tool to support assigning Project Owners and Account Managers across multiple ledgers using updated alien user logic.
Previously, role changes could only happen within a single ledger. Now, users with a valid resource ID in a given ledger—even if it’s not their primary one—can be assigned in bulk.
To ensure accuracy, the process now starts by selecting the Ledger of the projects you want to update. The “To” user dropdown will then only show users valid for that ledger, and the project list will be filtered accordingly. If you’re updating projects across multiple ledgers, you’ll need to submit separate amendment requests for each.
[2094] Feature: Change Timesheet Compliance Rules

We’ve overhauled the Timesheet Reminder and Lockout system to simplify how compliance is tracked and improve the user experience. The previous logic—based on a complex rolling average—has been replaced with a grace-period-based approach, allowing offices to define clear reminder and lockout rules (e.g. 2 days to show a reminder, 5 days for lockout).
Key updates include:
- A new “Timesheet Compliance Start Date” ensures we only check from the earliest of the user’s start date, finance profile, or daily timesheet switch.
- A new “Enabled for Pulse Only” option allows the lockout modal to display in Pulse without transmitting data to the API.
- Clearer wording in the UI to help admins understand the settings.
- Updates to reminder and lockout emails so they reflect the new rules.
Full support for both Agresso and non-Agresso users, with detailed test cases across Daily and Weekly timesheet workflows.
This change addresses long-standing confusion among users and support teams, and creates a more predictable and transparent compliance process.
Feature: Missing Time Report

We’ve redesigned the Missing Time Report to improve performance, accuracy, and usability for all user types—whether they submit timesheets daily or weekly, and whether they’re using Agresso or not.
What’s Changed:
- Faster performance: The report now uses a synced database rather than recalculating data each time you view it.
- Expanded coverage: You can now view up to 12 months of missing timesheet data.
New Features:
- Detailed Export: Shows every missing entry by user and day.
- Summary Export: Displays the total missing hours per user across a selected period.

Who Appears in the Report:
- User who are required to submit timesheets
- Have defined start and end dates
- Have a non-zero minimum weekly hours value
- Belong to an office where the “Missing Timesheet” setting is enabled
How Missing Time Is Calculated:
- FT Daily Timesheet Users: Missing time is calculated day by day. Each missed day = minimum hours ÷ 5.
- Weekly/PT Daily Timesheet Users: Missing time is calculated weekly. If no submission that week = full weekly minimum hours counted as missing.
Feature: Timesheet Gap Report

We’ve released an MVP version of the “Time Submission Gaps” report. This report highlights all timesheets that are either missing or not yet submitted / approved in Pulse and therefore submitted to Agresso, providing clearer visibility into timesheet compliance across multiple agencies.

What’s included:
- Missing days where users have no timesheet record at all.
- Non-approved submissions, including statuses like Saved, Pending Approval, Partially Approved, and Rejected.
- Excludes records that are already approved and sent to Agresso.
- Covers a 12-month period, with filters for office and date range.
This MVP gives Agresso-linked office teams a dependable way to spot incomplete or missing timesheets. It’s especially useful when transferring a user to a new office, helping ensure they’re compliant in their current office before making the move.
Enhacements
[#67299] FE: Show activity dropdown in the correct case (upper / lowercase)
We have fixed a formatting issue where activity descriptions in the Estimate, PO, and Invoice dropdowns did not match the way they appear in Agresso. For example, descriptions like “ATL_Cinema” were being shown in mixed case instead of all caps as sent by Agresso. The dropdowns now correctly display the activity names exactly as provided by Agresso, ensuring consistency for users.
[#73429] Add user approver of magnitude code and description to history of brand
We’ve updated the Brand Approval workflow to ensure that when a Magnitude Code is confirmed, the system now records who confirmed it and when. This information will now appear in the Brand History, providing a clear audit trail for all magnitude approvals. Previously, this data was missing, making it difficult to track who submitted these changes.
[#73432] Upon submission of Magnitude Code/Description – notify user group
We’ve added a new email notification that is sent to the Magnitude Approver Group whenever a Magnitude Code and Description is confirmed.
The email includes key details about the Brand, Product, and Master Client, along with a direct link to view the request. This update ensures all relevant stakeholders are informed as soon as a Magnitude Code is finalised, improving visibility and communication during the approval process.
FIXES
[#72335] Resubmit: Cant process more than 24 hours a day error
We’ve fixed an issue where resubmitting timesheets from the Error Report triggered incorrect validation errors.
Previously, the system would wrongly count phantom time toward the total daily hours and check if the user was invited to the phantom job—causing errors like “Can’t process more than 24 hours a day.”
These checks have now been removed, and resubmitting a timesheet will follow the same business rules as a standard submission.
[#72828] Bug: Interagency Number not updating
We’ve added support for updating the Interagency Job Number (US) via Project Amendments. Previously, this field was not connected to Agresso, but it’s now required for teams like PoP.
You can now enter or update the Interagency Job Number through the Project Relations amendment flow, and once approved, the value will be correctly sent to Agresso (field ID 1610).
[#73321] Remove all formatting from templates
We’ve improved the downloadable templates in the Brand Clean-Up tool by removing the white background formatting and gridlines.
[#73555] Bug: The Mine: Failed to save Asset Purpose using Bulk-Edit function
We fixed a bug in The Mine where bulk-editing the Asset Purpose didn’t stick. If you changed it (for example, to “Internal”) and then tried to bulk-edit those same assets again, the field showed as “Not Supplied” instead of what you’d just set. That’s now sorted—the correct value will show when you go back in.
[#73578] Bug: Resource Scheduler: Bookings’ Tooltip disappear before user can access any links
We’ve fixed an issue in the Resource Scheduler where tooltips on bookings would disappear too quickly—making it impossible to click any links inside them. Now, the tooltip stays open long enough for users to interact with it properly, so links can be clicked without frustration.
[#73620] Bug: Project List > Job Finance Type doesn’t show correct values
A fix in the Job Finance Type column in the Project List. Values were incorrect in some cases.
[#73641] Asset Detail in Finance Workflow cannot be accessed from the Task Grid view
A fix has been applied to restore expected behaviour when interacting with finance approval tasks. Previously, clicking on these tasks did not open the Asset Detail flyout, preventing users from viewing document details or completing approvals. This affected the Project Tasks tab, Inbox Task Explorer, and Dashboard Task Widget. The issue is now resolved — clicking a task row reliably opens the flyout with document information and approval options, ensuring smooth workflow execution.
[#73759] bugfix: Latest payroll setting should be determined by effective_from_date field
We’ve fixed a bug in the Payroll Settings History logic that caused inconsistent results when fetching the latest payroll setting for a user.
The issue was due to the system using the created_at timestamp to determine the most recent record, instead of the correct field: effective_from_date. This caused test failures that appeared random but were actually linked to how quickly records were created.
We’ve now updated the query to use effective_from_date and adjusted the test to consistently expose and verify the issue.
[#73770] FE: Project Relations Page not loading
We’ve fixed an issue that was preventing the Project Relations Admin Page from loading. The problem was caused by a front-end package import error, which has now been resolved.
[#73937] Bug: Office Settings: Cannot disable Reassign Approval function
We’ve fixed an issue where the ‘Reassign’ button in financial document workflows (Estimate, PO, Invoice) was still visible and functional—even when the ‘Reassign Approval’ setting was disabled for the office. This has now been corrected. If the setting is turned off in the Office Settings, the Reassign option will no longer appear in the workflow screen, ensuring settings are respected as expected.
3. TECH DEBT
[#74076] Cannot access offset of type string on string JobListController.php 163
We’ve resolved an error in the Job List where accessing the page with certain filters (e.g. projectGroupType[]=18) caused a 500 Internal Server Error. This was due to a backend issue when processing filter values. The Job List now loads correctly with all valid filters applied.
[#74108] Fix: horizon SyncReviewDataFromZiflow job failed when users edit comment on Ziflow
We’ve fixed an error that caused the SyncReviewDataFromZiflow job to fail every time a user edited a comment in Ziflow. The issue was due to missing reviewer data being passed incorrectly, which led to a system crash. This has now been resolved—edited comments will sync correctly with Pulse, and the background job will complete as expected