100+ Bot Commands extending Automation Anywhere 360 with data manipulation, file operations, string processing, and more.
AA360 Toolbox is a professional-grade Bot Command package for Automation Anywhere 360 that extends the platform with 100+ specialized commands across data manipulation, file operations, string processing, URL handling, security, and more. Every command is type-safe, tested, and designed to drop into existing workflows without configuration.
- Download the latest
.jarfrom the releases page. - In your Control Room, go to Manage → Packages → Import and upload the
.jar. - Open any bot and search for "Toolbox" in the Actions panel.
For full install instructions including Community Edition, see Installation.
| Type | Count | Description |
|---|---|---|
| Actions | 87 | Data transformation and computation commands |
| Triggers | 1 | Event-based workflow triggers |
| Iterators | 1 | Custom iteration capabilities |
| Conditionals | 13 | Boolean condition checks for workflow logic |
| Variables | 9 | Predefined constant or computed values |
Actions perform data transformations and computations, returning modified values.
Date (10 commands)
| Command | Description |
|---|---|
CalculateDateTimeDuration |
Calculates duration between two datetime values |
ConvertDateTimeToEpoch |
Converts ZonedDateTime to epoch timestamp |
GetFirstDayOfMonth |
Finds the first day of the month for a given date |
GetFirstDayOfYear |
Finds the first day of the year for a given date |
GetLastDayOfMonth |
Finds the last day of the month for a given date |
GetLastDayOfYear |
Finds the last day of the year for a given date |
GetNextDayOfWeek |
Gets next date of particular day of week |
GetNextWorkDate |
Gets next working date (Monday to Friday are considered working days) |
GetPreviousDayOfWeek |
Gets previous date of particular day of week |
GetPreviousWorkDate |
Gets previous working date (Monday to Friday are considered working days) |
Dictionary (5 commands)
| Command | Description |
|---|---|
FindCommonKeys |
Finds common keys between two dictionaries |
FindUncommonKeys |
Finds keys that are unique to each of two dictionaries |
GetKeysAsList |
Returns all keys from a dictionary as a list |
GetValuesAsList |
Returns all values from a dictionary as a list |
MergeDictionary |
Merges two dictionaries into one |
File (8 commands)
| Command | Description |
|---|---|
CombineFilePath |
Combines a base path with path segments to create a file path variable |
DecodeBase64ToFile |
Decodes a Base64 string to a file |
EncodeFileToBase64 |
Encodes a file to a Base64 string |
GetAvailableDirectory |
Finds an available directory path by appending an incrementing counter if the directory already exists |
GetAvailableFile |
Finds an available file path by appending an incrementing counter if the file already exists |
GetFilesWithExtensions |
Gets list of file paths matching specified extensions from a directory |
GetSanitizedFileName |
Sanitizes a filename by replacing OS-specific invalid characters with a replacement character |
GetTextFromFile |
Reads file content as text |
List (11 commands)
| Command | Description |
|---|---|
AddItem |
Creates an independent copy of the list and adds an item to it |
ChunkList |
Creates independent sublists by dividing the list into chunks of specified size |
DiffList |
Creates an independent copy containing items from the first list that are not in the second list |
FindCommonItems |
Creates an independent copy containing items that appear in both lists |
MergeList |
Creates an independent merged copy combining items from both lists |
RemoveDuplicatesList |
Creates an independent copy containing only unique items |
RemoveEmptyItemsList |
Creates an independent copy containing only non-empty items |
ReverseList |
Creates an independent copy of the list with items in reverse order |
ShuffleList |
Creates an independent copy of the list with items in random order |
SortList |
Creates an independent copy of the list with items sorted in the specified order |
StripList |
Removes leading and trailing whitespace from each string in a list |
Number (6 commands)
| Command | Description |
|---|---|
CalculateSumSubset |
Finds a subset of numbers whose values add up to a given target sum, within a specified deviation threshold |
GetDecimalPart |
Gets fractional part of a number |
GetIntegerPart |
Gets integral part of a number |
GetMaxNumber |
Gets maximum number from a list of numbers |
GetMinNumber |
Gets minimum number from a list of numbers |
RoundNumber |
Rounds a number to a specified number of decimal places |
Path (4 commands)
| Command | Description |
|---|---|
GetFileExtension |
Gets file extension from a given file |
GetFileNameWithExtension |
Gets file name with extension from a given file |
GetFileNameWithoutExtension |
Gets file name without extension from a given file |
GetParentFile |
Gets parent directory of a file as a File type |
Record (2 commands)
| Command | Description |
|---|---|
SetRecord |
Creates an independent copy of the record with specified columns and values set |
UpdateCell |
Creates an independent copy of the record with the specified cell updated |
Regex (1 command)
| Command | Description |
|---|---|
MatchRegex |
Finds regex matches and extracts full matches, numbered groups, and specified named groups |
Security (1 command)
| Command | Description |
|---|---|
GenerateTOTP |
Generates a Time-based One-Time Password (TOTP) based on RFC 6238 |
String (18 commands)
| Command | Description |
|---|---|
Base64Decode |
Decodes provided Base64 to plain string |
Base64Encode |
Encodes provided string to Base64 string |
ChangeCase |
Changes text case to uppercase, lowercase, title case, or sentence case |
EscapeCSV |
Escapes string for CSV column |
EscapeHTML |
Escapes string for HTML |
EscapeJSON |
Escapes string for JSON |
EscapeXML |
Escapes string for XML |
NormalizeSpace |
Normalizes whitespace in a string |
PadText |
Pads text on the left or right side with a specified string to reach a target length |
ReplaceTemplate |
Replaces occurrences of dictionary keys with their corresponding values in a text |
Strip |
Removes all leading and trailing whitespace |
StripLeading |
Removes all leading whitespace |
StripLeadingZeroes |
Removes all leading zeroes from string |
StripTrailing |
Removes all trailing whitespace |
UnescapeCSV |
Returns a String value for an unescaped CSV column |
UnescapeHTML |
Unescapes a string containing entity escapes to actual Unicode characters |
UnescapeJSON |
Returns a String value for an unescaped JSON |
UnescapeXML |
Unescapes a string containing XML entity escapes to actual Unicode characters |
Table (15 commands)
| Command | Description |
|---|---|
AddColumn |
Creates an independent copy of the table with a new column added |
ConvertColumnToList |
Gets datatable column to list |
ConvertHeaderToList |
Gets datatable headers to list |
ConvertTableToDictionary |
Converts table column data to key-value pairs |
ConvertTableToHTML |
Converts a Data Table to a customizable HTML table string |
NormalizeHeaders |
Creates an independent copy of the table with normalized headers |
RemoveEmptyColumns |
Creates an independent copy of the table with empty columns removed |
RemoveEmptyRows |
Creates an independent copy of the table with empty rows removed |
ReverseTableRows |
Creates an independent copy of the table with rows in reverse order |
SetRowAsHeader |
Creates an independent copy with a specific row set as header |
SetTableSchema |
Creates an independent copy of the table with updated schema |
SliceColumns |
Creates an independent table copy containing only the specified columns |
SliceTable |
Creates an independent table copy containing only the specified rows |
TrimHeaders |
Creates an independent copy of the table with trimmed headers |
UpdateCell |
Updates a cell value in a data table at the specified row and column position |
URL (6 commands)
| Command | Description |
|---|---|
BuildURL |
Builds a URL with query parameters from a base URL and a dictionary of parameters |
DecodeURL |
Decodes a URL-encoded string |
EncodeURL |
Encodes a string for use in a URL |
GetHostname |
Extracts the hostname from a URL |
GetProtocol |
Extracts the protocol/scheme from a URL |
GetQueryParameters |
Extracts query parameters from a URL and returns them as a dictionary |
Event-based workflow triggers.
| Command | Description |
|---|---|
DatetimeTrigger |
Time based trigger |
Custom loop commands for traversing structured content.
| Command | Description |
|---|---|
HTMLTableIterator |
Iterates through tables in HTML content |
Boolean condition checks for workflow branching.
| Command | Description |
|---|---|
HasFileWithExtension |
Checks if directory contains a file with specified extension |
HasRecordHeader |
Checks if record has specified column header in schema |
HasTableColumns |
Checks if table has all specified column headers in schema |
HasTableHeader |
Checks if table has specified column header in schema |
IsFileWritable |
Checks if file is available for write operation |
IsRecordBlank |
Checks if all cell values in the Record are blank (null, zero-length, or whitespace-only) |
IsRecordEmpty |
Checks if all cell values in the Record are empty (null or zero-length; whitespace counts as non-empty) |
IsRecordSchemaBlank |
Checks if all header names in the Record's schema are blank (null, zero-length, or whitespace-only) |
IsRecordSchemaEmpty |
Checks if all header names in the Record's schema are empty (null or zero-length; whitespace counts as non-empty) |
IsTableSchemaBlank |
Checks if all header names in the Table's schema are blank (null, zero-length, or whitespace-only) |
IsTableSchemaEmpty |
Checks if all header names in the Table's schema are empty (null or zero-length; whitespace counts as non-empty) |
StringBeginsWith |
Checks if string begins with given prefix |
StringEndsWith |
Checks if string ends with given suffix |
Predefined constant or computed values.
| Command | Description |
|---|---|
AuthToken |
Get control room auth token of current user |
CRURL |
Get control room url |
EmptyRecord |
Empty record |
EmptyString |
Empty string value |
EmptyTable |
Empty table |
UserDownloadDirectory |
Returns the standard user download directory path even if the directory does not exist |
UserHomeDirectory |
Gets the absolute path to the current user's home directory |
Username |
Get current user's username |
UUID |
Universally Unique Identifier value |
Download the latest package from the releases page.
JAR File (Recommended)
- Navigate to Manage → Packages → Import
- Upload the
.jarfile
ZIP File (Community Edition)
- Navigate to Automation → Import
- Upload the
.zipfile
Important: Community Edition users must manually update the package version to the latest in each bot's properties panel, as the system does not set it automatically.
Search for "Toolbox" in the Bot Editor Actions panel and drag commands into your workflow.
For issues, questions, or contributions:
- Repository: A360-Tools/Toolbox
- Issue Tracker: GitHub Issues
- Author: Sumit Kumar
For developers and contributors
- Java JDK 11
- Gradle 7.x or higher
- AA360 Bot Command SDK (included in
libs/directory)
-
Clone the Repository
git clone https://github.com/A360-Tools/Toolbox.git cd Toolbox -
Build the Package
# Windows gradlew.bat clean shadowJar # Linux/Mac ./gradlew clean shadowJar
-
Locate the Package
The compiled package will be in:
build/libs/Toolbox.jar -
Upload to Control Room
Follow the Installation instructions to upload the built package.
Toolbox/
├── src/
│ ├── main/
│ │ ├── java/sumit/devtools/
│ │ │ ├── actions/ # Action commands
│ │ │ ├── conditionals/ # Conditional commands
│ │ │ ├── properties/ # Property commands (shown as String/Path/URL in editor)
│ │ │ ├── variables/ # Variable commands
│ │ │ ├── iterators/ # Iterator commands
│ │ │ ├── triggers/ # Trigger commands
│ │ │ └── utils/ # Utility classes
│ │ └── resources/
│ │ ├── icons/ # Command icons
│ │ ├── locales/ # Localization files
│ │ └── package.template # Package metadata template
│ └── test/
│ └── java/ # Test classes
├── docs/
│ ├── images/ # Screenshots used in this README
│ └── superpowers/ # Design specs and plans
├── libs/ # AA360 SDK libraries
├── build.gradle # Gradle build configuration
├── CLAUDE.md # Development standards
└── README.md # This file
This project follows strict AA360 Bot Command Development Standards documented in CLAUDE.md. Key standards include:
- Return Label Pattern: Use "Assign <specific_output> to"
- Boolean Inputs: Use
AttributeType.BOOLEANwith explicit options - Class Naming:
- Actions: Verb-based (e.g.,
GetMaxNumber,ConvertTableToHTML) - Conditionals: State checks (
Is...,Has...,Are...) - Properties: Direct verb form (e.g.,
Base64Encode,EscapeHTML) - Variables: Noun forms only (e.g.,
EmptyString,UUID)
- Actions: Verb-based (e.g.,
- Annotation Guidelines: Proper capitalization, tense, and structure
- Parameter Ordering: HELP parameters must always be last
- Create command class in appropriate package
- Follow naming conventions from
CLAUDE.md - Add proper annotations (
@BotCommand,@CommandPkg, etc.) - Implement command logic with error handling
- Create corresponding test class
- Update this README with command documentation
# Run all tests
gradlew test
# Run specific test class
gradlew test --tests "date.GetNextDayOfWeekTest"
# Run tests with detailed output
gradlew test --infoThe project includes comprehensive test coverage:
- Unit tests for all commands
- Edge case validation
- Error handling verification
- Type safety checks
Tests use TestNG framework and follow consistent patterns:
@BeforeMethod: Set up test data@Test: Individual test cases@AfterMethod: Clean up resources
Made with care for the AA360 automation community




