How MetaBots are migrated

When you migrate a MetaBot to Automation 360, equivalent bots are created for the various logic available in the MetaBot, except for application screens. After successful migration, each logic in a .mbot file is converted to a Task Bot file.

A MetaBot contains assets and logic. Assets are the application screens or DLLs that are used to automate a task on an application. Logic is a set of commands to perform an operation and interact with other logic and bots.

Note:
  • Before you migrate .atmx or .mbot using the Bot Migration Wizard, ensure that all the Logics, dlls, .mbots, .atmx files and other dependencies related to the MetaBots or Task Bots that were previously migrated are not in the Checked-out state. Otherwise, the following error occurs during re-migration:
    Bot is not ready for migration.
    The details of the unsuccessful migration are displayed in the Bot Migration wizard > Results > Skipped tab.
  • If the bot that you are migrating has been checked out or has been migrated previously, ensure that the bot to be migrated is in the Checked-in state. Also, to reuse the migrated bot, in the Bot Migration Wizard, select the Overwrite if a bot with same name exists option. To use an updated bot, disable the Overwrite if a bot with same name exists option.
The migration process performs the following actions:
  • Converts MetaBot logic to corresponding Task Bots.
  • Maintains the folder structure of the MetaBots after it is migrated. The new folders created in Automation 360 contain the Task Bots for each logic migrated to Automation 360.
  • Updates the Task Bots that use MetaBot logic to refer to the new Task Bots that are created for the migrated MetaBot logic.

    You do not have to update the Task Bots manually.

Features such as use of DLLs, input and output variables, and Execute permission which were available only for MetaBots are now available for all Task Bots.

We will use the following MetaBot to explain how it is migrated to Automation 360:
  • MetaBot name: MetaTask
  • Assets:
    • Login screen
    • General.dll
    • DLL\Binary.dll
  • Logic:
    • Common
    • Process1\Connect
    • Process1\Disconnect
    • Process1\Operations\Numeric

Benefits of reusable Task Bots in Automation 360

The following table lists the benefits of using reusable Task Bots in Automation 360 compared with MetaBots in Enterprise 11:
Automation 360 reusable Task Bots v11 MetaBots
You can navigate to a child bot through fewer clicks using the Finder component, thus saving time. Navigate to Editor > Finder to reach the child bot. You must navigate through the TaskBot > Run action to reach the child bot.
You can search the child bots from the private workspace as well as public workspace to use them in Task Bots. You must download the MetaBots to the local repository to use a child bot in the Task Bots.
Only a specific Logic is deployed when it is used in a task, which saves time and bandwidth. Entire MetaBot is deployed to the Bot Runner machine even if only one Logic is used in the Task.
Provides better RBAC, which enables you to customize permissions. MetaBots forces all Logic to have the same permissions even if multiple Logic are spread across different folders.

MetaBot migration process

The system creates a folder with the same name as the MetaBot within the My MetaBots folder available in the Bots folder, and the same folder structure as Enterprise 11 is retained. For example, if the folder structure in Enterprise 11 is Accounts/Tax/MetaTask.mbot, the system retains the folder structure as Accounts/Tax/MetaTask.mbot. All the components of a MetaBot are stored in the folder created for that MetaBot. In this example, the system creates the MetaTask folder in the Bots\My MetaBots folder and stores all the components the MetaBot in that folder.

Enterprise 10 bots that directly call DLLs and screens in a MetaBot without using MetaBot logic are migrated to the equivalent Task Bots and actions in Automation 360. In Enterprise 10, if a DLL that returns a list or array type parameters and the output of that DLL is mapped with a value type parameter, an extra space is added at the start of the output value. The extra space is not added to the output value after the bot is migrated.

10.1 MetaBots that use DLL functions that accept one-dimensional array and list type input parameters and is mapped with the array type parameter. In such cases, row index and column index are required as input to specify the value to be returned. After migration, the row index is considered as column number.
Note: For bots that are upgraded from 10.1 to 10.3.5 and then migrated to Automation 360, the Bot Migration Wizard does not show the dependency on the Bot and Dependent Bots page. For such bots, you must migrate the MetaBots before migrating the Task Bots that are calling those MetaBots.

Migration of DLLs

The system does not maintain the folder structure for assets in order to maintain the references between the DLLs. For the above example, General.dll and Binary.dll are stored in the MetaTask folder although the Binaary.dll is stored in the DLL subfolder.

See the following video for information on migrating MetaBots with DLLs to Automation 360:

MetaBot migration process overview

Use the information provided in this section to understand the processes involved in migrating MetaBot to Automation 360.
Concept of DLL session in the migrated bot

The following DLL changes are observed in the migrated bot:

  • When you migrate a Task Bot with multiple MetaBots that contain DLLs with the same name, a session name using the name of the first DLL is created. When the subsequent DLL with the same name from another MetaBot is migrated, the ID of the folder in which the DLL resides is used as a session name.

    For example:M_DLL_Session-<MetabotFolderId>_<DLLName>.

  • When the Execute DLL command in Enterprise 11 is migrated to Automation 360, the command is converted to the Open and Run function actions and the Dll Session does not exist If condition.
  • The DLL session name is created by appending the DLL name to the "M-DLL-Session-" token. For example, if the DLL name is Sample.dll, after migration, the DLL session name will be M-DLL-Session-Sample.
  • The DLL session represents the DLL it is using to run the DLL functions.
  • To run multiple functions from the same DLL, the same DLL session name must be provided in the Session name field.
Condition to check for the existence of a DLL session in a migrated bot

After migration, when the same DLL is used across multiple logics of the same MetaBot, a condition to check if a DLL session is already open is added for every DLL to ensure that the DLL session is opened only once. Some DLLs that are used in MetaBot share sessions or global variables across multiple DLL functions. If such DLL functions are called from different logics, sharing of such sessions and variables is possible only if the DLL session is opened only once and a condition is added to check if a DLL session is already available. If a DLL session is missing, Automation 360 creates a DLL session of type Global.

What happens to a migrated Task Bot that has reference to two DLL functions from same or different logics of a MetaBot?

In Enterprise 11, if a Task Bot was referencing to a logic that called two functions using the Run Logic command, in Automation 360, a DLL session will be created in the Task Bot (logics are migrated as Task Bots) and will be used in the Run function action. Also, when a Task Bot refers multiple logics that calls multiple functions, the Task Bots will use the same DLL session name to execute the functions. The DLL session condition check will ensure that only one session is created across such logics.

For example, if a Task Bot is using MetaBot1 Logic and MetaBot2 Logic where MetaBot1 Logic and MetaBot2 Logic are calling multiple functions, when you run the Taskbot, a DLL session name is created to run MetaBot1 Logic. The DLL session name that was created to run MetaBot1 Logic will be used to run MetaBot2 Logic as well.

Migration of screens

Each screen in a MetaBot is converted to a windows variable and the actions performed on the screen are migrated to the equivalent actions in Automation 360.

The following table lists the screens that can be migrated to Automation 360:
Browser Internet Explorer

Google Chrome (for object play type only)

Screen type Standard
Technology Java, HTML, MSAA, .Net, UI Automation (for object play type only)
Play type Object, Image, Coordinate

You can also migrate MetaBots with screens that are captured in the Citrix environment from applications that are based on Java, UI Automation, and MSAA technologies.

The linked objects on a MetaBot screen that are captured using the object play type are migrated to the Capture action of the Recorder package. The source object is displayed in the Main tab and the linked object is displayed in the Anchor tab of the Capture action.

The following table provides information about the actions that are performed on an object play type object and text play type linked object available on the screen is migrated to the equivalent actions in Automation 360:
Play type Enterprise 11 Action Automation 360 Action
Object Get Property, Get Total Items, Get Selected Index, Get Selected Text, Select Item by Text, Select Item by Index, Click, Left Click, Right Click, Double Click, Set Text, Append Text, Get Property, Check, Uncheck, Toggle, Expand, Select, Get Status, Migrated to the Capture action of the Recorder package.

The GetAllChidrenName and GetAllChidrenValue commands in Enterprise 11/Enterprise 10 return string type variable values. In Automation 360, they return list values. The migration process joins the list values and stores them into a string variable to maintain consistent bot behaviors across releases.

The Object Cloning command with the Export to CSV action in Enterprise 11/Enterprise 10 is migrated to:
  • The Capture action of the Recorder package.

    This action saves the captured date into a table variable.

  • The Write to file action of the Data Table package.

    This action saves the data from the table variable to the CSV file.

The following table provides information about the actions that are performed on an image play type object image play type linked object available on the screen is migrated to the equivalent actions in Automation 360:
Play type Enterprise 11 Action Automation 360 Action
Image Left Click Migrated to the Find window in window action of the Image Recognition package with the Left Click selected from the Action list.
Right Click Migrated to the Find window in window action of the Image Recognition package with the Right Click selected from the Action list.
Double Click Migrated to the Find window in window action of the Image Recognition package with the Double Click selected from the Action list.
Middle Click Migrated to the Find window in window action of the Image Recognition package with the Left Click selected from the Action list.
Set Text Migrated to:
  • The Find window in window action of the Image Recognition package with the Left Click selected from the Action list.
  • The Delay action of the Delay package with the Regular delay set to 500 milliseconds.
  • The Simulate keystrokes action of the Simulate keystrokes package.
Get Text Migrated to the Capture area action of the OCR package.
GetVisibility Migrated to IF action with condition Image Recognition:Find Window in window. The GetVisibility action returns a True or False value based on whether the object in an image is visible or not. Similarly, the condition within the IF action is evaluated based on whether the window is found in another window. The result is stored in a temporary variable.
The following table provides information about the actions that are performed on a coordinate play type object coordinate play type linked object available on the screen is migrated to the equivalent actions in Automation 360:
Play type Enterprise 11 Action Automation 360 Action
Coordinate Click Migrated to the Click action of the Mouse package with the Left Button and Click options selected.
Left Click Migrated to the Click action of the Mouse package with the Left Button and Click options selected.
Right Click Migrated to the Click action of the Mouse package with the Right Button and Click options selected.
Middle Click Migrated to the Click action of the Mouse package with the Middle Button and Click options selected.
Double Click Migrated to the Click action of the Mouse package with the Left Button and Double click options selected.
Set text Migrated to:
  • The Click action of the Mouse package with the Left Button and Click options selected.
  • The Delay action of the Delay package with the Regular delay set to 500 milliseconds.
  • The Simulate keystrokes action of the Simulate keystrokes package.
Get text Migrated to:
  • The Click action of the Mouse package with the Left Button and Click options selected.
  • The Clear action of the Clipboard package.
  • The Delay action of the Delay package with the Regular delay set to 500 milliseconds.
  • The Simulate keystrokes action of the Simulate keystrokes package.
  • The Delay action of the Delay package with the Regular delay set to 500 milliseconds.
  • The Copy to action of the Clipboard package.
The following table provides information about actions that are performed on a coordinate play type custom object available on the screen that is migrated to equivalent actions in Automation 360:
Play type Enterprise 11 action Automation 360 action
Coordinate Click Migrated to the Click action of the Mouse package with the Left Button and Click options selected.
Left Click Migrated to the Click action of the Mouse package with the Left Button and Click options selected.
Middle Click Migrated to the Click action of the Mouse package with the Middle Button and Click options selected.
Double Click Migrated to the Click action of the Mouse package with the Left Button and Double click options selected.
Set text Migrated to the following:
  • The Click action of the Mouse package with the Left Button and Click options selected.
  • The Delay action of the Delay package with the Regular delay set to 500 milliseconds.
  • The Simulate keystrokes action of the Simulate keystrokes package.
Get text Migrated to the following:
  • The Click action of the Mouse package with the Left Button and Click options selected.
  • The Clear action of the Clipboard package.
  • The Delay action of the Delay package with Regular delay set to 500 milliseconds.
  • The Simulate keystrokes action of the Simulate keystrokes package.
  • The Delay action of the Delay package with Regular delay set to 500 milliseconds.
  • The Copy to action of the Clipboard package.
The following table provides information about actions that are performed on a text play type custom object available on the screen that is migrated to equivalent actions in Automation 360:
Play type Enterprise 11 action Automation 360 action
Text Click Migrated to the Find window in window action of the Image Recognition package with Left Click selected from the Action list.
Left Click Migrated to the Find window in window action of the Image Recognition package with Left Click selected from the Action list.
Double Click Migrated to the Find window in window action of the Image Recognition package with Double Click selected from the Action list.
Set text Migrated to the following:
  • The Find window in window action of the Image Recognition package with Left Click selected from the Action list.
  • The Delay action of the Delay package with Regular delay set to 500 milliseconds.
  • The Simulate keystrokes action of the Simulate keystrokes package.
Get text Migrated to the Capture area action of the OCR package.

Migration of logic

Each logic in a MetaBot is converted to a Task Bot and each command used in a logic is converted to the equivalent action in Automation 360. The variable used in a logic is converted to an equivalent variable in Automation 360. Credential variables used in the logic are migrated to Automation 360 and used in the equivalent actions in the migrated bots. If the Parameter Type of a variable is input or output, the same is maintained after that variable is migrated to Automation 360. For example, if the Parameter Type of the variable ABC is set as Input, the variable ABC created in Automation 360 has the Use as input option selected after it is migrated. The system retains the internal folder structure of the logics. For the above example, all the migrated logics are stored as listed in the following table:

Folder structure in Automation 360 Entry
MetaTask Common
MetaTask\Process1 Connect
MetaTask\Process1 Disconnect
MetaTask\Process1\Operations Numeric
The following table provides information about how the Import DataSet command used in the MetaBot logic is migrated to the equivalent actions in Automation 360:
Play type Enterprise 11 Action Automation 360 Action
Object Get Property, Get Total Items, Get Selected Index, Get Selected Text, Select Item by Text, Select Item by Index, Click, Left Click, Right Click, Double Click Migrated to the Capture action of the Recorder package.
Image Left Click Migrated to the Find window in window action of the Image Recognition package with the Left Click selected from the Action list.
Right Click Migrated to the Find window in window action of the Image Recognition package with the Right Click selected from the Action list.
Double Click Migrated to the Find window in window action of the Image Recognition package with the Double Click selected from the Action list.
Middle Click Migrated to the Find window in window action of the Image Recognition package with the Left Click selected from the Action list.
Set Text Migrated to:
  • The Find window in window action of the Image Recognition package with the Left Click selected from the Action list.
  • The Delay action of the Delay package with the Regular delay set to 500 milliseconds.
  • The Simulate keystrokes action of the Simulate keystrokes package.
Coordinate Click Migrated to the Click action of the Mouse package with the Left Button and Click options selected.
Left Click Migrated to the Click action of the Mouse package with the Left Button and Click options selected.
Middle Click Migrated to the Click action of the Mouse package with the Middle Button and Click options selected.
Double Click Migrated to the Click action of the Mouse package with the Left Button and Double click options selected.
Set text Migrated to:
  • The Click action of the Mouse package with the Left Button and Click options selected.
  • The Delay action of the Delay package with the Regular delay set to 500 milliseconds.
  • The Simulate keystrokes action of the Simulate keystrokes package.
The following table provides information about how the Export Dataset command used in the MetaBot logic is migrated to the equivalent actions in Automation 360:
Play type Enterprise 11 Action Automation 360 Action
Object Get Property, Get Total Items, Get Selected Index, Get Selected Text, Select Item by Text, Select Item by Index, Click, Left Click, Right Click, Double Click Migrated to the Capture action of the Recorder package.
Image Left Click Migrated to the Find window in window action of the Image Recognition package with the Left Click selected from the Action list.
Right Click Migrated to the Find window in window action of the Image Recognition package with the Right Click selected from the Action list.
Double Click Migrated to the Find window in window action of the Image Recognition package with the Double Click selected from the Action list.
Middle Click Migrated to the Find window in window action of the Image Recognition package with the Left Click selected from the Action list.
Get Text Migrated to the Capture area action of the OCR package.
Coordinate Click Migrated to the Click action of the Mouse package with the Left Button and Click options selected.
Left Click Migrated to the Click action of the Mouse package with the Left Button and Click options selected.
Middle Click Migrated to the Click action of the Mouse package with the Middle Button and Click options selected.
Double Click Migrated to the Click action of the Mouse package with the Left Button and Double click options selected.
Get text Migrated to:
  • The Click action of the Mouse package with the Left Button and Click options selected.
  • The Clear action of the Clipboard package.
  • The Delay action of the Delay package with the Regular delay set to 500 milliseconds.
  • The Simulate keystrokes action of the Simulate keystrokes package.
  • The Delay action of the Delay package with the Regular delay set to 500 milliseconds.
  • The Copy to action of the Clipboard package.

Migration of Run Logic command

The Run Logic command is used in a bot to run a specific logic from a MetaBot in Enterprise 11. When you migrate that bot, the Run Logic command is converted to the Run action of the Task Bot package.

The input variables are converted to equivalent variables in Automation 360 and the output variables are migrated to a dictionary variable. You use the key in the dictionary variable to use the associated value. The dictionary variable might contain other variable types, for example, list, value, integer, and array. You can map the variables available in the dictionary variable with other variable types. For example, you can map the list type variable available in the dictionary variable with the list, value, and array type variables.

Migration of Execute command

The DLLs in the MetaBots use the Execute command to run a function from that DLL. After migration to Automation 360, each Execute command is converted to Open, Run function, and Close actions of the DLL package. Information about which function to run from the DLL, which parameters to use, and other details in the Execute command is migrated to the Run action.

Starting from Enterprise A2019.16 (6448), you can migrate MetaBots that contain DLLs whose return types are different from that of the MetaBot. The following table provides information about the variable type of the output of the MetaBot and the return type of a DLL.
MetaBot variable type DLL function return type
Value Two-dimensional array, List, Byte in array (Byte[]), unsigned integers (UInt32, UInt64), signed integers, IDictionary, IList, and unsigned integers in array (UInt16[], UInt32[], UInt64[]), signed Byte
Array Two-dimensional array, List, unsigned integers (UInt16[], UInt32, UInt64), signed integers, IList, signed Byte and IDictionary
Note: The migration of bots that uses IDictionay variable is supported, however, the migrated bots might not return the correct value. This behavior is same as in Enterprise 11 or Enterprise 10.
The following table provides information about the variable type that is passed from the MetaBot and the input type a DLL accepts.
Variable type of MetaBot Input variable type the DLL accepts
List Two-dimensional array, list, byte, unsigned integers (UInt16, UInt32, UInt64), signed integers, signed Byte, byte in array (Byte[]), and unsigned integers in array (UInt16[], UInt32[], UInt64[])
Array Two-dimensional array, list, byte, unsigned integers (UInt16, UInt32, UInt64), signed integers, signed Byte, byte in array (Byte[]), and unsigned integers in array (UInt16[], UInt32[], UInt64[])
Value Byte, unsigned integers (UInt16, UInt32, UInt64), signed integers, signed Byte
Dictionary Byte, unsigned integers (UInt16, UInt32, UInt64), signed integers, signed Byte