100% Free Forever
AI-Powered Learning
Industry Expert Content
Certificates & Badges
Learn At Your Own Pace
Programming

Desktop Flows and RPA

Automate legacy Windows and web applications that have no API using Power Automate Desktop's recorder-driven robotic process automation actions.

RPA & AIIntermediate10 min readJul 10, 2026
Analogies

What Desktop Flows and RPA Bring to Power Automate

Cloud flows automate systems that expose a connector or API, but a huge share of real business work still happens inside legacy Windows executables, Citrix-published apps, and websites with no supported API at all. Desktop flows close that gap: built with the free Power Automate Desktop (PAD) application, they use robotic process automation (RPA) to record and replay mouse clicks, keystrokes, and UI element interactions exactly as a human performed them. A recorder captures each interaction as a discrete action referencing a UI element 'selector', and the resulting flow can be triggered from a cloud flow, run on a schedule, or launched from the PAD console, making it the automation layer of last resort when no proper integration exists.

🏏

Cricket analogy: Like MS Dhoni's practiced glove-work behind the stumps, drilled through repetition until every stumping motion is identical, a desktop flow records a sequence of clicks once and replays that exact motion on every run without deviation.

Recording and Editing Actions

The PAD recorder is only the starting point; once a sequence is captured, every action lands as an editable step in the flow designer, so you can insert Wait actions, If/Else branches, loops over an Excel range, or variables without re-recording from scratch. Actions like 'Populate text field', 'Click', and 'Get text from window' each store a selector describing the target control's position in the UI element tree, and the designer's selector editor lets you swap a brittle, index-based selector for one anchored to a stable attribute such as an automation ID or accessible name. Because desktop flows run against real windows, they can also invoke non-UI actions in the same sequence, such as launching an executable, running a PowerShell script, or manipulating files, which lets a single flow blend legacy screen automation with modern scripting in one linear sequence.

🏏

Cricket analogy: Like a coach reviewing Virat Kohli's cover drive on video and tweaking only his back-lift without re-teaching the entire shot, editing a single recorded action in PAD refines one step without rebuilding the whole flow.

Legacy, Citrix, and Image-Based Automation

Some environments, most commonly Citrix-published applications, remote desktop sessions, and mainframe green-screen terminals, expose no accessible UI tree at all, so PAD falls back to image recognition and OCR-based actions like 'Click on Image' or 'Extract text from window using OCR'. These actions compare a saved reference image against the live screen at runtime and click the matched location, or read pixels through an OCR engine (PAD ships with a built-in OCR engine and can call the Azure AI Vision OCR engine for higher accuracy) when no selector is available. Image-based automation is inherently more fragile than selector-based automation because it depends on exact screen resolution, DPI scaling, color rendering, and window position, so flows built this way should pin the target window's size and position at the start of the sequence and re-verify the reference images whenever the remote environment changes appearance.

🏏

Cricket analogy: Like reading a stadium scoreboard by eye when the official Hawk-Eye data feed is down, OCR-based extraction reads pixels off the screen when no proper selector or API exists underneath.

Error Handling and Resilience

Because desktop flows interact with real, sometimes slow or unpredictable UIs, every action should be wrapped in error handling: PAD's 'On Block Error' setting lets you configure a per-action retry count and interval, or route failures to a labeled error-handling block that logs the error, captures a screenshot with 'Take screenshot', and either retries the parent action or gracefully ends the run. A common resilience pattern combines explicit 'Wait for element' or 'Wait for window' actions ahead of a Click, rather than fixed Wait Time delays, so the flow proceeds the instant a control becomes available instead of guessing a static duration that may be too short on a slow VM or wastefully long on a fast one. Flows launched from a cloud flow can also return structured output variables back to the caller on both success and failure paths, letting the parent cloud flow branch on the desktop flow's outcome and trigger a Teams alert or ticket creation if the unattended run failed.

🏏

Cricket analogy: Like the DRS review process kicking in when an on-field umpiring decision is uncertain, an On Block Error handler catches a failed action and gives the flow a chance to retry before conceding the point.

text
// Simplified Power Automate Desktop action sequence

ON BLOCK ERROR (retry: 3 times, interval: 5s)
    Screen Recorder: Take screenshot  -> ScreenshotPath
    Log.WriteText: 'Login step failed after retries' -> LogFile
    GO TO Label: EndFlow

Wait For Window: Title contains 'Legacy Billing System'
Web Automation: Populate text field 'Username' with %Credentials.User%
Web Automation: Populate text field 'Password' with %Credentials.Pass%
Web Automation: Click 'Sign In' button
Wait For Element: Selector = LoginSuccessBanner, Timeout = 15

LABEL: EndFlow
Run PowerShell Script: 'C:\Scripts\NotifyOnFailure.ps1' -> ScriptOutput

Desktop flows require the Power Automate Desktop client installed on a Windows machine (Windows 10/11 or Windows Server) and, for unattended execution, a licensed unattended RPA add-on plus an on-premises data gateway or hosted machine registered to a machine group in the Power Platform admin center.

Selectors captured during recording are tied to the exact window title, control hierarchy, and sometimes screen resolution present at recording time; a Windows update, application version change, or DPI scaling change can silently break a flow's selectors until you re-open the flow, re-validate each selector in the designer, and re-test the run end to end.

  • Desktop flows use Power Automate Desktop's recorder to capture UI clicks and keystrokes as replayable RPA actions when no API or connector exists.
  • Recorded actions can be edited, reordered, and combined with variables, loops, and non-UI actions like running PowerShell scripts, without full re-recording.
  • Image recognition and OCR-based actions are the fallback for Citrix, remote desktop, and mainframe screens that expose no accessible selector tree.
  • Image-based automation is fragile against resolution, DPI, and window-position changes, so pin the target window and re-verify reference images regularly.
  • Use Wait for element/window instead of fixed delays, and wrap actions in On Block Error handlers with retries and screenshot logging.
  • Unattended execution requires a licensed unattended RPA add-on and a registered machine group, distinct from attended, interactive-session automation.
  • A parent cloud flow can call a desktop flow and branch on its structured success/failure output to alert humans on unattended run failures.

Practice what you learned

Was this page helpful?

Topics covered

#Programming#PowerAutomateStudyNotes#DesktopFlowsAndRPA#Desktop#Flows#RPA#Bring#StudyNotes#SkillVeris#ExamPrep