Reading the renewal quote line by line
The licence question is the hardest one in an RPA estate to answer cleanly, and September 2025 produced two documents that help with it: UiPath's quarterly results and its FUSION announcements. A renewal quote arrives with a number on it and a date by which finance needs a decision, and the case for or against paying it sits in run histories and source code that nobody has read in a year or more. What follows is how we get from the quote to an answer.
A renewal quote for UiPath, Power Automate or Blue Prism arrives as a set of line items. We break it into the Orchestrator or Automation Cloud tenant, unattended robot runtimes, attended user licences, Studio author seats, Document Understanding page volumes, Test Manager and the support tier. The drivers differ by line: unattended runtime count tracks throughput, author seats track the number of people still building in Studio, and Document Understanding tracks pages processed. That split matters, because the negotiation happens line by line.
UiPath reported its second quarter fiscal 2026 results on 4 September 2025. Annual recurring revenue was $1.723 billion as at 31 July 2025, up 11 per cent year on year, with a dollar-based net retention rate of 108 per cent. We see that last figure misread more often than any other number in a vendor release. It means the prior-year customer base as a whole spent 8 per cent more, net of churn and downgrades. The account team is planning for growth, so expect them to resist a flat or reduced renewal and to propose an expansion path.
At its FUSION event on 30 September 2025 UiPath announced Maestro Case Management, Agent Builder, Screenplay, API Workflows and Unified Audit 2.0. None of those announcements sets out an entitlement boundary, so we ask UiPath in writing which of those components sit inside the current entitlement and which are chargeable, before the renewal conversation rather than during it.
Getting the source and the run history out
Everything after this needs the estate in front of you as files and data, because the gap between what people believe is running and what is actually running is usually wide. For UiPath we pull the .xaml workflow files, project.json, the global exception handler and any custom activity packages, out of Git or out of Studio for projects that were never source controlled. The September 2025 Studio release notes cover keeping or discarding uncommitted changes when switching Git branches, which helps when code is scattered across repositories. For Power Automate we export the unmanaged solution and read the flow definitions in the JSON. For Blue Prism we export the .bprelease XML.
Then the run history. The Orchestrator OData API exposes jobs, queues, queue items, assets, schedules and triggers. We query /odata/Jobs filtered on start time for the last twelve months, group by process, and split the state field across Successful, Faulted and Stopped. We query /odata/QueueItems for volumes and failure reasons. We read the triggers to separate scheduled processes from ones only ever launched by hand.
The output is a table with one row per process: run count, success rate, average duration, date of last successful run, systems touched and codebase size. We sort on the date of the last successful run first, and that column is where the surprises are. Processes that stopped running six or nine months ago turn up in most estates and go unreported, because the licence cost is the same whether they run or not.
Valuing the estate process by process
We value a process as the cost of doing the work without it, less the cost of keeping it running. The first half is run volume times manual handling time per run times a fully loaded hourly rate. The run volume comes from the job history rather than from the original business case, which holds a forecast made before the process ever ran. For handling time we ask the operations team directly.
The cost side is the licence share plus maintenance. Maintenance is measurable if you have a ticket system: count the incidents raised against each process over twelve months and the developer hours booked against them. Selector breakage after a vendor UI update, expired credentials and changed file formats account for most of what we find. Count the exception queues too, since items sitting in Failed status get reprocessed by hand, and that handling time is missing from the automation's own success reporting.
Some processes carry value that has nothing to do with hours saved, and this is where a purely financial ranking goes wrong. A reconciliation that runs at 3am so a cut-off is met, or a compliance extract with a full audit trail, is worth keeping for timing and evidence reasons. We score those separately, so a low time-saved score does not push them to the bottom of the ranking.
The four positions we take into the negotiation
With the register ranked, four positions are available. The first is to decommission the dead processes and renew at a reduced entitlement. Unattended runtimes are usually the largest line, and consolidating four half-used runtimes into two is a genuine reduction. The second is to renew on a shorter term with a rebuild program running underneath, so the next renewal starts from a lower entitlement. The third is to rebuild the top few processes on the vendor APIs and let the licence lapse. The fourth is to move the work onto a platform already covered by an existing Microsoft agreement.
The fourth position needs care about the meter. Moving off a seat-based RPA licence onto a consumption-metered platform means the annual cost has to be forecast from run volumes, which the register already holds. Copilot Studio bills against prepaid packs and a pay-as-you-go rate. On 1 September 2025 Microsoft changed the billing currency for Copilot Studio agents from messages to Copilot Credits, with no change to the quantity per prepaid pack or to the pay-as-you-go rate. That change reached us reported as a price rise, and the record says the pack quantity and the rate both stayed where they were. It is worth checking the record yourself when a change of billing unit gets reported as a price rise.
A rebuild uses the same components as any other integration project. For a process that reads invoices out of a shared mailbox and posts them into a finance system, that is a Python service calling the Microsoft Graph API for the mailbox and the finance vendor's REST API for the posting, with a queue table, an idempotency key per source message, retries with backoff and structured logs for every run. A language model handles the step where the document has to be read and its fields identified. Steps with a defined correct answer we write in Python and cover with unit tests. UiPath's API Workflows, announced on 30 September 2025, builds automations against APIs alongside the UI-driven robots.
OpenAI published GDPval on 25 September 2025, an evaluation of 1,320 tasks across 44 occupations in nine GDP-dominant sectors of the United States economy, written by professionals averaging fourteen years of experience. Frontier models approached expert quality on a substantial fraction of those tasks. We read that as support for a narrow claim, since none of those tasks is the specific invoice process in the estate being valued, and we would be wary of anyone offering it as evidence that your process will work. We plan the rebuild on that basis. The model does the reading and the field identification, and every step with a defined correct answer gets a deterministic check in Python around it.
What we check in the exit terms
We read the contract terms: the notice period for non-renewal, which may already have passed; whether entitlements are coterminous; whether unattended runtimes are subscription or perpetual with maintenance; and what the support tier covers. We ask the vendor in writing what happens on the day the licence lapses. Expect the answer to cover when robots stop accepting jobs, what changes about Orchestrator access, and how long tenant data is retained after that.
Handle the technical exit in parallel. We export the queue history, asset values, schedules and the audit log before anything expires, and rotate the credentials held in the credential store. Keep the .xaml in Git even for processes you decommission, because the .xaml records the exact selectors, queue names and system calls the process used, and no separate document in the estate is likely to match it.
Then run a decommission dry run on the lowest-value processes. Disable the triggers, leave the code in place, and watch for a month. Record anything that gets raised during that month against the process it came from, so the register carries who missed it and why. Processes with nothing recorded against them at the end of the month can be switched off permanently. Time the dry run so it finishes before the notice date recorded in the contract.
Two numbers stay open at the end of that exercise. What the components announced at FUSION cost once they are in use does not follow from the announcements, since they do not set out the entitlement boundary, so it has to come from the vendor in writing. The other is the annual cost of running a rebuilt process on consumption metering. The whole decision turns on that forecast, and it stays the least settled figure in the exercise until a rebuilt process has run a full year against real volumes.