Working with Migration Output in Power Automate Desktop (PAD)
This article describes some of the more commonly asked aspects of the Power Automated Desktop flows generated by Blueprint migrated from other RPA tools.
Generated Subflows
When migrating from another RPA platform to Power Automate Desktop, Blueprint will create various subflows if needed based on the contents of the migrated bot
These Subflows will be generated for every Migrated Flow :
- Init_Variables - All variables declared in your source RPA file will be declared within this subflow:
One or more of these Subflows will be generated depending on content of the Migrated Flow:
These subflows will be created if the corresponding flag within the error handling of the source RPA tool was enabled:
- Err_TakeScreenshot - Captures and saves a screenshot at time of error
- Err_LogToFile - Logs capture error and current date time to provided file path
- Err_SendEmail - Sends an email to provided users
- Err_DumpVariables - Dumps values of all variables into a dictionary variable
UiPath to PAD Common Items
- VARIABLES
- UiPath Global Variables
Setting these variables will help improve migration quality.Variable
Behavior
How to Reconcile in PAD
%BasePath%
In UiPath, relative file or folder paths are relative to the main xaml file. In PAD, relative file or folder paths are relative to PAD installation folder.
Set %BasePath% where specific project files will be located after migration
%SPECIAL_FOLDER_X%
Possible Special Folders:
ApplicationData, CommonApplicationData, LocalApplicationData, Cookies, Favorites, History, InternetCache, Programs, MyMusic, MyPictures, Recent, SendTo, StartMenu, Startup, System, Templates, DesktopDirectory, Personal, ProgramFiles, CommonProgramFiles
Set %SPECIAL_FOLDER_X% where specific folder will be located after migration
- UiPath Global Variables
Automation Anywhere v11 to PAD Common Items
- VARIABLES
- AA Global Variables
Global Variables do not exist in PAD. User will need to find a way to recreate the necessary global variables to call them.
Common examples include:AA System Variable
Behavior
How to Reconcile in PAD
AAApplicationPath
Returns product application Path
User to define variable with the path in the inti_Variables subflow
AATaskName
Returns complete path and name of the task being executed
In each flow/subflow where AATaskName is used, user to define variable with the path and name of the current flow/subflow
Millisecond
Returns System Millisecond
PAD does not support getting the current time to the millisecond. User will need to determine if milliseconds is needed.
If yes, user will need to analyze the use case and refactor
If no, user can simply delete
- AA Global Variables
- NON-COMPLIANT COMMANDS
Depending on your organization's security policies, some users may not be allowed to utilize certain commands, such as 'run scripts' or 'send email', due to compliance issues. If not, they will be brought over as a TODO comment (see below) that must be manually configured and completed.- Send Email
- Run VBScript
- Any command involving sensitive/encrypted text
- COMMENTS
- SRC
SRC comments describe what the command originally was in AA. Use as a reference and review code that follows and check for correctness. - TODO
TODO comments describe what the user needs to do in various situations. It may be reviewing the next line(s) of code, adding an command that couldn’t be migrated, or asking for verification that migrated step looks correct.
Common examples include:TODO
How to Reconcile
NO MATCH FOUND FOR "" IN EXTERNAL FLOW MAPPING TEMPLATE FOR DESKTOP CALL
Run Logic action that is calling a Metabot has not been mapped using the Metabot mapping sheet. User will need to map the metabot to an existing PAD Desktop Flow
Run Logic
Run Logic action that is calling a Metabot is not supported in PAD and the user has not uploaded a Metabot Mapping sheet yet
Run Task
A task was missing the export job from Blueprint
Please check the paths
Please check that the variablized file path is correct
Migration of "" is unclear. Below are two possible interpretations, please delete what is unnecessary.
Blueprint cannot tell what expressions containing variables are attempting to do, whether it is string manipulation or a calculation.
Removed sensitive password text, please complete
Provide the missing credentials password
Update Email Server settings
Provide the missing credentials password
End XML Session
This action doesn’t exist in PAD, user can delete comment
Run Stored Procedure
Use an 'Execute SQL Statement' action
- SRC
Blue Prism to PAD Error Handling
- BP to PAD Local Exceptions
Example from BP | Example Migration in PAD |
The purpose of the Recover stage in Blue Prism is to catch errors within the Block it's a part of. For Instance, in the BP screenshot all the errors are occur within the Block are considered "local" and are caught by Recover stage. This screenshot for PAD migration shows the use of On Block Error action, which is equivalent to Try and Catch Block. If an error occurs within the On Block Error, we trigger similar error handling to what was set up in Blue Prism. The error details are recorded in the _LastError Variable. We Use Stop Flow action instead of Convert text to number: 1/0 when Throwing or Rethrowing an error. If no error is found, or the error has been handled, then the flow will resume. The action which is causing the flow to resume back in Blue Prism is called "Resume". In PAD, this Resume resets the On Error variable to False and resumes the flow. |
- BP to PAD Global Exceptions
Example from BP | Example Migration in PAD |
In Blue Prism, if a Recover stage is placed outside of a Block, it will function as global error handling. The purpose of Global Recovery is to catch any error that has occured outside of blocks. For Instance, any error found outside the block 1 could be considered under Global Recovery. _LastError variable is used to store the error details. We Use Stop Flow action instead of Convert text to number: 1/0 when Throwing or Rethrowing an error. If no error is found, or the error has been handled, then the flow will resume. The action which is causing the flow to resume back in Blue Prism is called "Resume". In PAD, this Resume resets the On Error variable to False and resumes the flow. |
- BP to PAD Multi Entry and Multi Exists
Example from BP | Example Migration in PAD |
In Blue Prism, processes can be created with error blocks that have multiple entries and exit points. To make an equivalent in PAD, we need to flatten this down to a linear structure with the use of Set Variables, Ifs, and Go Tos. For Multiple Entries into an On Block Error, we create the variable Entry Destination and use it in If statements to determine the entry path. For Instance: In the below example, we are using the Entry Destination variable in If and elseif to determine what action/path will run next. Similarly, if there are multiple exit points, we create the variable Exit Destination to decide the exit path. For Instance: In the below example, we are using If and elseif to check if the Exit Destination variable to determine what action/path will run next. |
- BP to PAD Exception Type and Details
Example from BP | Example Migration in PAD |
Preserve Current Exception | In Blue Prism, users can manually throw an exception with the Exception stage. Within it, there is the option to preserve the current exception type by selecting the Preserve Exception option, which will get whatever the the last exception message was and where it occurred on the page. In PAD, this is migrated as an If statement. The _LastError variable will retrieve the last exception details (saved in _Lasterror). In the screenshot, OnError is a variable set to False to retrieve the last exception message. However, if the user chooses to log the exception in Blue Prism with custom details and the Preserve Type unchecked, the custom Type and Details will also be migrated. |