AL Hero is an all-in-one toolkit for Microsoft Dynamics 365 Business Central AL developers. It brings project dashboards, symbol browsing, AL object generation, JSON-to-AL conversion, API testing, translation management, schema visualization, dependency analysis, legacy C/AL migration, RDL report previewing, and snapshot performance analysis together in one place inside Visual Studio Code.
Table of Contents
Features Overview
| Tool |
Command |
What it does |
| 🧭 Dashboard |
AL Hero: Open Dashboard |
Central hub with project overview, stats, and one-click BC commands |
| 🔍 Browse Project Symbols |
AL Hero: Browse Project Symbols |
Search and navigate every AL object in your workspace |
| 🚀 Project Bootstrap |
AL Hero: Open Project Bootstrap |
Visually design and scaffold standardized BC projects |
| 🧱 AL Object Creator |
AL Hero: Open AL Object Creator |
Scaffold a table and its related pages, API, query, report, and codeunit from a single screen |
| 🔄 JSON → AL Generator |
AL Hero: Open JSON2AL Generator |
Convert any JSON payload into ready-to-use AL code |
| 🔌 API Explorer |
AL Hero: Open API Explorer |
Browse, test, and inspect BC API endpoints live |
| 🌍 Translation Assistant |
AL Hero: Open Translation Assistant |
Manage XLIFF translation files with a visual editor |
| 🗄️ Schema Viewer |
AL Hero: Open Schema Viewer |
Explore table schemas, fields, keys, and relationships |
| 🕸️ Dependency Graph |
AL Hero: Open Dependency Graph |
Visualize object dependencies across your workspace |
| 🏗️ Legacy Object Converter |
AL Hero: Open Legacy Object Converter |
Migrate exported NAV C/AL objects into AL, edited and saved like any normal file |
| 🧾 Preview RDL Report |
AL HERO: Preview RDL |
Instant, read-only design preview of .rdl/.rdlc report layouts |
| 🔍 Snapshot Performance Analyzer |
AL HERO: Snapshot Performance Analyzer |
Turn a performance profile into a clear, actionable dashboard |
1. Dashboard
The Dashboard is AL Hero's central hub and the default landing page for the extension. It gives you a live overview of your workspace, key project details, and one-click access to every AL Hero tool.
Note: The Dashboard is only available from the AL Hero Activity Bar icon - it's the extension's root view and isn't listed in the Command Palette.
How to use it:
- Click the AL Hero icon in the VS Code Activity Bar. The Dashboard opens automatically.
- Check the Workspace Overview card for your detected
app.json details - app name, publisher, version, target, and workspace root.
- Review Project Statistics for live counts of tables, pages, codeunits, reports, and other objects.
- Use Quick Actions to jump into any AL Hero tool with one click.
- Run common BC operations - download symbols, publish to sandbox, package your extension - directly from the Dashboard.
At a glance:
- Default landing page, opened from the Activity Bar
- Workspace identity and location at a glance
- Live object counts across the project
- One-click access to every tool and common BC commands
2. Browse Project Symbols
Command: AL Hero: Browse Project Symbols
A fast, searchable explorer for every AL object in your project - including objects from referenced symbol packages - without digging through folders.
How to use it:
- Open the panel from the Command Palette.
- AL Hero scans the workspace and linked symbol packages, then lists every detected object.
- Type in the search bar to filter by name, ID, or type as you go.
- Use the Type filter to narrow results to one object type (Table, Page, Codeunit, Report, Enum, and more) - the filter now applies consistently across all tabs.
- Click any object to preview its ID, type, and source location. Actions are available directly inline on each row.
- Click ↗ Open Source to jump to the object's
.al file, or to the relevant symbol reference for dependency objects.
- Right-click a row to Copy Object ID or Copy Object Name.
At a glance:
- Real-time search across thousands of objects
- Filter by object type, applied consistently across all tabs
- Widened ID column and clearer row action buttons
- One click from result to source code
- Right-click to copy an object's ID or name
- Rescan on demand to pick up new objects
- Fixed display of Microsoft/base and dependency objects that were previously showing truncated
3. Project Bootstrap
Command: AL Hero: Open Project Bootstrap
Design and scaffold Business Central projects visually. Instead of just generating folders, Project Bootstrap lets you pick a template, customize the structure, preview the result, and generate a consistent project foundation in seconds.
How to use it:
- Open Project Bootstrap from the Command Palette.
- Choose a built-in profile or one of your own.
- Add, remove, rename, or reorganize folders and files.
- Drag and drop to reorder items or build nested structures.
- Review the live project tree preview.
- Generate the structure with one click.
Built-in profiles:
- Standard AL Extension
- Library Extension
- Test Extension
- AI Extension
- Reporting Extension
Profile management: create, rename, delete, import, and export reusable profiles that match your team's standards.
At a glance:
- Drag-and-drop visual project designer
- Built-in and custom templates
- Import/export support for sharing profiles across teams
- Live preview before generating
4. AL Object Creator
Command: AL Hero: Open AL Object Creator (also AL HERO: Create Table and AL HERO: Generate Objects from Table)
A fast, focused scaffolding tool: turn a table - existing or brand new - into a set of ready-to-edit AL object files in a few clicks, all within a single screen. There are no separate wizard steps - selecting or creating a table, configuring objects and fields, generating, and reviewing results all happen in the same view.
Supported object types:
| Type |
Details |
| Table |
Created via the "New Table" flow |
| List Page |
Repeater over the fields you select |
| Card Page |
Group layout over the fields you select |
| API Page |
API-ready page with a versioned entity/entity set |
| Query |
One data item, with one column per selected field |
| Report |
Processing-only dataset with an empty request page |
| Table-bound Codeunit |
Bound to the table, ready for your own logic |
Object Creator is focused specifically on scaffolding a table and its related objects. It does not generate Enum, Interface, Control Add-in, Permission Set, Entitlement, Profile, Table Extension, Page Extension, or XMLport objects.
Existing Table workflow:
- Open the panel and choose Existing Table.
- Pick a table from the list - built from tables found in your current workspace only (it doesn't look at dependency or Base Application symbols).
- Toggle which objects to generate and which fields to include, and adjust IDs or output folders if needed.
- Click Generate Objects. Results appear inline, in the same screen.
New Table workflow:
- Choose New Table. Define the table's ID, name, and fields (name, type, length, Primary Key, AutoIncrement) directly in the same screen. A starting
No. field is suggested as a convenience but is fully editable or removable.
- The Objects to Generate list is pre-filled automatically and updates as you type the table name.
- Click Create Table & Generate Objects (or Create Table Only if no objects are selected). The table is created immediately with an inline confirmation, and then behaves just like an existing table for the rest of the session.
Configuration:
- Each object row shows a checkbox, type, editable name, ID, and output folder (shown workspace-relative, e.g.
src/Pages/) - click the folder to override it with a native folder picker.
- A Generate Tooltips toggle (on by default) adds a
ToolTip to every field on generated List and Card pages.
- IDs and names are validated as you go, with inline warnings such as
⚠ Page ID 50001 is already used. List, Card, and API pages share one page-level pool since they're all page objects, while Query, Report, and Codeunit each have their own independent ID/name pool.
- Existing files are never overwritten silently - a conflict prompt (Skip / Replace / Choose Another Name) appears for every file that already exists.
Quick access:
- AL HERO: Create Table - opens Object Creator directly in the New Table flow.
- AL HERO: Generate Objects from Table - opens Object Creator with a table already selected. Available from the Command Palette, by right-clicking a table file, or from a CodeLens shown directly above any table declaration in your code.
At a glance:
- Everything happens in one screen - no wizard hops between selecting a table, configuring objects, and reviewing results
- Smart ID suggestion per object type, based on your workspace's ID ranges
- Generate Again re-runs generation from the same configuration without starting over
- New Object resets the panel back to the start screen
- Never overwrites an existing file without asking first
5. JSON → AL Generator
Command: AL Hero: Open JSON2AL Generator
Drop in any JSON file and get structured AL code back - tables, pages, or XMLports - with fields, types, and captions inferred automatically.
How to use it:
- Open the panel. Drag and drop a
.json file onto the drop zone, or click Browse. OData responses ({ "value": [...] }) and plain JSON arrays or objects are all supported.
- AL Hero lists every detected field with its inferred AL type and a sample value.
- Use the checkboxes (or All/None) to select which fields to include.
- Pick an object type from the tabs: Table, Page List, Page Card, or XMLport.
- Fill in the configuration panel - object number, name, source table, etc.
- Fine-tune each field's AL name, data type, and length in the field configuration table.
- Click ▶ Generate AL Code to see syntax-highlighted AL in the right panel.
- Click Copy, or Create .al File to save it directly into your workspace.
Field type inference:
| JSON Type |
Default AL Type |
| String |
Text[100] |
| Number |
Decimal or Integer |
| Boolean |
Boolean |
| Null |
Text[100] |
| Object / Array |
Text[250] |
All inferred types can be overridden before generating.
At a glance:
- Drag-and-drop JSON loading, anywhere on the window
- Automatic OData envelope unwrapping
- Live syntax-highlighted preview
- Per-field renaming, type, and length overrides
- One-click file creation with a sensible filename
6. API Explorer
Command: AL Hero: Open API Explorer
An HTTP client built for Business Central APIs. Browse endpoints found in your workspace, configure authentication, build requests, and inspect responses without leaving VS Code.
Connect to your environment:
- Click the connection pill (top-left) or the ⚙ gear icon to open Connection Settings.
- Enter your Tenant ID and Environment Name.
- Choose an authentication method:
- Basic Auth - username and password.
- OAuth 2.0 - access token URL, client ID, client secret, and client authentication method (
client_secret_post or client_secret_basic).
- Click Save. The connection pill turns green and shows the environment name once connected.
Browse and send requests:
- The left panel lists endpoints found in your workspace - API pages and API queries. Use the search bar to filter.
- Click an endpoint to load its URL. The
company parameter is added automatically when available.
- Pick an HTTP method (
GET, POST, PUT, PATCH, DELETE) and adjust the URL if needed.
- Use the Params accordion to manage query parameters - the URL bar and params table stay in sync, and
company gets a distinct accent pill.
- Click ▶ Send (or
Ctrl+Enter) to fire the request.
Inspect the response:
- Status code and text, color-coded (green for 2xx, amber for 3xx, red for errors)
- Response time, color-coded by speed
- Response size and element count
- A running call counter for the session
- A syntax-highlighted JSON viewer
Search within a response: type in the search bar above the response body to highlight matches, see a position counter (e.g. 3 / 14), and jump between results with ▲ / ▼.
At a glance:
- Automatic endpoint discovery, with ⟳ Rescan after code changes
- Params and URL always stay in sync
- Session history for up to 30 calls
Ctrl+Enter to send without leaving the keyboard
7. Translation Assistant
Command: AL Hero: Open Translation Assistant
A visual XLIFF editor for Business Central translation files. Track progress across locales, edit translations inline, validate quality, and save - all inside VS Code.
Select a file:
- Open the panel. AL Hero scans your workspace for
.xlf files in a Translations folder.
- Each file in the left panel shows a language flag, locale code, a progress bar, and counts for translated ✓, missing ✕, and needs-review ⚑ strings.
- Use the search bar and status filter to narrow the list.
- Click a file to load it.
Edit translations:
- The right panel lists translation units with ID, Source (original text), and Target (translation) columns.
- Click a Target cell to edit it inline.
- Set the unit's state with the state selector (Translated, Needs Review, Final, etc.).
- Changes save automatically - on blur and while typing - no Save button needed.
- Press
Escape to discard an edit.
Filter and navigate: use the search bar to filter by source, target, ID, or notes, and the status filter to show only Translated, Untranslated, or Needs Review units. A counter always shows how many units match.
Batch operations: select rows individually or with the header checkbox, then mark them all as Translated or Needs Review at once from the batch bar.
Notes: click the note icon on a row to see developer and AL Hero notes (read-only) for context.
Validation: click ⚑ Validate to check for missing translations, source-identical targets, and placeholder mismatches. Click an issue to jump straight to it.
At a glance:
- Silent auto-save as you type
- Header progress bar, color-coded by completion (green ≥ 90%, amber ≥ 50%, red < 50%)
- ↗ Open File to view the raw XLIFF in a text editor
- ↺ Rescan to pick up new translation files
8. Schema Viewer
Command: AL Hero: Open Schema Viewer
Explore Business Central table schemas visually - fields, metadata, keys, indexes, and relationships through an interactive graph.
Browse tables:
- Open the panel. All tables in your workspace and linked symbol packages appear in the left panel.
- Use the search bar to filter by name or caption.
- Use the Type filter (Normal, Temporary, CRM, ExternalSQL) and the Show Obsolete toggle to narrow the list.
- Click a table to open its detail pane.
Inspect fields:
| Column |
Description |
| # |
Field ID |
| Field Name |
The AL field name |
| Type |
Data type and length (e.g. Text[50], Decimal) |
| Caption |
Display caption |
| Relation |
Related table, shown as → TableName |
| Classification |
Data classification (e.g. CustomerContent, SystemMetadata) |
| Flags |
IDX (indexed), RO (read-only), Obs (obsolete) |
Click a column header to sort, click again to reverse. Use the field search bar to filter within the table. Click a field row to open the Metadata Sidebar for full details.
Keys: click ⊟ Keys to see every key and index, which fields each covers, and whether it's the primary key or a unique index.
Relationship graph:
- Each table is a node; arrows represent
TableRelation dependencies.
- Click a node to highlight it and dim everything unrelated; click again (or the background) to clear.
- Drag nodes to rearrange, zoom with scroll or trackpad.
- Show Fields displays the first 5 fields inside each node.
- Connected Only hides tables with no relationships.
- ⊡ Fit zooms to fit all visible nodes.
- ⊟ Details collapses the detail pane for more graph space.
Export: export the graph as SVG, high-resolution PNG (2x), or ultra-resolution PNG (4x) for documentation and presentations.
At a glance:
- ↗ Open jumps straight to the table's
.al source
- Stats bar shows total tables, fields, and relationships
- Reset clears all filters and search terms
9. Dependency Graph
Command: AL HERO: Show Dependency Graph
An interactive, workspace-wide map of how your AL objects relate - which pages extend which tables, which codeunits subscribe to which events, and how everything fits together.
How to use it:
- Run
AL HERO: Scan Workspace first (or just open the panel - if the workspace hasn't been scanned yet, it'll prompt you to scan right there).
- Objects appear as color-coded nodes grouped by type, connected by directed edges.
- Click a node to focus it - direct connections are highlighted, everything else dims. Click again or the background to clear.
- Drag nodes to reorganize, pan by dragging the background, zoom with the scroll wheel.
- Right-click a node for options to open its source file, focus its connections, or copy its name or ID.
- Hover a node to see its type, ID, file path, and any obsolete or external flags.
Filter and navigate:
- Type filter - a compact dropdown checklist lets you select or deselect individual object types (Table, Page, Codeunit, Report, Enum, etc.) with one click, with a single Select all option at the top.
- Search bar - now wider and easier to use; dims non-matching nodes, keeping matches and their immediate neighbors visible.
- Scope toggle - switch between Workspace (your own objects) and + Ext (includes symbol dependencies).
External objects: objects outside your workspace now appear as a single combined external/base object instead of duplicates, even when many of your objects reference the same one. Only objects your workspace actually references are pulled in - nothing unrelated gets scanned in from elsewhere.
Export: export the graph as SVG, high-resolution PNG (2x), or ultra-resolution PNG (4x).
Relationship colors:
| Color |
Relationship |
| 🟢 Green |
SourceTable |
| 🔵 Blue |
TableRelation |
| 🟣 Purple |
Extends |
| 🟡 Amber |
EventSubscriber |
| 🟠 Orange |
EventPublisher |
| 🟦 Teal |
RunObject |
| 🟩 Olive |
Implements |
| 🟤 Gold |
RecordVariable (temp or global Record "X" variables) |
| ⬦ Default |
Other / unresolved |
At a glance:
- Live node and edge counts in the stats bar
- ⊡ Fit to fit all visible nodes
- ↺ Reset layout to re-run the automatic layout
- Obsolete objects flagged with a red badge
- External dependencies shown as a single combined node, dimmed with dashed borders
10. Legacy Object Converter
Command: AL Hero: Open Legacy Object Converter
A migration workspace for converting exported NAV (C/AL) .txt objects into Business Central AL. Rather than a custom preview panel, converted objects open as real .al files in a normal VS Code editor tab - full syntax highlighting, IntelliSense, and live compiler diagnostics included. Saving the file completes the migration.
Import:
- Open the panel from the Command Palette, or jump straight to importing with AL Hero: Legacy Object Converter: Import NAV Objects.
- Set the Destination Folder for converted
.al files.
- Click Import NAV Objects and select one or more exported
.txt files (multi-select supported).
- AL Hero reads each file's
OBJECT header to detect its type, ID, and name, then adds it to the Conversion Queue, grouped by type by default.
Convert and review:
- Click an object in the queue. AL Hero converts it and opens the AL code as a normal, editable tab beside the queue.
- Edit as needed - fix names, adjust types, resolve ID conflicts. Compiler errors and warnings appear inline, just like normal AL development.
- Nothing is written to disk yet - the tab shows unsaved changes, same as any new file in VS Code.
Export: there's no separate export step. Press Ctrl+S to save, and VS Code writes the file to your destination folder. The object's status flips to Exported. You can reopen and re-save an exported object anytime.
Managing a large migration:
Objects move through three states: Not Started → In Progress (opened, not yet saved) → Exported (saved at least once).
- Use the search box to filter by name, type, or ID.
- Use the status and sort dropdowns to organize a large batch - sort by Type to migrate one object type at a time.
- Each queued object offers 📄 Open Original TXT (view the source NAV export side by side) and ✕ Remove from Queue (stops tracking it - never deletes a saved file).
- Exported objects stay visible in the queue, so a migration spanning multiple sessions stays easy to track.
At a glance:
- Multi-file import in one go
- Direct Import NAV Objects command available from the Command Palette
- Automatic object type, ID, and name detection from the
OBJECT header
- Grouped, searchable, sortable queue built for large migrations
- Real AL editing - full syntax highlighting, IntelliSense, formatting, diagnostics
- Save-to-export workflow, no separate export dialog
- One click to compare with the original source
- Queue persists across sessions
11. Preview RDL Report
Command: AL HERO: Preview RDL
Get an instant, read-only design view of an RDL report's layout, right inside VS Code - no report execution and no data connection required.
How to use it:
- Right-click a
.rdl or .rdlc file in the Explorer and choose AL HERO: Preview RDL. You can also use VS Code's Reopen Editor With… picker and select AL HERO: Preview RDL Report.
- AL Hero renders the report's layout as defined - text boxes, rectangles, tables, images, and lines - positioned just like in Report Designer's Design view.
- Fields bound to data show the underlying field name (e.g.
[CustomerNo]); other dynamic expressions show as «Expr»; static text appears exactly as written.
- Table/grid elements render as real tables, matching the report's row and column structure.
- Click Open Raw XML in the toolbar to view the underlying report file as plain text side by side with the preview.
At a glance:
- Instant layout preview - no need to run the report or connect to data
- Read-only viewer - your report file is never modified
- Grids and tables render as real tables, not approximations
- Opens via right-click or "Reopen Editor With…", without changing your default editor for RDL files
Command: AL HERO: Snapshot Performance Analyzer
Turn a Business Central performance profile into a clear, actionable dashboard - no more digging through raw JSON to figure out why an operation was slow.
How to use it:
- Generate a
.alcpuprofile file - either with VS Code's AL: Generate profile file command or Business Central's web-client Performance Profiler.
- Open it with AL HERO: Snapshot Performance Analyzer from the Command Palette. No configuration needed.
What you get:
- Where the time went - a clear breakdown of AL code vs. database (SQL) vs. idle/wait time, at a glance.
- Which apps and extensions are involved - and which ones are actually doing the work.
- Top hotspots - the slowest AL methods and SQL statements, ranked together, since either can be the real bottleneck.
- Automatic investigation flags - statistically unusual methods and queries (like a query firing hundreds of times in a loop) surfaced automatically, with the exact numbers behind each flag.
- Full call hierarchy - drill into exactly what called what, down to the individual SQL statement.
- Complete sortable hotspot list - not just the top 10, the entire ranked breakdown.
At a glance:
- No configuration needed - open a profile and go from "this was slow" to "here's what to fix" in seconds
- Works with profiles from either VS Code or the Business Central web client
- AL and SQL hotspots ranked together, so the real bottleneck is never hidden behind a single view
Getting Started
- Install AL Hero from the Visual Studio Marketplace.
- Open a Business Central AL workspace in VS Code.
- Open the Command Palette (
Ctrl+Shift+P) and type AL Hero to see all available tools.
- Start from the Dashboard for a quick overview, or jump straight into any tool.
- For API work, open API Explorer and configure your connection in ⚙ Connection Settings first.
- Migrating from NAV? Open Legacy Object Converter, set a destination folder, and import your exported C/AL
.txt files.
- Working with reports? Right-click any
.rdl/.rdlc file and choose AL HERO: Preview RDL for an instant layout preview.
- Chasing a slow operation? Generate a
.alcpuprofile file and open it with AL HERO: Snapshot Performance Analyzer for an instant breakdown.
Tips & Shortcuts
| Shortcut |
Action |
Ctrl+Enter |
Send request (API Explorer) |
Ctrl+S |
Export the currently open object (Legacy Object Converter) |
Escape |
Close modal dialogs / discard an inline translation edit |
Ctrl+Shift+P → AL Hero |
Open any AL Hero tool from the Command Palette |
- Rescan (↺) buttons are available in API Explorer, Translation Assistant, Browse Project Symbols, and AL Object Creator to refresh data without reopening the panel.
- All panels share a consistent dark theme, layout, and keyboard patterns - learn one, and the rest feel familiar.
- In API Explorer, the
company parameter is pinned to the top of the params table with a distinct accent style so it's never accidentally removed.
- In Translation Assistant, auto-save is silent for individual edits - notifications only appear for batch operations.
- In Legacy Object Converter, saving is exporting - there's no separate export button.
- Right-click a table file, or use the CodeLens above a table declaration, to jump straight into Generate Objects from Table with that table already selected.
- Start each session from the Dashboard for a quick health check before diving into a specific tool.
Marketplace
AL Hero is available on the Visual Studio Marketplace. Search for AL Hero, or install it from the Extensions view in VS Code (Ctrl+Shift+X).
Contributing
Pull requests aren't currently being accepted, but feedback is always welcome. Have an idea or found a bug? Open an issue on the GitHub Issues page.
License
Released under the Apache License 2.0. You're free to use, modify, and distribute this software, subject to the license terms.
Feedback & Support
Questions or issues? Open an issue on GitHub, or reach out to the community for support and suggestions.
Made with ❤️ by Yahya Touil.
More Business Central and AL development insights on Yahya's Blog.
AL Hero - Built for Business Central AL developers.
| |