Release Notes
This page documents the version history and changes for Erik's ToolBox for Business Central. Use this page to understand what features and improvements are included in each release, as well as any important upgrade notes.
Publisher: hougaard.com Current Version: 5.0.0.380
Version 5.0.0.0 (Current Release)
Version 5.0.0.0 rebuilds the AI agents on the new AL AI Services app, continues the expansion of the AL Compiler and Interpreter with more of the standard AL type system and record API, adds a round of correctness fixes from a full interpreter and SQL engine audit, and includes a documentation sweep that aligns every language page with the interpreter's actual behavior.
The 5.0 line ships as a series of builds. They are listed below, newest first, with the build number each change first appeared in.
5.0.0.380
Clear(Rec.Field)now resets only that field. It used to clear the whole record, so the other
fields, the key values, and the filters were lost. Every readable field type is supported; on a Blob field it drops the in-memory content, and an OutStream opened on that field before the Clear no longer writes its content back at the next Insert/Modify. Clear(Rec) still resets the whole record.
5.0.0.379
Blob Field Streams
- A
Blobfield on a record opens streams directly, as in standard AL:
Rec.BlobField.CreateOutStream(OutStream[, Encoding]), CreateInStream(InStream[, Encoding]), HasValue, and Length. Writes are held in memory until Insert or Modify persists them; CalcFields a Blob loaded from the database before reading it. A second CreateOutStream on a written field overwrites in place without truncating, matching native behavior.
- The encoding argument accepts the native literal (
TextEncoding::UTF8,::UTF16,::MSDos,
::Windows) as well as the text names ('utf8', 'utf16', 'msdos', 'windows'); this applies to Temp Blob too. See Streams.
- IntelliSense: typing
RecordVar.BlobField.offers the Blob field members, with parameter
hints for CreateOutStream and CreateInStream.
5.0.0.377 – 5.0.0.378
- New record marking members
Mark,MarkedOnly, andClearMarks, with IntelliSense entries.
See Record Methods.
- The Record Methods page now documents the full record member surface (see "Shipped earlier"
below), and this release-notes page was added for the 5.0 line.
- The Assisted Setup entry for Erik's ToolBox now opens the ToolBox menu.
5.0.0.376
- AL object metadata: page actions added by a page extension are now recorded under the
extension that owns them; actions the extension only modifies stay attributed to the base page.
5.0.0.374
- A ternary expression (
Cond ? A : B) now reports the type of the chosen branch to its caller.
A ternary wrapped around a procedure call with a declared return type previously evaluated to an untyped value, so spreadsheet cells written from it came back empty.
5.0.0.372 – 5.0.0.373
- Agent attachments: the media type of an image or PDF is now detected from the file content
(PNG, JPEG, GIF, WebP, PDF) instead of assuming JPEG; providers that verify the declared type no longer reject the request.
- Agent chat: a duplicate poll from the client no longer starts a second model call after the
tool loop has finished, and typing while tool calls are pending drops the pending work and asks the model with the new question.
5.0.0.371
Documentation
- Every AL language page was checked against the interpreter source. Corrections include: text
methods are 1-based with IndexOf returning 0 when not found and require a Text receiver; TextBuilder is not a ToolBox type; foreach does not run over a Dictionary (iterate Keys()/Values()); only 0DT is a valid DateTime literal; exclear() takes no arguments and clears the whole sheet. A new Limitations and Differences page lists every unsupported feature in one place.
- New documentation for the AI agents: AI Agents Overview
and the provider, conversation, and tool reference pages.
5.0.0.369 – 5.0.0.370
- Running programs now requires a registered license; an unregistered installation stops with
an error instead of a message. SaaS sandboxes are exempt.
- The SQL engine gained a read-only mode (SELECT, UNION, INTERSECT, and EXCEPT only; INSERT,
UPDATE, and DELETE are rejected before any table is opened) for hosts that expose SQL without write access.
- The AL Compiler and Interpreter app now contains an Excel workbook builder (styled
.xlsx
output written as an Office Open XML package) for use by other apps.
5.0.0.365 – 5.0.0.368
- A Welcome page is shown once on first use of an unregistered installation, and Erik's
ToolBox is listed under Assisted Setup.
- The Coding Agent Setup group on the ToolBox Setup page is obsolete and hidden. Provider
settings are entered on the AI Providers page; they are not migrated automatically.
- Permission sets updated for the new AL AI Services objects.
5.0.0.357 – 5.0.0.358
AI Agents
- New AL AI Services app, installed as a dependency of the ToolBox. It provides the shared
AI Providers page, the chat panel, the conversation store, and the connections to the AI providers. Allow HttpClient Requests must be enabled for this extension.
- The coding agent is now the ToolBox Agent, a FactBox next to the Interactive Code editor
that acts through tools: it reads and replaces the program, compiles it, runs it and reads the console, looks up objects, fields, keys, and sample rows, searches the interpreter's function catalog, and lists, opens, and saves programs. The "Use the code from this reply" button is gone; the agent writes to the editor directly.
- New SQL Agent FactBox on the SQL Workbench that writes and executes ToolBox SQL, shows
results in the grid, and works with saved statements.
- Twelve providers: Azure Open AI, ChatGPT Open AI, Anthropic (Claude), LM Studio, Google Gemini,
xAI Grok, Mistral, DeepSeek, Moonshot Kimi, Alibaba Qwen, Zhipu GLM, and MiniMax. Anthropic prompt caching is applied automatically.
- Conversations are saved after every reply, can be resumed from the panel, and are listed on
the new AI Conversations page. Image and PDF attachments (provider dependent) and interrupting a running tool chain are supported. See AI Agents Overview.
SQL Workbench
- Saved statements: Load, Save, and Save As ... keep named SQL statements with a
description, shared across companies.
- The SQL engine moved into the AL Compiler and Interpreter app, and the results grid was
rebuilt on a new grid control.
- A full audit of the SQL engine fixed a long list of parsing and execution defects. Highlights:
an unfinished NOT IN no longer matches every row (it could empty a table); LIKE treats only % and _ as wildcards; set operations (UNION, INTERSECT, EXCEPT, including ALL) accept SELECT operands only, align differently named columns, and apply a trailing ORDER BY/OFFSET/FETCH to the whole result; GROUP BY/ORDER BY accept ordinals; HAVING compares typed values; DISTINCT works over grouped rows; IN uses a hash set; subqueries, sorts, and set operations are bounded; writes go through Validate and check the value count and literal types; option fields compare by ordinal; unterminated strings and identifiers report a lexer error; double-quoted and non-ASCII identifiers are accepted. See SQL Syntax.
Char, Byte, and String Indexing
- New
CharandBytetypes that convert freely to and fromIntegerand one-characterText. Textvariables can be indexed:S[i]reads a character,S[i] := 'x'replaces one, and
writing to position StrLen(S) + 1 appends. See AL Language Overview.
Editor / IntelliSense
- The IntelliSense engine now lives in the AL Compiler and Interpreter app, driven by a single
signature catalog shared by completion and parameter hints. Hosts add their own functions to the catalog, so the Excel functions and eval appear with parameter hints.
Shipped earlier (4.0.0.345 – 4.0.0.351), first documented in 5.0.0.377
These changes were already in the 4.0 builds but were missing from the 4.0.0.0 notes.
Record Additions (4.0.0.345)
- New record members:
GetBySystemId,RecordId(formatted text),FieldError,
TransferFields, Copy, FieldCaption, TableCaption, SetRecFilter, GetFilters, GetRangeMin, GetRangeMax, and LockTable with its Wait/VersionCheck arguments.
Validate(Field)with one argument validates the field's current value;ModifyAllgained the
UseValidate argument; ChangeEnvironment accepts an optional company.
- The system fields
SystemId,SystemCreatedAt/By, andSystemModifiedAt/Byare available on
every record. See Record Methods.
Language Additions (4.0.0.345, parameterless calls in 4.0.0.349)
- The ternary operator
Cond ? A : B, block comments/* ... */, and compound assignment
(+=, -=, *=, /=) on record fields and array elements.
- Parameterless calls may omit the parentheses (
Rec.Reset;), matching native AL. foreachover aJsonArraywith aJsonTokenloop variable;JsonObject.Keys()and
JsonObject.Values().
Text.Splitwith several separators,Text.IndexOfAny, andTrimStart/TrimEndwith a
character set.
Codeunit.Run,Page.Run,Page.RunModal,Report.Run, andReport.RunModalstatements with
an optional record argument.
Interpreter Audit Fixes (4.0.0.345)
forloops with equal bounds run exactly once;breakno longer leaks out of the enclosing
block; a procedure without exit returns its declared default instead of a stale value; sized parameters no longer leak their length; case compares typed values (a Code label matches case-insensitively, 1.0 matches 1); Option return types work; %1 renders an Option as its member name; a failed Evaluate leaves the target untouched (including Guid).
Excel (4.0.0.350)
exgetandexsetaccept a cell reference ('B2') in addition to row and column numbers,
and the cell-reference form of exget returns typed values. exopen accepts an optional page caption. See Excel Functions.
4.0.0.351
- Fixes for untyped boolean expressions and for
eval.
Version 4.0.0.0
Version 4.0.0.0 is a major expansion of the AL Compiler and Interpreter. It brings the ToolBox AL dialect much closer to standard Business Central AL by adding a real type system with automatic conversion, native date/time values, generic collections, full JSON support, streams, and — the headline feature — the ability to call a large set of standard Business Central codeunits directly from a script.
Automatic Type Conversion
- The interpreter now converts automatically between compatible types on assignment, argument
passing, and comparison — integer↔decimal↔duration, text↔code, and native date/time arithmetic.
- Operand types are inferred even in contexts without an assignment target, such as a bare
comparison if D2 - D1 > 5 then.
- See Types and Conversion.
Native Date, Time, and DateTime Values
- Dates, times, and datetimes are now first-class native values rather than text, so they compare
chronologically and support arithmetic (Date - Date yields days, DateTime - DateTime yields a duration, and so on).
- The full date/time function set is available:
createdatetime,currentdatetime,today,
time, workdate, dmy2date, date2dmy, date2dwy, dwy2date, dt2date, dt2time, normaldate, closingdate, and calcdate.
BigInteger Type
- A new
BigInteger64-bit whole-number type for values beyond the range ofInteger, including
JsonValue.AsBigInteger() interop.
Arrays
- One-dimensional, 1-based arrays:
array[N] of ElementType, witharraylen,compressarray,
and copyarray.
- Whole-array assignment (
A := B) andforeachover an array are rejected as compile errors,
matching native AL (AL0145/AL0421); arrays are passed by value.
- See Arrays.
Lists and Dictionaries
- Generic collections
List of [Type](1-based) andDictionary of [KeyType, ValueType], with a
full member set, iterated using the new foreach statement.
- See Collections.
Full JSON Support
JsonObject,JsonArray(0-based),JsonToken, andJsonValuewith parse/serialize
(ReadFrom/WriteTo), structural members, typed getters with a DefaultIfNotFound overload, the As* value accessors, and SelectToken JPath queries.
- See Json Support.
Streams
InStreamandOutStreamwithreadtext/writetext,eos,length,position, and
resetposition, plus the global helpers copystream, downloadfromstream, and uploadintostream. See Streams.
Codeunit Support
- Scripts can declare codeunit variables (
MyMath: Codeunit Math;) and call the members of a
large set of standard codeunits: Math, Type Helper, Rest Client, Temp Blob, Base64 Convert, Regex, Data Compression, Environment Information, No. Series, Language, Confirm Management, Sales-Post, Purch.-Post, Release Sales/Purchase Document, Gen. Jnl.-Post Batch, Archive Management, CheckManagement, SegManagement, Email / Email Message, and Format Address.
- The mechanism is extensible: other apps register additional subtypes through the
Codeunit_Type_Hgd enum and the InterpreterCodeunit_Hgd interface.
- See Codeunit Support.
Language Additions
caselabels now support multiple comma-separated values and ranges (1, 3 .. 5:).- The
inset-membership operator (if X in [1, 3 .. 5] then) and thexorboolean operator. - The
foreachstatement for iterating lists and dictionaries.
Record Additions
setcurrentkey(set the sort order while keeping filters) andascending(get or set the sort
direction) are now supported. See Record Methods.
- Temporary records are now supported: declare a record with the
temporarykeyword
(Rec: Record "Sales Line" temporary;) to work with an in-memory dataset isolated from the database. All record methods operate on the in-memory rows, IsTemporary() reports the state, temporary writes need no write-permission confirmation, and Clear keeps the dataset (use DeleteAll to empty it). temporary is matched only in the declaration position, so it remains usable as a variable name. See Temporary Records.
Editor / IntelliSense
- Completion and parameter hints now cover codeunit subtype names after the
codeunitkeyword;
member completion behind codeunit, json, list, dictionary, and stream variables; the new type keywords (biginteger, array[, list of [, dictionary of [, the four json types, instream, outstream); and the new keywords foreach, xor, and in.
Program Storage in GitHub
- Shared programs can now be synchronized to a GitHub repository, in addition to the existing
Azure Blob Storage backend. A new Program Storage setting (None / Azure Blob Storage / GitHub) on the ToolBox Setup page selects the backend; the legacy Use Azure Storage toggle is migrated automatically to Azure Blob Storage.
- With the GitHub backend, each shared program is stored as an individual
.alfile under a
Programs/<NickName>/ folder (with a small .toolbox.json metadata file), so every save is a commit and you get full version history. Programs are pushed on save and pulled on open, and each environment uses its own nickname folder so several environments can share one repository.
- GitHub program storage is configured with its own account, personal token, repository, and
optional branch fields, independent of the Data in GitHub table-data feature. See Program Storage.
Email Connectors
- Three new email connectors extend the standard Business Central email framework, so you can
send mail through modern API-based providers without SMTP: Microsoft Graph (a Microsoft 365 mailbox via an Entra ID app registration), Google Workspace (a Workspace user via a Gmail API service account with domain-wide delegation), and Moosend (the Moosend / Sitecore Send transactional API).
- Each connector appears as a new account type on the standard Email Accounts page, stores its
secret in IsolatedStorage, and offers Setup Guide, Test Connection, and Send Test Email actions on its account card. An Enabled mode (Enabled / No Sending / Redirect / Disabled) makes it safe to exercise email flows in test environments. See Email Connectors.
Version 3.0.0.0
Version 3.0.0.0 is a major release that delivers a comprehensive suite of developer and power-user tools directly within the Business Central client. This version represents a significant expansion of the ToolBox platform, introducing a full AL language interpreter, AI-assisted coding, and a wide range of data management features.
Interactive AL Code Editor
- A full-featured code editor is embedded within Business Central, providing a development-like experience without leaving the client.
- The editor supports syntax highlighting for AL language constructs, making code easier to read and write.
- IntelliSense provides real-time auto-completion suggestions for table names, field names, function names, keywords, and data types.
- The editor includes a console output area where results from
message()calls and other output operations are displayed. - Code can be written, compiled, and executed in an interactive REPL-style workflow.
AL Language Interpreter
- ToolBox includes a complete AL language interpreter that can parse and execute AL code at runtime within Business Central.
- The interpreter supports a substantial subset of the AL language, including variable declarations, control flow statements (
if/then/else,case,for,while,repeat/until), record operations, and more. - Over 43 built-in functions are available, covering string manipulation, numeric operations, date and time handling, record operations, and system functions.
- The compiler pipeline includes a lexer (tokenizer), parser (AST generation), and interpreter (runtime execution), providing detailed error messages with line numbers for syntax and runtime errors.
- Error types include
NotImplemented,Unexpected,DuplicateIdentifier,TypeMismatch,UndeclaredIdentifier, and others, helping you quickly identify and fix issues in your code.
AI Agent Mode
- Agent Mode integrates artificial intelligence into the ToolBox coding experience, allowing you to request code generation, explanations, debugging help, and more.
- Supports multiple AI providers:
- Azure OpenAI -- Microsoft's enterprise-grade AI service.
- ChatGPT (OpenAI) -- OpenAI's conversational AI models.
- Anthropic -- Anthropic's Claude AI models.
- LM Studio -- Locally hosted language models for privacy-sensitive environments.
- Configuration is flexible, allowing you to specify the API key, endpoint URL, and model for each provider.
- AI-generated code can be reviewed, edited, and executed directly in the ToolBox editor.
Excel Integration
- ToolBox provides built-in functions for reading from and writing to Excel files.
- You can programmatically create Excel workbooks, populate cells with data, and save the results.
- Reading Excel files allows you to import data from spreadsheets into Business Central using AL code.
- This feature is useful for data migration, report generation, and integration workflows that involve Excel-based data exchange.
Batch Processing
- The Batch Processing feature (also known internally as the One Field Report) provides a wizard-guided interface for performing bulk data modifications.
- You can select a target table, apply filters to narrow the set of records, choose a field to modify, and specify the new value.
- The wizard provides a preview of affected records before executing the change, helping prevent unintended modifications.
- This feature enables power users to perform mass data updates without writing code.
SQL Workbench
- The SQL Workbench provides a query-based interface for working with Business Central data using SQL-like syntax.
- Supported operations include
SELECT,INSERT,UPDATE, andDELETE, providing a familiar experience for users accustomed to SQL databases. - Query results are displayed in a grid format for easy review.
- The SQL Workbench is a powerful tool for ad-hoc data analysis, troubleshooting, and data manipulation tasks.
Run Programs
- The Run Programs feature allows administrators to assign saved ToolBox programs to specific users.
- Assigned programs appear in a user-friendly list that non-developer users can access and execute.
- This feature bridges the gap between developers who write scripts and end users who need to run them, enabling self-service automation.
- Programs can be scheduled for automatic execution using Business Central's Job Queue.
Object Inspector
- The Object Inspector allows you to browse and examine metadata about Business Central objects in your environment.
- You can view details about tables, pages, codeunits, reports, queries, XMLports, and other object types.
- Information includes object names, IDs, properties, fields (for tables), and other metadata.
- This feature is useful for understanding your environment's object landscape without needing access to the AL development environment.
Data Inspector
- The Data Inspector provides a direct, grid-based interface for viewing and editing data in Business Central tables.
- You can navigate to any table, apply filters, sort records, and view field values.
- Inline editing allows you to modify field values directly in the grid.
- The Data Inspector is useful for data verification, troubleshooting, and quick corrections that do not require writing code.
Remote Packages
- Remote Packages allow you to transfer data between Business Central environments.
- You define a package by specifying the tables, fields, and filters that define the data set.
- Data can be exported from one environment and imported into another, facilitating data migration, environment synchronization, and cross-environment workflows.
- Authentication with the remote environment is handled using configurable credentials.
Data in GitHub
- The Data in GitHub feature enables you to store Business Central table data in a GitHub repository.
- This provides version control for your data, allowing you to track changes over time, compare versions, and restore previous states.
- Integration uses a Personal Access Token for authentication and supports standard GitHub repositories.
- This feature is useful for maintaining audit-ready data snapshots, collaborating on reference data, and managing configuration data across environments.
User Management
- ToolBox includes a built-in user management system with three access levels:
- Standard -- Basic access to ToolBox features.
- Extended -- Additional capabilities beyond the Standard level.
- GodMode -- Full access to all features, including user management and configuration.
- Users must be added to the ToolBox Users before they can access the application.
- Only GodMode users can manage (add, modify, remove) other users.
- See the Permissions page for a detailed description of each access level.
Audit Trail
- All significant user actions within ToolBox are logged in an audit trail.
- The audit trail records who performed each action, what was done, and when it occurred.
- This feature supports compliance, accountability, and troubleshooting.
- Audit trail data is stored locally within Business Central and is not transmitted externally.
Symbol Management
- ToolBox downloads and caches metadata (symbols) about Business Central objects for use by IntelliSense.
- Symbols include table definitions, field lists, function signatures, and data types for all objects in your environment, including those from installed extensions.
- Symbols can be refreshed at any time to reflect changes in your environment.
- The first symbol download may take several minutes depending on the number of extensions installed.
Build History (3.0.0.301 through 3.0.0.310)
The following builds represent incremental updates to the 3.0.0.0 release, each containing improvements, fixes, and refinements:
| Build | Notes |
|---|---|
| 3.0.0.310 | Latest build |
| 3.0.0.305 | Incremental update |
| 3.0.0.304 | Incremental update |
| 3.0.0.303 | Incremental update |
| 3.0.0.301 | Incremental update |
Detailed changelogs for individual builds track build-level changes such as bug fixes, performance improvements, and minor feature enhancements. For detailed build-level changelogs, contact the publisher at hougaard.com.
Previous Versions
Erik's ToolBox has evolved through multiple major versions before reaching 3.0.0.0. Earlier versions laid the groundwork for the current feature set:
- Version 2.x -- Introduced core scripting capabilities and initial data management tools within Business Central. These versions established the foundation of the AL interpreter and the code editor.
- Version 1.x -- The original release of Erik's ToolBox, providing basic automation and scripting features for Business Central power users.
Detailed release notes for previous major versions are available from the publisher. If you need information about a specific historical version, contact hougaard.com.
Upgrade Notes
Updating to the Latest Version
To update Erik's ToolBox to the latest version:
- SaaS Environments: Extension updates are typically managed through the Business Central Administration Center. Check for available updates and apply them according to your update schedule. In some cases, updates may be applied automatically by Microsoft as part of the extension update cycle.
- On-Premises Environments: Download the latest extension package from the publisher and publish it to your Business Central server. Use the Business Central Administration Shell or Administration tools to manage the extension lifecycle.
- Verify After Update: After the update is applied, verify the new version number on the About ToolBox page. Confirm that the version matches the expected release.
Upgrading to Version 5.0.0.0
- A third app, AL AI Services, is installed with the ToolBox. On-premises, publish it after the
AL Compiler and Interpreter and before the ToolBox. Enable Allow HttpClient Requests for it if you use the AI agents.
- The AI provider settings from the ToolBox Setup page (Coding Agent Setup group) are not
migrated. Open ToolBox Setup, choose AI Providers, enter the endpoint, key, and model, and turn on the ToolBox Agent toggle.
- The ToolBox permission set now includes the AL AI Services objects; if you maintain your own
permission sets, add the AI Provider and AI Conversation tables and the AL AI Services pages.
Breaking Changes
Version 3.0.0.0 is a major release. If you are upgrading from a version prior to 3.0.0.0, be aware of the following:
- Review any custom programs you have written in ToolBox to ensure compatibility with the updated AL interpreter. The supported language subset may have changed between major versions.
- Verify that your configuration settings are preserved after the upgrade. In particular, check the user access levels and any scheduled Job Queue entries, and re-enter the AI provider settings on the AI Providers page when upgrading to 5.0.
- If you use the Data in GitHub or Remote Packages features, verify that your connection settings and credentials are still valid after the upgrade.
Data Migration Considerations
- Program Records: Your saved programs should be preserved during the upgrade. However, it is recommended that you export or back up critical programs before upgrading, as a precaution.
- User List: The ToolBox Users and access level assignments should be maintained during the upgrade.
- Audit Trail: Existing audit trail entries should be preserved.
- Configuration: ToolBox Setup settings should be retained. Verify settings after the upgrade. The AI provider configuration moved to the AI Providers page in version 5.0 and must be entered there.
- Symbols: It is recommended that you refresh symbols after upgrading to ensure that the symbol cache is up to date with any changes introduced in the new version.
Post-Update Steps
After updating to a new version of Erik's ToolBox, perform the following steps:
- Verify the Version: Open the About ToolBox page and confirm the version number.
- Refresh Symbols: Run a symbol refresh to ensure IntelliSense has the latest metadata.
- Verify Settings: Review the ToolBox Setup page and confirm that all settings are correct.
- Test Key Programs: Run your critical ToolBox programs to verify they execute correctly with the updated version.
- Check User Access: Verify that all users in the ToolBox Users still have the correct access levels.
- Review Job Queue: If you have scheduled ToolBox programs via the Job Queue, verify that the Job Queue Entries are still active and configured correctly.
- Check License Status: Open the Registration page and verify that your license is still active. If the license needs to be revalidated after the upgrade, complete the registration process.
Requesting Features
If you have ideas for new features or improvements to Erik's ToolBox, contact the publisher at hougaard.com. User feedback is valuable for guiding the development of future versions.
Reporting Issues
If you encounter a bug or unexpected behavior after updating, refer to the Common Issues page for known solutions. If your issue is not listed, contact support as described on the Support page. Include the version number and build number to help the support team identify the issue.
Related Topics
- Introduction and Overview -- What Erik's ToolBox is and what it does
- License Terms -- Licensing terms and conditions
- Common Issues -- Solutions to frequently encountered problems