What Got Shipped Today - 16/9/26 - Inductions bind to the project, manual entries get a register, every commercial register totals up
16 September 2026 Features Every manual entry on a project, in one place As an accounts user, I could only find a manual entry by drilling into the cost code it was posted against, one at a time, so I can now see everything posted on the project in a single list. Before. Manual entries disappeared into whichever cost code they were coded to. There was no way to review what had been entered this month, spot a miscode, or reconcile a project total against your own ledger without opening cost codes one by one. After. A Manual Entries view lists every posted entry on the project: date, description, payee, reference, source type (direct cost or manual journal), the full cost code allocation including split lines, amount, and who entered it and when. Sort and filter by cost code, source type, date range or entering user. Project total and per cost code totals sit at the foot. Voided entries stay visible, clearly marked, and out of the totals.Impact. The monthly review of manual costs stops being an archaeology exercise. Accounts can check a project's manual entries in one pass, and a miscoded entry is now something you find before the client does. Known limitations. This first view is read only. Editing and voiding is covered under Improvements below. Register a new drawing without leaving Upload Revisions As a document controller on a fresh project, I opened Upload Revisions and hit a mandatory Set picker with nothing in it, so I can now upload, match and register brand new documents in the one flow. Before. Upload Revisions opened on a Set picker whose only options came from documents already registered. On a new project with an empty register there were no options, so Continue never enabled and the flow was a dead end with no explanation. The same gate hid roughly 41 percent of documents already registered, because anything registered without a set belonged to no set and could never receive a bulk revision. After. The Set step is gone. The modal opens straight onto the match board listing every registered drawing, with set demoted to an optional filter (all sets, one set, or no set) that hides itself entirely on projects with no sets. A file already matched to a drawing stays on screen whatever the filter says, tagged as outside the filter, so a pending match can never be hidden from you. A new third step registers files at upload time with a metadata table, KAI extraction on demand, mandatory field validation, and a duplicate document number warning that offers one click to turn the file into a revision instead.Impact. Day one on a new project no longer requires registering documents somewhere else first. The register fills from the same place revisions land, and the documents stranded outside a set rejoin the bulk revision flow. Known limitations. KAI extraction runs per row or via extract all, not automatically. The Explorer bound new document mode stays available for cover letters and transmittals. Induction forms bind to a project, and the gate knows it As an HSEQ manager, binding a project's induction form assumed I had already configured that form by hand, and if I had not, workers completed the induction and still could not sign in with nothing on screen explaining why, so I can now bind a form and have the platform set it up correctly. Before. Binding an induction form to a project only recorded the binding. The form still needed the right category and a project identifier field whose value matched the sign in picker exactly. Miss either and the induction gate silently never matched. There was also no way to clear a binding, so a project bound once could never return to the default form. After. Binding a form in project settings configures it. A form with no category is placed in the Induction category, and a hidden project field is added carrying the exact project value taken from the site channel's own lookup. Binding a form already pinned to a different project is refused outright and names the project that owns it, so a live site cannot be broken by accident. A form that already carries a different category keeps it, and the panel warns you the gate will not see it. A new clear control returns a project to the default form without touching the site form. If provisioning fails, no binding is recorded at all. Alongside it, the induction QR code on the Site Inductions register became project aware. A project with its own induction form gets a code that opens that form directly. A project without one gets the workspace default with the project already filled in and locked. A binding that no longer resolves says so, rather than drawing a dead code, and the exported PNG or PDF carries the project name.Impact. A hospital refurbishment and a tavern fit out do not share a hazard profile, and now they do not share an induction form either. The gate at the front of each site points at the right questions, and setting that up is one selection rather than a sequence of settings nobody documented. Known limitations. Anyone who completed an induction before the form was provisioned will not satisfy the gate and needs to re-induct. The form picker does not filter by form type, so an unrelated form can still be selected. Forms bound before this shipped are not repaired automatically. Sign In QR codes carry the project As a site manager, the QR code at my gate was the same workspace wide link on every site, so I can now print a code that signs people in against this project and no other. Before. The Sign In code on the Site Sign On page did not change when you switched projects. A worker scanning it at the gate was handed a dropdown of every project the business runs and had to pick the right one. Attendance landed against whichever site they chose. After. The code is built per project. Scanning it opens the form with the site and project already filled in and not editable, using the exact value from the site channel's own project list rather than a composed string, so it always matches. A project that has not yet synced to the site channel says so plainly, instead of producing a code that looks fine and does nothing when scanned. The exported PNG or PDF carries the project name. Impact. Site attendance stops depending on a worker picking correctly from a long list in the rain. Print the code, put it on the gate, and the records land where they belong. Known limitations. The Sign Out code is not prefilled yet, so a worker can still sign out against the wrong project. Provisional sum drawdowns run through your delegation of authority As a commercial manager, anyone with access to a drawdown could approve it outright regardless of value, so I can now have drawdowns above someone's limit route to the person who actually holds that authority. Before. Approving a provisional sum drawdown was a direct action with no authority check behind it. Head contracts already ran through the delegation of authority engine, but the drawdown, which is the single point where the money moves, did not. After. Drawdown approval runs through the same delegation of authority engine as head contracts. A drawdown above the approver's limit raises an approval request to the right person instead of approving on the spot, and the money moving write only happens once that approval clears. Impact. The control gap closes at the exact point it mattered. Your DoA matrix now governs provisional sums the same way it governs everything else, which is what an auditor assumed was true all along. Provisional sum variations are marked as such As a quantity surveyor reconciling a final account, a variation born from a provisional sum overrun looked identical to a client requested change, so I can now tell them apart without opening every one. Before. When an allowance overran or was closed out, the platform raised a head contract variation automatically. Nothing on the register, the schedule of values, the claim row or the variation document flagged where it came from. Telling an allowance overrun apart from a genuine client change meant opening variations one at a time. After. Provisional sum born variations carry a visible marker in the register showing which allowance and which drawdown they came from, and the register filters to show only those. A short, consistent prefix is written into the generated description (PSO for overruns, PSC for close out credits) so the reference travels through schedule of values rows, claim lines, documents and exports. The variation number keeps its normal sequence, so existing references from claims, accounting and documents still hold. Impact. Final account reconciliation stops being a per variation investigation. Filter the register, see what the allowances actually cost against what was carried, and answer the question your client's QS is about to ask. Improvements Every commercial register has a totals row As a contract administrator, only the issued payment schedules register told me what it was worth, so I can now read the total off any commercial register without exporting it. Before. Progress claims, variations, purchase orders, subcontracts, invoices and the rest had no totals row. Wanting to know what a register added up to meant adding the column by hand or exporting to Excel to do it there. After. A totals row sits pinned to the foot of every head contract and subcontract register, above the pagination line, scrolling in step with the table. It totals the full filtered result set, not just the visible page, so search text, status and every column filter apply, and the record count in the label agrees with the showing line. Only additive money columns are summed. Cumulative, percentage, date and status columns show a dash rather than a number that would mean nothing. Hide or reorder a column and its total moves with it. Exports include the row.Impact. The number you need is at the bottom of the screen you are already on. Filter to one subcontractor, or one status, and the total follows the filter, which is what makes it worth trusting. The contract drawer got wider, and the claim modal got a maximise toggle As a contract administrator, the head contract drawer was too narrow to show a description and the percentage columns at once, so I can now see the schedule of values as it was meant to be read. Before. The drawer opened at a width the schedule of values preview overflowed by a clear margin, so a CA had to hide columns and hit expand on every open. Expand did not stick between opens, so the click was required every single time. On the new progress claim modal, a seventeen line schedule of values showed five or six lines, and the claim decision columns sat off the edge. After. The drawer opens at the wide width, and expand now goes to the full viewport. The description block is capped and its tags shortened, which is what let the four percentage columns fit: measured in the browser, the table now sits comfortably inside its box on a laptop screen with every column visible. The progress claim modal gained the maximise toggle, dropping both the width and the height cap, so a long schedule of values is readable in one pass. Impact. Claim assessment stops being a column hiding exercise. Open the drawer, read the schedule, make the call. Fix a manual entry after you have posted it As an accounts user, an entry posted to the wrong cost code simply stayed wrong, so I can now correct or void it. Before. Manual entries were final on posting. A wrong cost code, or a wrong amount, had no supported route back. After. Accounts users can edit or void a posted manual entry from the Budget Register. The change hits actuals immediately and is logged with the user and timestamp. Voided entries drop out of actuals totals rather than being deleted, so the audit trail survives. Users without an accounts role see manual entries read only. Impact. The correction takes a minute rather than a journal, and the record of what changed stays where an auditor can find it. Unassigned programme tasks surface in Lookahead As a project manager, the weekly report told me tasks were unscheduled but the programme never showed me which ones, so I can now find them and fix them myself. Before. Tasks with no valid work breakdown structure assignment were invisible across the programme views, while still counting as unscheduled in the weekly report. You could see that something was adrift and had no way to reach it. Every case needed someone on our side to intervene. After. The nested Lookahead view has an unassigned scheduling tasks bucket, and the underlying fetch was widened to catch tasks with no assignment at all as well as those with an invalid one. Impact. The gap between what the report says and what you can act on closes. No ticket required. Fixes Remaining in the Budget Register counts manual entries As a commercial manager, a manual entry recorded the cost but left Remaining untouched, so I can now trust that Remaining reflects money actually spent. Before. Posting a manual entry against a cost code moved actuals but not the Remaining column or the Remaining tile. Because manual entries sit behind no purchase order or subcontract, their cost was invisible to the calculation. The register overstated available budget by the full value of every manual entry, on every project. After. Remaining reflects money spent or committed whatever its source. A ten thousand dollar manual entry against a cost code reduces Remaining on that cost code by ten thousand dollars, and the tile follows the column. Actuals already sitting under a purchase order or subcontract are still counted once, inside Committed, so nothing is double counted and Committed keeps meaning commitments. Impact. The single number most people read off the Budget Register is now the right number. If you have been posting manual entries, expect Remaining to drop to the truth. Client payment schedule totals reconcile with the certified amount As a contract administrator, the payment schedule I had already sent a client did not add up to its own certified amount, so I can now hand it over without being asked to explain the gap. Before. On the generated client payment schedule, the header carried a certified amount that correctly included approved variations, and the approved variations table listed them. The breakdown table further down the same document carried a bare total covering only the original contract items, so it fell short of the document's own certified figure by exactly the value of the variations. Anyone cross checking found two numbers on one page that did not reconcile. The equivalent progress claim document had always done this properly. After. The breakdown section is brought up to the same standard as the progress claim document. Every total reads clearly as what it is, and the variation reference carries on the document. No total presents itself as the total while quietly excluding approved variation value that is certified and paid under the same claim. Impact. One less awkward call. The document defends itself. Known limitations. The equivalent display on the subcontractor issued payment schedules is tracked separately. The provisional sum register keeps the contract number As a commercial manager, doing anything to a provisional sum turned the head contract column into a long internal string, so I can now work through a register without half of it becoming unreadable. Before. The head contract column showed the proper contract number until you performed a lifecycle action in the session, such as attaching an allowance, editing scope, or creating, approving, declining or closing a drawdown. That row then switched to a raw internal identifier. Work through a register and you ended up with a half and half screen, rows you had touched showing gibberish, rows you had not showing the number, until a full page refresh. After. The head contract column, the drawdowns table and the drawer header keep showing the contract number throughout, with no reload after any lifecycle action. A raw internal id is never printed. Where nothing resolves, the column shows a dash. Impact. You can work through a provisional sum register in one sitting. The refresh habit can go. The approvals list stopped erroring As anyone waiting on an approval, the approvals list started failing outright for some workspaces, so I can now open it and see what is sitting with me. Before. A marker written onto an approval record whenever a background write back failed could not be rendered by the response encoder. One such marker permanently broke the page it sat on, and the errors climbed from a handful a day to over two hundred. The marker existed to make silent sync failures visible, and instead it broke the page that would have shown them. After. The response encoder renders any timestamp correctly wherever it sits and however deeply it is nested, so this class of failure cannot recur rather than being patched for one field. Affected workspaces recovered on deploy with no data fix needed, because the records themselves were always correct. Impact. Approvals opens. The underlying write back failures are real and are being chased separately. Spotted something that should work differently? The feedback portal is in the platform under Feedback, and every item raised there lands in front of the product team.
How do you feel about this update?
