A comprehensive collection of Bot Commands for Automation Anywhere 360 (A360) that extends the platform's capabilities with 100+ specialized commands for data manipulation, file operations, string processing, and more.
AA360 Toolbox is a professional-grade Bot Command package designed to enhance Automation Anywhere 360 workflows with powerful data manipulation and processing capabilities. Built with Java 11 and following AA360 Bot Command Development Standards, this package provides type-safe, well-tested commands that seamlessly integrate with your automation workflows.
Key Highlights:
- 100+ bot commands across 10+ categories
- Comprehensive test coverage with TestNG
- Type-safe implementations with proper error handling
- Consistent annotation patterns and naming conventions
- Production-ready with extensive validation
- Date & Time Operations: Advanced date calculations, conversions, and manipulations
- Data Structure Manipulation: Comprehensive operations for Lists, Dictionaries, Tables, and Records
- File System Operations: File handling, path utilities, and content management
- String Processing: Encoding, formatting, and transformation utilities
- Number Operations: Mathematical calculations and number utilities
- URL Handling: URL parsing, encoding, and query parameter extraction
- Security: TOTP generation for two-factor authentication
- HTML Processing: Table iteration and HTML manipulation
| Type | Count | Description |
|---|---|---|
| Actions | 64 | Data transformation and computation commands |
| Conditionals | 13 | Boolean condition checks for workflow logic |
| Properties | 23 | Data property extraction and formatting |
| Variables | 9 | Predefined constant values |
| Iterators | 1 | Custom iteration capabilities |
Actions perform data transformations and computations, returning modified values.
Date/DateTime (10 commands)
| Command | Description |
|---|---|
CalculateDateTimeDuration |
Calculates duration between two datetime values |
ConvertDateTimeToEpoch |
Converts datetime to Unix epoch timestamp |
GetFirstDayOfMonth |
Gets the first day of the month for a given date |
GetFirstDayOfYear |
Gets the first day of the year for a given date |
GetLastDayOfMonth |
Gets the last day of the month for a given date |
GetLastDayOfYear |
Gets the last day of the year for a given date |
GetNextDayOfWeek |
Gets next occurrence of a specific day of the week |
GetNextWorkDate |
Gets the next working day (excludes weekends) |
GetPreviousDayOfWeek |
Gets previous occurrence of a specific day of the week |
GetPreviousWorkDate |
Gets the previous working day (excludes weekends) |
Dictionary (5 commands)
| Command | Description |
|---|---|
FindCommonKeys |
Finds keys that exist in both dictionaries |
FindUncommonKeys |
Finds keys unique to each dictionary |
GetKeysAsList |
Extracts all dictionary keys as a list |
GetValuesAsList |
Extracts all dictionary values as a list |
MergeDictionary |
Merges two dictionaries with conflict resolution |
File (8 commands)
| Command | Description |
|---|---|
CombineFilePath |
Safely combines file path components |
DecodeBase64ToFile |
Decodes Base64 string and writes to file |
EncodeFileToBase64 |
Encodes file contents to Base64 string |
GetAvailableDirectory |
Finds available directory name with number suffix |
GetAvailableFile |
Finds available filename with number suffix |
GetFilesWithExtensions |
Lists files matching specified extensions |
GetSanitizedFileName |
Removes invalid characters from filename |
GetTextFromFile |
Reads file contents with encoding support |
List (11 commands)
| Command | Description |
|---|---|
AddItem |
Adds item to list at specified position |
ChunkList |
Splits list into smaller chunks of specified size |
DiffList |
Finds items in first list not in second list |
FindCommonItems |
Finds items present in both lists |
MergeList |
Combines two lists with duplicate handling |
RemoveDuplicatesList |
Removes duplicate items from list |
RemoveEmptyItemsList |
Removes empty/null items from list |
ReverseList |
Reverses the order of list items |
ShuffleList |
Randomly shuffles list items |
SortList |
Sorts list in ascending or descending order |
StripList |
Trims whitespace from all string items |
Number (6 commands)
| Command | Description |
|---|---|
CalculateSumSubset |
Calculates sum of numbers in list within range |
GetDecimalPart |
Extracts decimal portion of a number |
GetIntegerPart |
Extracts integer portion of a number |
GetMaxNumber |
Finds maximum number in a list |
GetMinNumber |
Finds minimum number in a list |
RoundNumber |
Rounds number to specified decimal places |
Record (2 commands)
| Command | Description |
|---|---|
SetRecord |
Creates or updates record with field values |
UpdateCell |
Updates a specific cell value in a record |
String (3 commands)
| Command | Description |
|---|---|
ChangeCase |
Converts text to uppercase, lowercase, or title case |
PadText |
Pads text with characters to specified length |
ReplaceTemplate |
Replaces placeholders in template with dictionary values |
Table (16 commands)
| Command | Description |
|---|---|
AddColumn |
Adds a new column to table with default values |
ConvertColumnToList |
Extracts table column as a list |
ConvertHeaderToList |
Extracts table headers as a list |
ConvertTableToDictionary |
Converts two-column table to dictionary |
ConvertTableToHTML |
Converts table to HTML table markup |
NormalizeHeaders |
Normalizes table headers (removes special chars, etc.) |
RemoveEmptyColumns |
Removes columns where all cells are empty |
RemoveEmptyRows |
Removes rows where all cells are empty |
ReverseTableRows |
Reverses the order of table rows |
SetRowAsHeader |
Promotes a data row to become table headers |
SetTableSchema |
Sets or updates table schema/headers |
SliceColumns |
Extracts subset of columns from table |
SliceTable |
Extracts subset of rows from table |
TrimHeaders |
Trims whitespace from all header names |
UpdateCell |
Updates a specific cell value in table |
URL (2 commands)
| Command | Description |
|---|---|
BuildURL |
Constructs URL from components with proper encoding |
GetQueryParameters |
Parses URL query parameters to dictionary |
Regex (1 command)
| Command | Description |
|---|---|
MatchRegex |
Matches text against regex pattern with group extraction |
Conditionals check conditions and return boolean values for workflow branching.
File Conditionals (2 commands)
| Command | Description |
|---|---|
HasFileWithExtension |
Checks if directory contains files with extension |
IsFileWritable |
Checks if file is writable |
Record Conditionals (5 commands)
| Command | Description |
|---|---|
HasRecordHeader |
Checks if record has specified header |
IsRecordBlank |
Checks if all cell values are empty or whitespace-only |
IsRecordEmpty |
Checks if all cell values are empty/null |
IsRecordSchemaBlank |
Checks if all schema headers are blank |
IsRecordSchemaEmpty |
Checks if record has no schema headers |
String Conditionals (2 commands)
| Command | Description |
|---|---|
StringBeginsWith |
Checks if string starts with prefix |
StringEndsWith |
Checks if string ends with suffix |
Table Conditionals (4 commands)
| Command | Description |
|---|---|
HasTableColumns |
Checks if table has all specified columns |
HasTableHeader |
Checks if table has a header schema |
IsTableSchemaBlank |
Checks if all table headers are blank |
IsTableSchemaEmpty |
Checks if table has no headers |
Properties extract or transform data properties, typically used for data formatting.
CSV Properties (2 commands)
| Command | Description |
|---|---|
EscapeCSV |
Escapes string for CSV format |
UnescapeCSV |
Unescapes CSV-formatted string |
File Properties (4 commands)
| Command | Description |
|---|---|
GetFileExtension |
Extracts file extension from path |
GetFileNameWithExtension |
Extracts filename with extension from path |
GetFileNameWithoutExtension |
Extracts filename without extension from path |
GetParentFile |
Gets parent directory from file path |
HTML Properties (2 commands)
| Command | Description |
|---|---|
EscapeHTML |
Escapes string for HTML entity encoding |
UnescapeHTML |
Unescapes HTML entities to plain text |
JSON Properties (2 commands)
| Command | Description |
|---|---|
EscapeJSON |
Escapes string for JSON format |
UnescapeJSON |
Unescapes JSON-encoded string |
String Properties (7 commands)
| Command | Description |
|---|---|
Base64Decode |
Decodes Base64 string to plain text |
Base64Encode |
Encodes string to Base64 format |
NormalizeSpace |
Normalizes whitespace in string |
Strip |
Removes leading and trailing whitespace |
StripLeading |
Removes leading whitespace |
StripLeadingZeroes |
Removes leading zeros from numeric string |
StripTrailing |
Removes trailing whitespace |
URL Properties (4 commands)
| Command | Description |
|---|---|
DecodeURL |
Decodes URL-encoded string |
EncodeURL |
Encodes string for URL format |
GetHostname |
Extracts hostname from URL |
GetProtocol |
Extracts protocol from URL |
XML Properties (2 commands)
| Command | Description |
|---|---|
EscapeXML |
Escapes string for XML entity encoding |
UnescapeXML |
Unescapes XML entities to plain text |
Variables provide constant or computed values for common use cases.
File Variables (2 commands)
| Command | Description |
|---|---|
UserDownloadDirectory |
Returns user's Downloads directory path |
UserHomeDirectory |
Returns user's home directory path |
Record Variables (1 command)
| Command | Description |
|---|---|
EmptyRecord |
Provides an empty record value |
String Variables (4 commands)
| Command | Description |
|---|---|
AuthToken |
Retrieves authentication token from environment |
EmptyString |
Provides an empty string value |
UUID |
Generates a new UUID |
Username |
Retrieves current username |
Table Variables (1 command)
| Command | Description |
|---|---|
EmptyTable |
Provides an empty table value |
URL Variables (1 command)
| Command | Description |
|---|---|
CRURL |
Provides Control Room URL |
HTML Iterator (1 command)
| Command | Description |
|---|---|
HTMLTableIterator |
Iterates through HTML table rows and cells |
- 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
│ │ │ ├── variables/ # Variable commands
│ │ │ ├── iterators/ # Iterator commands
│ │ │ └── utils/ # Utility classes
│ │ └── resources/
│ │ ├── icons/ # Command icons
│ │ ├── locales/ # Localization files
│ │ └── package.template # Package metadata template
│ └── test/
│ └── java/ # Test classes
├── 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
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
Search for "Toolbox" in the Bot Editor Actions panel and drag commands into your workflow.
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.
For issues, questions, or contributions:
- Repository: A360-Tools/Toolbox
- Issue Tracker: GitHub Issues
- Documentation: See
CLAUDE.mdfor development standards - Author: Sumit Kumar
Made with care for the AA360 automation community