RPA and process automation standards
Criteria verified as of August 2026. Re-verify on the web before committing to anything (§8).
1. Scope and triggers
Applies to automating a business process end to end: deciding what to automate it with,
building the robot or the flow, giving it an identity and credentials, orchestrating it, making it
resilient to partial failure, watching it and governing it for the years it will keep running.
Triggers: "automate this process", "the system has no API", UiPath Studio .xaml,
Orchestrator, queues and assets, Automation Anywhere Control Room, SS&C Blue Prism, digital worker,
Power Automate Desktop, desktop flow, machine registration, attended and unattended bot,
Robot Framework .robot, Playwright or Selenium driving a real application (not a test),
3270/5250 emulator, Citrix session, OCR over a screen, "the robot broke because they changed
the screen", work queue, retry, "the process was left half done", robot inventory,
"whose robot is this?", Temporal, Camunda, Airflow, Windmill, n8n.
Hard rule that orders the whole document: if there is an API, RPA is the last option, not the first.
RPA mimics a person in front of a user interface; API integration speaks the contract the
system publishes. The first breaks when somebody moves a button —and that somebody is not you—; the
second breaks when the vendor changes the contract, which is an announced, versioned and
negotiable event. No tool compensates for that asymmetry.
RPA is legitimate, and only, when at least one of these holds and which one is documented:
- The system has no API and will not have one (closed product, mainframe, desktop application
with no integration).
- The vendor has an API but does not open it, or charges a multiple of the robot's cost for it.
- The cost of integrating is disproportionate to the life of the process: a process that disappears
in 12 months because of an already planned migration.
- An explicit temporary bridge, with a written retirement date, while the real integration
is being built.
Outside those four cases, a robot is technical debt on the payroll: you have bought the fragility
without any of the advantages.
Second thesis, the one that causes the real incidents: the dangerous state is not the robot that is down, it is the
half-executed process. A robot that fails at step 7 of 12 leaves an invoice recorded but not
posted, an order created but not confirmed, a payment started but not reconciled. The outage is visible; the
inconsistent state is not. The whole of §3.3 exists because of this.
Not applicable: see lowcode-governance-standards (direct sister with a
sharp boundary, because Power Automate shows up in both: hers the governance of the
low-code platform —application and flow catalogue, environments and their lifecycle (ALM), citizen
developers and their enablement, connector data loss prevention policies, shadow
IT, the platform licensing model, who may create what—; ours the robot and its
credential: that the automation drives a user interface, the non-human identity with
which it does so, the vault it takes the password from, the work queue, the idempotent retry, the
recovery of the half-done process and the SLA of the automated process. A cloud flow calling a
connector is platform governance; a desktop flow that clicks buttons with somebody's credentials
is ours), api-design-standards (the correct alternative: contract, versioning,
pagination, idempotency and compatibility of the integration you should be building instead
of the robot), identity-access-management-standards (IdP design, the lifecycle of the
non-human identity, RBAC and access review are hers; here the requirement that the robot has its own
identity and what gets recorded of what it does), secrets-management-standards (the vault, the rotation and
the issuance of ephemeral credentials are hers; here the rule that the robot never stores the
password and what happens when rotation breaks the robot), ai-agents-standards (the agentic
loop, tool design, the iteration limit, human approval and the OWASP ASI
risks are hers; see §7.3: an LLM that clicks buttons inherits all the problems of this skill
and adds non-determinism), ai-agent-workflow-standards (coding agents in the team, not
business robots), testing-qa-standards (Playwright, Selenium and Robot Framework as a testing
tool are hers; here the same tools used to operate a system in production,
which is a different use with different risks), data-engineering-standards and
streaming-cdc-standards (if the process is moving and transforming data, the answer is a pipeline,
not a robot), observability-standards (telemetry platform; here what instruments an automated
process), incident-management-standards and itsm-itil-standards (on-call, escalation, change and
CMDB; here the robot as a service entering those processes), grc-compliance-standards (SoA,
control and audit; here the technical traceability that makes auditing the robot possible),
privacy-engineering-standards (the robot sees screens with personal data and takes screenshots:
minimisation, retention and processing are hers), appsec-standards (agnostic vulnerability
classes), python-standards / powershell-standards (very often the honest answer is a
40-line script, and its quality is governed by them), git-workflow-standards (versioning of the
robot, which is indeed mandatory §4), cicd-standards (deploying the robot across environments).
2. Default decisions / Toolchain
Verify the latest version, licence and pricing model on the web before pinning them (§8).
2.1 The decision ladder, top down
You pick the first one that solves the problem. Going down a rung requires justifying in writing why
the previous one fails.
- Do not automate: remove the step. Many processes are leftovers of a system that no longer exists.
Automating a bad process produces a bad process, faster.
- Configure the system so it does what the person does (rule, native workflow, scheduled
report).
- API / event / webhook integration between the systems involved.
- Database or exchange file, if the vendor officially supports it.
- Workflow engine with coded activities (Temporal, Camunda, Airflow) to orchestrate 3 and
4 when the process is long, has states and needs durability.
- RPA, with one of the four justifications from §1 and a review date.
- A person with a checklist, if the volume does not justify any of the above. It is a valid
answer and it is discarded far too early.
2.2 Tools
| Tool |
Licence / cost model |
When |
| Power Automate Desktop |
Commercial, by subscription. As of Aug 2026, list prices: Premium $15 user/month (attended RPA), Process $150 bot/month (unattended RPA), Hosted Process $215 bot/month (includes hosted VM) |
Microsoft shop with Entra ID and Power Platform already running. The jump from attended to unattended multiplies the cost tenfold: that is the economic decision, not the technical one |
| UiPath |
Commercial. Basic entry tier published from ~$25/month with 2 robots; the rest is "contact sales". Units: Basic/Plus/Pro users and Unattended robots |
Large deployments with Orchestrator, queues and Credential Store. The orchestrator's maturity is its real advantage |
| Automation Anywhere |
Commercial, per bot/user. Not verifiable on the public web from this document (§8) |
Alternative in the same category |
| SS&C Blue Prism |
Commercial, historically per digital worker. Not verifiable from this document (§8) |
Heavily regulated environments with strong central control |
| Robot Framework |
Apache-2.0 (repository LICENSE.txt) |
Keyword-driven automation, readable by the business, and above all testing. As production RPA it requires you to build orchestration, queues and vault yourself |
| Playwright |
Apache-2.0 (repository LICENSE) |
Driving a browser reliably. The best technical option when the target system is web: robust selectors, auto-waiting, traces. No orchestrator: combine with 5 |
| Temporal |
MIT (repository LICENSE) — managed service separate |
Long-running processes with execution durability, retries and compensations. The process state is the code |
| Camunda 8 |
Camunda License 1.0 — source-available, not open source: "If Your Use of the Software does not comply with the terms and conditions described in this License, You must purchase a commercial license" |
Processes the business must see and model (BPMN), with human tasks |
| Apache Airflow |
Apache-2.0 (LICENSE) |
Scheduled batches with dependencies between tasks. It is not a business process engine and has no human tasks |
2.3 Workflow engine ≠ RPA
They are constantly confused and they do not compete:
- RPA = the hand that operates an interface that does not belong to you. Fragile by construction.
- Workflow engine = the brain that knows which step the process is on, retries, compensates,
waits for a person and survives a restart. It touches no screen.
- They are used together: the engine orchestrates and the robot is one of its activities, the most fragile one, with
its own timeout and compensation. A robot that orchestrates other robots is a home-made
workflow engine, badly built and without durability — that is the most common antipattern of the domain.
- Differences that decide: Temporal gives execution durability (the process survives the
worker restart without writing state by hand); Camunda gives a BPMN model visible to the business and
human tasks; Airflow gives batch scheduling with a dependency graph. Choosing Airflow
for a business process with human waits is a category error.
3. Structure and conventions
3.1 The robot as a system, not as a recording
- Every robot lives in version control and is deployed by pipeline across environments
(
git-workflow-standards, cicd-standards). A robot that only exists in the orchestrator is a
robot that cannot be reviewed, reverted or audited.
- No record and replay. Recording produces selectors by coordinate and by index, which
is exactly what breaks. Selectors by stable identifier, by role or by anchored
text; never by on-screen position, never by table index, never by pixel capture
if another route exists.
- Configuration outside the robot: URLs, paths, thresholds, mailboxes. A robot with the environment
embedded cannot be tested in pre-production.
- Separation by layers: (a) connectors that talk to each system, (b) business rules,
(c) orchestration. A screen change must touch only (a). Without this separation, every vendor
change forces you to re-read the whole process.
- OCR and computer vision are the last resort, with an explicit confidence threshold and rejection
to an exception queue below it. OCR without a threshold invents figures silently, and that is the
worst possible property in a financial process.
3.2 Work queues
The unit of work is the queue item, not "the robot run". Looping over
an in-memory list makes partial retry and observability impossible.
- Each item has a unique business identifier (invoice number, order number), an explicit
state (
pending/in progress/done/business exception/system exception),
an attempt counter and a trace.
- Distinguish a business exception from a system exception. The first (the customer does not exist, the
document is missing) is not retried: it goes to human review. The second (the screen did not respond) is
retried with exponential backoff and a maximum. Confusing them produces robots that retry 200
times something that will never work, or that discard valid work.
- Retry limit and an explicit final destination (dead queue with an owner), never infinite
retry.
- Mandatory idempotency: before creating anything, check whether it already exists by its business key.
A retry cannot duplicate a payment, an order or a ledger entry. If the target system accepts an
idempotency key, it is used; if not, you query before writing.
3.3 The half-executed process
This is a design requirement, not an improvement:
- A checkpoint after every step with an external effect, persisted outside the robot.
- A compensation defined for every reversible step and an explicit boundary for the irreversible ones:
there are steps that cannot be undone (an email sent, a payment issued) and the design must
concentrate them at the end and behind full validation.
- Recovery by resumption, not by full re-execution: on start-up, the robot queries the
real state of the target system and decides, instead of assuming it starts from scratch.
- Clean shutdown: on a stop signal or a maintenance window, the robot finishes the item
in progress and does not take another. Killing the process midway through an item is how the inconsistent
states nobody finds until the accounting close get generated.
- A global stop switch reachable without deploying anything, and tested. When a robot
starts doing damage, the time to stop it is the metric that matters.
3.4 Execution environment
- The unattended robot runs on its own machine or session, dedicated, not on anybody's
laptop. Microsoft's documentation says it bluntly: before registering a machine to
run flows from the cloud, "ensure the machine is secured and the machine's admins are
trusted", and when creating a connection "you allow Power Automate to create a Windows session on your
machine to run your desktop flows. Make sure you trust co-owners of your flows before using your
connection in a flow." Operational translation: whoever administers that machine or co-owns that flow
has, de facto, the robot's permissions.
- A machine rebuildable from code (image + configuration), because it is going to get corrupted.
- Attended versus unattended is not just price: the attended one runs with the session and permissions
of a person who is present and therefore inherits their identity —it is the fast lane to the problem in §5.1—;
the unattended one requires its own identity and is therefore the only correct way to operate in production.
4. Quality and testing
Gates in order of increasing cost:
- Code review of the robot, with the same rules as any other code
(
code-review-standards). A .xaml is code.
- The tool's static analysis (UiPath analysers,
robocop for Robot Framework):
fragile selectors, cleartext credentials, deprecated activities → they break the build.
- Tests of the business rules isolated from the interface. If the logic can only be tested by
clicking buttons, the architecture in §3.1 is wrong.
- A pre-production environment with realistic data and a full run of the process. FORBIDDEN
to test in production "because there is no other environment": if the target system has no test
environment, that is a project risk to be escalated, not an excuse.
- Injected failure test: kill the robot midway through an item, cut the network, return an
unexpected screen, expire the session. Verify that the state is left consistent and resumable.
This is the test that tells a serious robot from a recording.
- Credential rotation test: rotate the secret and check that the robot carries on. Without this
test, rotation ends up being disabled "because it breaks the robots", and that is where you lose the game.
- Interface-change resilience test: at least a periodic run against the most recent version
of the target system, and a subscription to its release notes — which is the only advance warning
you are going to get.
5. Stack security
5.1 The original sin: the robot's credential
The structural failure of the domain is a robot running with a real person's account,
usually the analyst who built it, with their full permissions, with no expiry and with no way
to tell in the log what the person did and what the robot did. When that person changes
job or leaves, either the robot disappears or somebody "inherits" a ghost account. It is, moreover,
the direct route to undetectable fraud: the target system's audit log says it was done by
Juan.
Hard rules:
- Its own identity per robot and per process. A named service account (
svc-rpa-<process>),
not generic, not shared between robots, not a person's. Not even shared between two
different processes of the same robot: if they share, you cannot withdraw permissions from one without breaking the
other.
- Real least privilege: the process's permissions, not the analyst's. And periodic review
like any other identity (
identity-access-management-standards).
- The password lives in the vault, not in the robot nor in the orchestrator in cleartext: UiPath's
Credential Store, Azure Key Vault, HashiCorp Vault, CyberArk. Ephemeral credentials or automatic
rotation whenever the target system supports it; if it does not, scheduled rotation and
documented as an accepted risk.
- The robot cannot have interactive MFA — that is its technical limitation and it is not solved
by disabling MFA for the whole organisation nor by "remembering the device". It is solved with
non-interactive authentication (certificate, managed key, workload identity) or it is
documented as a risk with compensations (network isolation, time window, amount limits).
- Traceability: every robot action links
process id + queue item id + robot version + who launched it. Auditing an automated process without that link is impossible.
- Segregation of duties: whoever builds the robot does not approve its deployment to production nor
administer its credential. In financial processes this is control, not bureaucracy
(
grc-compliance-standards).
5.2 The robot's surface
- The robot's machine is a production system with privileged access to business systems:
it is hardened, patched and monitored as such. FORBIDDEN to use it as anybody's desktop or
to give it free browsing.
- Screenshots and logs with personal data: the robot sees payslips, records and
accounts. Screenshots only on error, with short retention, encrypted and with restricted access
(
privacy-engineering-standards).
- Untrusted input: the data the robot reads from emails, PDFs or screens is third-party
input. It is validated before being written anywhere, and never interpolated into a command,
a query or a formula.
- Action limits: maximum amount, maximum number of items per run, allowed time
window. A robot with no ceiling is an amplification of errors at machine speed.
6. Performance and operability
- The SLA belongs to the business process, not to the robot. "The robot was up 99 %" says nothing;
what is measured is items completed within the committed deadline.
- Minimum metrics per process: items processed, business exception rate and system
exception rate separately, time per item, age of the oldest item in the queue, and
backlog — which is the early signal that something is wrong.
- Alerts on business symptoms: "the queue is growing", "zero items processed in the
expected window", "the exception rate exceeds the threshold". Not on "the process is not responding".
- Suspicious silence: a scheduled robot that does not run generates no errors. Alerting on
absence (dead man's switch) is mandatory; without it, a stopped robot goes unnoticed for weeks.
- Fallback to the manual process: for every critical automated process there is a written manual
procedure and an estimate of how many people it takes. If automating removed the capacity to
do it by hand and the robot goes down at month-end close, the problem is the business's, not IT's.
- Real cost per process: bot licence, machine, maintenance and the human time spent
managing the exception queue, which is what nobody adds up. A process with 30 % exceptions is not
automated.
7. Long-term sustainability
7.1 Governance: the orphaned robot
A robot with no business owner keeps moving money. It does not stop by itself, it does not warn and it does not appear in
any application inventory. Requirements for it to exist:
- A central robot inventory with: process, systems it touches, named business owner,
technical owner, identity it uses, permissions, criticality, date of last review and expiry
date.
- Expiry by default: every robot is reviewed at least annually; if nobody claims it, it is
switched off (with a grace period and notice). It is the only known way to avoid accumulation.
- Registration in the CMDB and in the change process (
itsm-itil-standards): a change to a system
a robot depends on must be able to identify that robot before the change.
- Exit plan: for each robot, the condition under which it is replaced by a real integration and
who watches for it. Without this, the "temporary bridge" of justification 4 in §1 is permanent.
7.2 Prohibitions
- ❌ FORBIDDEN to build a robot against a system that does expose an API, without written
and approved justification.
- ❌ FORBIDDEN for a robot to run with a natural person's account.
- ❌ FORBIDDEN to share one identity between several robots or processes.
- ❌ FORBIDDEN to store credentials in the robot, in a file, in the repository or in the
orchestrator in cleartext.
- ❌ FORBIDDEN to disable an organisation's MFA, or to exclude real users from MFA, "so that
the robot works".
- ❌ FORBIDDEN to record and replay, and forbidden are selectors by coordinate, by positional
index or by pixel comparison when an alternative exists.
- ❌ FORBIDDEN a robot that is not in version control.
- ❌ FORBIDDEN to deploy and test directly in production.
- ❌ FORBIDDEN a step with an external effect without a prior idempotency check.
- ❌ FORBIDDEN to retry a business exception, and forbidden is retry without a maximum or a
final destination.
- ❌ FORBIDDEN a process without a tested stop switch.
- ❌ FORBIDDEN a robot in production without a named business owner or a review date.
- ❌ FORBIDDEN to use the robot's machine as a workstation or to give it free browsing.
- ❌ FORBIDDEN to capture screens with personal data outside an error, without encryption and without
bounded retention.
- ❌ FORBIDDEN to justify an RPA programme with the vendor's FTE saving figures. Figures
of the "RPA saves X % of FTE" kind are marketing material with no published methodology. If
the investment must be justified, you measure the specific process before and after, counting the exception
queue and the maintenance; if it has not been measured, you say it has not been measured.
- ❌ FORBIDDEN to call "automated" a process whose percentage of manual exceptions is not
published.
7.3 When the robot is an LLM
An agent that "uses the computer" (clicks buttons, reads screens) is RPA, and therefore inherits everything
above: its own identity, vault, least privilege, queue, idempotency, limits, traceability,
stop switch. And it adds two problems classic RPA does not have:
- Non-determinism: the same screen can produce two different actions. Everything that in classic
RPA is tested once must be tested statistically here
(
llm-evaluation-standards).
- Indirect prompt injection: the text on the screen the agent reads is the attacker's
input. An email, a PDF or a form field can contain instructions. With
business credentials and access to transactional systems, this is the full lethal trifecta.
Operational consequence, not philosophical: mandatory human approval before any
irreversible action or any action with economic impact, without exception, and amount and volume limits enforced
outside the agent. The design of the loop, its caps and its sandbox belong to ai-agents-standards; that
it also complies with what is here is not optional.
8. Mandatory web verification
- Pricing models, which change and are half the decision: the official pricing page of
Power Automate (as of Aug 2026, list: Premium $15 user/month, Process $150 bot/month, Hosted
Process $215 bot/month), of UiPath (Basic from ~$25/month with 2 robots; the rest "contact
sales"). Declared gaps: neither the pricing model nor the licensing terms
of Automation Anywhere or SS&C Blue Prism could be obtained from public sources (one returned 404 and the other
did not resolve). Before comparing them, demand the offer in writing from the vendor and verify whether the
price is per concurrent robot, per process or per run — the difference decides the TCO.
- Licences read raw, not by the GitHub label: Robot Framework Apache-2.0
(
LICENSE.txt), Playwright Apache-2.0 (LICENSE), Temporal MIT (LICENSE), Airflow
Apache-2.0 (LICENSE), and Camunda: Camunda License 1.0, source-available and not OSI —
re-read it before assuming anything, because it conditions use in a product.
- Version and support of the chosen RPA tool, and its compatibility matrix with the
version of the target system (browser, ERP, emulator). It is the number one cause of breakage after
an update.
- Release notes of the target system: subscription mandatory; it is the only advance warning that
the interface is going to change.
- CVEs of the orchestrator and of the robot runtime: they are systems with business credentials, not
desktop tools.
- The current state of models' "computer use" capabilities and of their safety guidance
before proposing an agent for a transactional process.
If the web contradicts this document, the web wins — flag the discrepancy.
1---2name: rpa-workflow-automation-standards3description: Automating a business process with a robot that drives a user interface, and knowing when not to. Use when deciding between RPA and an API integration, when a screen-scraping or UI-driving automation is proposed against an ERP, a mainframe emulator, a legacy web app or a Citrix session, when building or reviewing robots in UiPath Studio (.xaml projects, Orchestrator queues, assets and Credential Stores), Automation Anywhere, SS&C Blue Prism, Power Automate Desktop (desktop flows, machine registration, attended versus unattended bots, Power Automate Premium/Process/Hosted Process licensing per bot), Robot Framework (.robot suites, SeleniumLibrary, Browser library) or Playwright driving a real application, when the robot needs an identity and credentials of its own instead of a named employee's account, when designing work queues, idempotent retries, partial-failure recovery and the half-completed transaction, when setting SLA, monitoring and alerting for an unattended process, when inventorying robots and find4---56# RPA and process automation standards78Criteria verified as of **August 2026**. Re-verify on the web before committing to anything (§8).910## 1. Scope and triggers1112Applies to **automating a business process end to end**: deciding what to automate it with,13building the robot or the flow, giving it an identity and credentials, orchestrating it, making it14resilient to partial failure, watching it and **governing it for the years it will keep running**.1516Triggers: "automate this process", "the system has no API", UiPath Studio `.xaml`,17Orchestrator, queues and *assets*, Automation Anywhere Control Room, SS&C Blue Prism, *digital worker*,18Power Automate Desktop, *desktop flow*, machine registration, attended and unattended bot,19Robot Framework `.robot`, Playwright or Selenium driving a real application (not a test),203270/5250 emulator, Citrix session, OCR over a screen, "the robot broke because they changed21the screen", work queue, retry, "the process was left half done", robot inventory,22"whose robot is this?", Temporal, Camunda, Airflow, Windmill, n8n.2324**Hard rule that orders the whole document: if there is an API, RPA is the last option, not the first.**25RPA mimics a person in front of a user interface; API integration speaks the contract the26system publishes. The first breaks when somebody moves a button —and that somebody is not you—; the27second breaks when the vendor changes the contract, which is an announced, versioned and28negotiable event. **No tool compensates for that asymmetry.**2930**RPA is legitimate, and only, when at least one of these holds and which one is documented:**31321. **The system has no API** and will not have one (closed product, mainframe, desktop application33 with no integration).342. **The vendor has an API but does not open it**, or charges a multiple of the robot's cost for it.353. **The cost of integrating is disproportionate to the life of the process**: a process that disappears36 in 12 months because of an already planned migration.374. **An explicit temporary bridge**, with a written retirement date, while the real integration38 is being built.3940Outside those four cases, a robot is **technical debt on the payroll**: you have bought the fragility41without any of the advantages.4243**Second thesis, the one that causes the real incidents: the dangerous state is not the robot that is down, it is the44half-executed process.** A robot that fails at step 7 of 12 leaves an invoice recorded but not45posted, an order created but not confirmed, a payment started but not reconciled. The outage is visible; the46inconsistent state is not. The whole of §3.3 exists because of this.4748**Not applicable**: see `lowcode-governance-standards` (direct sister with a49sharp boundary, because Power Automate shows up in both: **hers the governance of the50low-code platform** —application and flow catalogue, environments and their lifecycle (ALM), *citizen51developers* and their enablement, connector data loss prevention policies, *shadow52IT*, the platform licensing model, who may create what—; **ours the robot and its53credential**: that the automation drives a user interface, the non-human identity with54which it does so, the vault it takes the password from, the work queue, the idempotent retry, the55recovery of the half-done process and the SLA of the automated process. A *cloud flow* calling a56connector is platform governance; a *desktop flow* that clicks buttons with somebody's credentials57is ours), `api-design-standards` (**the correct alternative**: contract, versioning,58pagination, idempotency and compatibility of the integration you should be building instead59of the robot), `identity-access-management-standards` (**IdP design, the lifecycle of the60non-human identity, RBAC and access review are hers**; here the requirement that the robot has its own61identity and what gets recorded of what it does), `secrets-management-standards` (**the vault, the rotation and62the issuance of ephemeral credentials are hers**; here the rule that the robot never stores the63password and what happens when rotation breaks the robot), `ai-agents-standards` (**the agentic64loop, tool design, the iteration limit, human approval and the OWASP ASI65risks are hers**; see §7.3: an LLM that clicks buttons inherits *all* the problems of this skill66and adds non-determinism), `ai-agent-workflow-standards` (coding agents in the team, not67business robots), `testing-qa-standards` (**Playwright, Selenium and Robot Framework as a *testing*68tool are hers**; here the same tools used to **operate** a system in production,69which is a different use with different risks), `data-engineering-standards` and70`streaming-cdc-standards` (**if the process is moving and transforming data, the answer is a pipeline,71not a robot**), `observability-standards` (telemetry platform; here what instruments an automated72process), `incident-management-standards` and `itsm-itil-standards` (on-call, escalation, change and73CMDB; here the robot as a service entering those processes), `grc-compliance-standards` (SoA,74control and audit; here the technical traceability that makes auditing the robot possible),75`privacy-engineering-standards` (**the robot sees screens with personal data and takes screenshots**:76minimisation, retention and processing are hers), `appsec-standards` (agnostic vulnerability77classes), `python-standards` / `powershell-standards` (**very often the honest answer is a7840-line script**, and its quality is governed by them), `git-workflow-standards` (versioning of the79robot, which is indeed mandatory §4), `cicd-standards` (deploying the robot across environments).8081## 2. Default decisions / Toolchain8283> Verify the latest version, licence and pricing model on the web before pinning them (§8).8485### 2.1 The decision ladder, top down8687You pick **the first one that solves the problem**. Going down a rung requires justifying in writing why88the previous one fails.89901. **Do not automate**: remove the step. Many processes are leftovers of a system that no longer exists.91 Automating a bad process produces a bad process, faster.922. **Configure the system** so it does what the person does (rule, native *workflow*, scheduled93 report).943. **API / event / webhook integration** between the systems involved.954. **Database or exchange file**, if the vendor officially supports it.965. **Workflow engine** with coded activities (Temporal, Camunda, Airflow) to orchestrate 3 and97 4 when the process is long, has states and needs durability.986. **RPA**, with one of the four justifications from §1 and a **review date**.997. **A person with a checklist**, if the volume does not justify any of the above. It is a valid100 answer and it is discarded far too early.101102### 2.2 Tools103104| Tool | Licence / cost model | When |105|---|---|---|106| **Power Automate Desktop** | Commercial, by subscription. As of Aug 2026, list prices: **Premium $15 user/month** (*attended* RPA), **Process $150 bot/month** (*unattended* RPA), **Hosted Process $215 bot/month** (includes hosted VM) | Microsoft shop with Entra ID and Power Platform already running. **The jump from attended to unattended multiplies the cost tenfold: that is the economic decision, not the technical one** |107| **UiPath** | Commercial. *Basic* entry tier published from ~**$25/month** with **2 robots**; the rest is "contact sales". Units: *Basic/Plus/Pro* users and *Unattended* robots | Large deployments with Orchestrator, queues and *Credential Store*. The orchestrator's maturity is its real advantage |108| **Automation Anywhere** | Commercial, per bot/user. **Not verifiable on the public web from this document** (§8) | Alternative in the same category |109| **SS&C Blue Prism** | Commercial, historically per *digital worker*. **Not verifiable from this document** (§8) | Heavily regulated environments with strong central control |110| **Robot Framework** | **Apache-2.0** (repository `LICENSE.txt`) | Keyword-driven automation, readable by the business, and above all **testing**. As production RPA it requires you to build orchestration, queues and vault yourself |111| **Playwright** | **Apache-2.0** (repository `LICENSE`) | Driving a browser reliably. **The best technical option when the target system is web**: robust selectors, auto-waiting, traces. No orchestrator: combine with 5 |112| **Temporal** | **MIT** (repository `LICENSE`) — managed service separate | Long-running processes with **execution durability**, retries and compensations. The process state **is** the code |113| **Camunda 8** | **Camunda License 1.0** — *source-available*, **not open source**: *"If Your Use of the Software does not comply with the terms and conditions described in this License, You must purchase a commercial license"* | Processes the business must **see and model** (BPMN), with human tasks |114| **Apache Airflow** | **Apache-2.0** (`LICENSE`) | **Scheduled batches with dependencies between tasks.** It is not a business process engine and has no human tasks |115116### 2.3 Workflow engine ≠ RPA117118They are constantly confused and they do not compete:119120- **RPA** = the **hand** that operates an interface that does not belong to you. Fragile by construction.121- **Workflow engine** = the **brain** that knows which step the process is on, retries, compensates,122 waits for a person and survives a restart. It touches no screen.123- **They are used together**: the engine orchestrates and the robot is one of its activities, the most fragile one, with124 its own *timeout* and compensation. **A robot that orchestrates other robots is a home-made125 workflow engine, badly built and without durability** — that is the most common antipattern of the domain.126- Differences that decide: Temporal gives **execution durability** (the process survives the127 *worker* restart without writing state by hand); Camunda gives a **BPMN model visible to the business and128 human tasks**; Airflow gives **batch scheduling with a dependency graph**. Choosing Airflow129 for a business process with human waits is a category error.130131## 3. Structure and conventions132133### 3.1 The robot as a system, not as a recording134135- **Every robot lives in version control** and is deployed by pipeline across environments136 (`git-workflow-standards`, `cicd-standards`). A robot that only exists in the orchestrator is a137 robot that cannot be reviewed, reverted or audited.138- **No record and replay.** Recording produces selectors by coordinate and by index, which139 is exactly what breaks. Selectors **by stable identifier, by role or by anchored140 text**; never by on-screen position, never by table index, never by pixel capture141 if another route exists.142- **Configuration outside the robot**: URLs, paths, thresholds, mailboxes. A robot with the environment143 embedded cannot be tested in pre-production.144- **Separation by layers**: (a) *connectors* that talk to each system, (b) *business rules*,145 (c) *orchestration*. A screen change must touch only (a). Without this separation, every vendor146 change forces you to re-read the whole process.147- **OCR and computer vision are the last resort**, with an explicit confidence threshold and **rejection148 to an exception queue** below it. OCR without a threshold invents figures silently, and that is the149 worst possible property in a financial process.150151### 3.2 Work queues152153The unit of work is the **queue item**, not "the robot run". Looping over154an in-memory list makes partial retry and observability impossible.155156- Each item has a **unique business identifier** (invoice number, order number), an explicit157 **state** (`pending`/`in progress`/`done`/`business exception`/`system exception`),158 an **attempt counter** and a **trace**.159- **Distinguish a business exception from a system exception.** The first (the customer does not exist, the160 document is missing) **is not retried**: it goes to human review. The second (the screen did not respond) is161 retried with exponential backoff and a maximum. Confusing them produces robots that retry 200162 times something that will never work, or that discard valid work.163- **Retry limit and an explicit final destination** (dead queue with an owner), never infinite164 retry.165- **Mandatory idempotency**: before creating anything, check whether it already exists by its business key.166 A retry **cannot** duplicate a payment, an order or a ledger entry. If the target system accepts an167 idempotency key, it is used; if not, you query before writing.168169### 3.3 The half-executed process170171This is a design requirement, not an improvement:172173- **A checkpoint after every step with an external effect**, persisted outside the robot.174- **A compensation defined for every reversible step** and an **explicit boundary for the irreversible ones**:175 there are steps that cannot be undone (an email sent, a payment issued) and the design must176 concentrate them **at the end** and behind full validation.177- **Recovery by resumption**, not by full re-execution: on start-up, the robot queries the178 real state of the target system and decides, instead of assuming it starts from scratch.179- **Clean shutdown**: on a stop signal or a maintenance window, the robot **finishes the item180 in progress and does not take another**. Killing the process midway through an item is how the inconsistent181 states nobody finds until the accounting close get generated.182- **A global stop switch** reachable without deploying anything, and **tested**. When a robot183 starts doing damage, the time to stop it is the metric that matters.184185### 3.4 Execution environment186187- **The unattended robot runs on its own machine or session**, dedicated, not on anybody's188 laptop. Microsoft's documentation says it bluntly: before registering a machine to189 run flows from the cloud, *"ensure the machine is secured and the machine's admins are190 trusted"*, and when creating a connection *"you allow Power Automate to create a Windows session on your191 machine to run your desktop flows. Make sure you trust co-owners of your flows before using your192 connection in a flow."* Operational translation: **whoever administers that machine or co-owns that flow193 has, de facto, the robot's permissions.**194- **A machine rebuildable from code** (image + configuration), because it is going to get corrupted.195- **Attended versus unattended is not just price**: the attended one runs with the session and permissions196 of a person who is present and therefore **inherits their identity** —it is the fast lane to the problem in §5.1—;197 the unattended one requires its own identity and is therefore the only correct way to operate in production.198199## 4. Quality and testing200201Gates in order of increasing cost:2022031. **Code review of the robot**, with the same rules as any other code204 (`code-review-standards`). A `.xaml` is code.2052. **The tool's static analysis** (UiPath analysers, `robocop` for Robot Framework):206 fragile selectors, cleartext credentials, deprecated activities → they break the build.2073. **Tests of the business rules isolated from the interface.** If the logic can only be tested by208 clicking buttons, the architecture in §3.1 is wrong.2094. **A pre-production environment with realistic data** and a full run of the process. **FORBIDDEN210 to test in production "because there is no other environment"**: if the target system has no test211 environment, that is a project risk to be escalated, not an excuse.2125. **Injected failure test**: kill the robot midway through an item, cut the network, return an213 unexpected screen, expire the session. **Verify that the state is left consistent and resumable.**214 This is the test that tells a serious robot from a recording.2156. **Credential rotation test**: rotate the secret and check that the robot carries on. Without this216 test, rotation ends up being disabled "because it breaks the robots", and that is where you lose the game.2177. **Interface-change resilience test**: at least a periodic run against the most recent version218 of the target system, and **a subscription to its release notes** — which is the only advance warning219 you are going to get.220221## 5. Stack security222223### 5.1 The original sin: the robot's credential224225The structural failure of the domain is a robot running **with a real person's account**,226usually the analyst who built it, with their full permissions, with no expiry and with no way227to tell in the log what the person did and what the robot did. When that person changes228job or leaves, either the robot disappears or somebody "inherits" a ghost account. It is, moreover,229the direct route to undetectable fraud: **the target system's audit log says it was done by230Juan**.231232Hard rules:233234- **Its own identity per robot and per process.** A named service account (`svc-rpa-<process>`),235 not generic, not shared between robots, not a person's. **Not even shared between two236 different processes of the same robot**: if they share, you cannot withdraw permissions from one without breaking the237 other.238- **Real least privilege**: the process's permissions, not the analyst's. And **periodic review**239 like any other identity (`identity-access-management-standards`).240- **The password lives in the vault, not in the robot nor in the orchestrator in cleartext**: UiPath's241 Credential Store, Azure Key Vault, HashiCorp Vault, CyberArk. **Ephemeral credentials or automatic242 rotation whenever the target system supports it**; if it does not, scheduled rotation and243 documented as an accepted risk.244- **The robot cannot have interactive MFA** — that is its technical limitation and it is not solved245 by disabling MFA for the whole organisation nor by "remembering the device". It is solved with246 non-interactive authentication (certificate, managed key, workload identity) or it is247 documented as a risk with compensations (network isolation, time window, amount limits).248- **Traceability**: every robot action links `process id + queue item id + robot249 version + who launched it`. Auditing an automated process without that link is impossible.250- **Segregation of duties**: whoever builds the robot does **not** approve its deployment to production nor251 administer its credential. In financial processes this is control, not bureaucracy252 (`grc-compliance-standards`).253254### 5.2 The robot's surface255256- **The robot's machine is a production system** with privileged access to business systems:257 it is hardened, patched and monitored as such. **FORBIDDEN** to use it as anybody's desktop or258 to give it free browsing.259- **Screenshots and logs with personal data**: the robot sees payslips, records and260 accounts. Screenshots only on error, with short retention, encrypted and with restricted access261 (`privacy-engineering-standards`).262- **Untrusted input**: the data the robot reads from emails, PDFs or screens is third-party263 input. It is validated before being written anywhere, and **never interpolated into a command,264 a query or a formula**.265- **Action limits**: maximum amount, maximum number of items per run, allowed time266 window. A robot with no ceiling is an amplification of errors at machine speed.267268## 6. Performance and operability269270- **The SLA belongs to the business process, not to the robot.** "The robot was up 99 %" says nothing;271 what is measured is **items completed within the committed deadline**.272- Minimum metrics per process: items processed, **business exception rate** and **system273 exception rate** separately, time per item, age of the oldest item in the queue, and274 **backlog** — which is the early signal that something is wrong.275- **Alerts on business symptoms**: "the queue is growing", "zero items processed in the276 expected window", "the exception rate exceeds the threshold". Not on "the process is not responding".277- **Suspicious silence**: a scheduled robot that does **not** run generates no errors. Alerting on278 absence (*dead man's switch*) is mandatory; without it, a stopped robot goes unnoticed for weeks.279- **Fallback to the manual process**: for every critical automated process there is a written manual280 procedure and an estimate of how many people it takes. If automating removed the capacity to281 do it by hand and the robot goes down at month-end close, the problem is the business's, not IT's.282- **Real cost per process**: bot licence, machine, maintenance and **the human time spent283 managing the exception queue**, which is what nobody adds up. A process with 30 % exceptions is not284 automated.285286## 7. Long-term sustainability287288### 7.1 Governance: the orphaned robot289290**A robot with no business owner keeps moving money.** It does not stop by itself, it does not warn and it does not appear in291any application inventory. Requirements for it to exist:292293- **A central robot inventory** with: process, systems it touches, **named business owner**,294 technical owner, identity it uses, permissions, criticality, date of last review and **expiry295 date**.296- **Expiry by default**: every robot is reviewed at least annually; if nobody claims it, **it is297 switched off** (with a grace period and notice). It is the only known way to avoid accumulation.298- **Registration in the CMDB and in the change process** (`itsm-itil-standards`): a change to a system299 a robot depends on must be able to identify that robot **before** the change.300- **Exit plan**: for each robot, the condition under which it is replaced by a real integration and301 who watches for it. Without this, the "temporary bridge" of justification 4 in §1 is permanent.302303### 7.2 Prohibitions304305- ❌ **FORBIDDEN** to build a robot against a system that **does** expose an API, without written306 and approved justification.307- ❌ **FORBIDDEN** for a robot to run with a natural person's account.308- ❌ **FORBIDDEN** to share one identity between several robots or processes.309- ❌ **FORBIDDEN** to store credentials in the robot, in a file, in the repository or in the310 orchestrator in cleartext.311- ❌ **FORBIDDEN** to disable an organisation's MFA, or to exclude real users from MFA, "so that312 the robot works".313- ❌ **FORBIDDEN** to record and replay, and forbidden are selectors by coordinate, by positional314 index or by pixel comparison when an alternative exists.315- ❌ **FORBIDDEN** a robot that is not in version control.316- ❌ **FORBIDDEN** to deploy and test directly in production.317- ❌ **FORBIDDEN** a step with an external effect without a prior idempotency check.318- ❌ **FORBIDDEN** to retry a business exception, and forbidden is retry without a maximum or a319 final destination.320- ❌ **FORBIDDEN** a process without a tested stop switch.321- ❌ **FORBIDDEN** a robot in production without a named business owner or a review date.322- ❌ **FORBIDDEN** to use the robot's machine as a workstation or to give it free browsing.323- ❌ **FORBIDDEN** to capture screens with personal data outside an error, without encryption and without324 bounded retention.325- ❌ **FORBIDDEN** to justify an RPA programme with the vendor's FTE saving figures. **Figures326 of the "RPA saves X % of FTE" kind are marketing material with no published methodology.** If327 the investment must be justified, you measure **the specific process before and after**, counting the exception328 queue and the maintenance; if it has not been measured, you say it has not been measured.329- ❌ **FORBIDDEN** to call "automated" a process whose percentage of manual exceptions is not330 published.331332### 7.3 When the robot is an LLM333334An agent that "uses the computer" (clicks buttons, reads screens) **is RPA**, and therefore inherits everything335above: its own identity, vault, least privilege, queue, idempotency, limits, traceability,336stop switch. **And it adds two problems classic RPA does not have**:3373381. **Non-determinism**: the same screen can produce two different actions. Everything that in classic339 RPA is tested once must be tested statistically here340 (`llm-evaluation-standards`).3412. **Indirect prompt injection**: the text on the screen the agent reads **is the attacker's342 input**. An email, a PDF or a form field can contain instructions. With343 business credentials and access to transactional systems, this is the full lethal trifecta.344345Operational consequence, not philosophical: **mandatory human approval before any346irreversible action or any action with economic impact**, without exception, and amount and volume limits enforced347**outside** the agent. The design of the loop, its caps and its *sandbox* belong to `ai-agents-standards`; that348it also complies with what is here is not optional.349350## 8. Mandatory web verification351352- **Pricing models, which change and are half the decision**: the official pricing page of353 Power Automate (as of Aug 2026, list: **Premium $15 user/month**, **Process $150 bot/month**, **Hosted354 Process $215 bot/month**), of UiPath (*Basic* from ~**$25/month** with 2 robots; the rest "contact355 sales"). **Declared gaps: neither the pricing model nor the licensing terms356 of Automation Anywhere or SS&C Blue Prism could be obtained** from public sources (one returned 404 and the other357 did not resolve). Before comparing them, demand the offer in writing from the vendor and **verify whether the358 price is per concurrent robot, per process or per run** — the difference decides the TCO.359- **Licences read raw**, not by the GitHub label: Robot Framework **Apache-2.0**360 (`LICENSE.txt`), Playwright **Apache-2.0** (`LICENSE`), Temporal **MIT** (`LICENSE`), Airflow361 **Apache-2.0** (`LICENSE`), and **Camunda: `Camunda License 1.0`, *source-available* and not OSI** —362 re-read it before assuming anything, because it conditions use in a product.363- **Version and support** of the chosen RPA tool, and **its compatibility matrix with the364 version of the target system** (browser, ERP, emulator). It is the number one cause of breakage after365 an update.366- **Release notes of the target system**: subscription mandatory; it is the only advance warning that367 the interface is going to change.368- **CVEs** of the orchestrator and of the robot *runtime*: they are systems with business credentials, not369 desktop tools.370- The current state of models' "computer use" capabilities and of their safety guidance371 before proposing an agent for a transactional process.372373If the web contradicts this document, **the web wins** — flag the discrepancy.