Deep code insight for Business Central. For you, and for your AI agent.

Know if a procedure can force a database Commit. Protect database integrity by instantly exposing explicit Commit calls hidden deep in execution chains.
Find the exact event publisher to subscribe to. Locate reachable business logic events instantly and trace the shortest path to see when they fire.
Trace execution from button click to database commit. Follow the call path from a page action to a Commit across your AL codebase without setting a breakpoint.
Trust exact static analysis, not probabilities. When Prism traces a database Commit or side-effect, the path exists in your code—never in an AI guess.
Verify your AI agent against the actual code graph. Open the Prism Paths in your agent’s answer and confirm them with flow graphs, the RIMD Overview, and Commit insights.
Get the database footprint of any procedure. The RIMD Overview shows the tables a procedure can read, insert, modify, delete, or rename—and whether triggers run.
Trace through the apps you only have as packages. Prism reads the source shipped inside .app packages, building one graph across modules, events, interfaces, and extensions.
Trace code execution backward to the UI click. Backtrack control flow from deep business logic straight to the page action or report run that triggered it.
Connect your AI directly to your AL code graph. Feed structural graph facts to GitHub Copilot, Claude Code, or any MCP client through Prism’s built-in MCP server.
Know the full domino effect before you change a line. Trace reachability, table mutations, and procedure side-effects across your AL codebase.

One code graph for you and your AI agent. Prism for AL maps your entire solution into a unified code graph. Trace execution flows interactively, review complex logic, and power your AI agent with instant MCP queries.

Answers a text search cannot give

Which user actions can reach this procedure? Can it commit? Which tables does it write? Prism answers from control flow across every module, including events, interfaces and extensions, not from matching characters in files.

Rule-based, so you can trust it

Static analysis over a typed graph. The same question gives the same answer every time, with a path you can click through to the code. When Prism says a procedure can reach a Commit, the path is in the code, not in a probability.

Built for the human in the loop

The agent asks the graph. You see the same graph as flow diagrams, RIMD signatures and commit reach. Review what the agent did with the evidence in front of you, not with its summary of it.

Prism on your own code, free for 14 days

Agentic Prism: an MCP server for AI coding agents New

Your AI coding agent is good at AL and blind to your solution: the other apps, the events, the extensions, the packages you have no source for. Prism gives it the same whole-solution view you have, as tools it can call: what calls what, which page actions lead where, whether a procedure can commit and which tables it writes, which code reaches A and B but not C, where a symbol is used and how.

Prism does the graph work and hands the agent the answer, not the files. Straighter answers, fewer tokens. And every answer is a node in the graph Prism draws, so you can check it.

Compared with the AL Language extension's own MCP server

Microsoft ships an MCP server with the AL Language extension. It is good at what it does, and it does something different: it operates the toolchain. Prism explains the solution. Most teams will run both.

AL Language extension

Operates the toolchain

Build, compile and publish the app, download symbols, and read what the compiler says.

  • al_build
  • al_compile
  • al_publish
  • al_downloadsymbols
  • al_getdiagnostics
  • al_symbolrelations

Both

Find a symbol by name

  • al_symbolsearch
  • find_symbols

Prism for AL

Explains the solution

What the code reaches, what reaches it, and what it does to your data, across every module.

Trace
  • find_flows
  • find_shortest_path
  • find_reachability_set
Consequences
  • find_commits
  • find_rimd
  • find_user_actions
Structure
  • find_references
  • find_extensions
  • search_object_outline
  • get_module_graph

Question by question

  • Answers it
  • Partly
  • No
What an agent can ask each MCP server, compared with plain text search
What the agent needs Prism for AL AL Language extension Text search
Operate the toolchain
Build, compile, publish, download symbols, read compiler diagnostics NoUse Microsoft's Yesal_build al_compile al_publish al_downloadsymbols al_getdiagnostics No
Find
An object or member by name Yesfind_symbolsRegular expressions, every module including packages, paged Yesal_symbolsearchPartial match, at most 200 results PartlyLiteral matches only
Every reference to a symbol, classified by how it is used Yesfind_referencesAssignment, transfer and parameter flags, as metrics, summary or tree. NoIn the editor and the LSP server, not over MCP PartlyMisses events, interfaces and property bindings
Trace
What calls this, transitively? What does it reach? Yesfind_flows find_shortest_path Partlyal_symbolrelationsOne hop only. No
Which page actions and reports lead to this code? Yesfind_user_actions No No
Can it reach a Commit? Which tables does it read, insert, modify, delete? Yesfind_commits find_rimd No No
Reaches A and B, but not C Yesfind_reachability_setOne call, not three result sets to compare: fewer tokens. No No
Structure
An object with its extensions merged into one outline Yessearch_object_outline find_extensions NoBase and extensions are separate symbols No
Dependencies you only have as .app packages YesSymbols always; source when the publisher includes it PartlySymbol search; nothing structural beyond one hop No
Module and namespace dependency graph Yesget_module_graph find_namespace_dependencies PartlyDeclared app.json dependencies only No
Runs Inside Prism, or headless with StaticalPrismCmd. HTTP or stdio Headless with altool. stdio or HTTP Everywhere

Every Prism tool, grouped by what it does, in the MCP server manual

Based on the AL Language extension 18.0 documentation and the standalone almcp server. The extension also ships a call-graph command line, altool graph, which computes reachability over source folders. It is not exposed to agents over MCP, does not read .app packages, and does not model table operations or commits.

Four questions, one workspace

What a reviewer asks, and how to check the answers

Asked of the LearnPrism workspace behind every screenshot on this page: 19 apps, 8,794 objects, Microsoft's Base Application among them. The counts below are this workspace's; in yours, Prism counts your code.

Modify

Who modifies Cust. Ledger Entry?

29procedures and triggers modify it

A question that takes a developer an afternoon with a text search, because a modify is not a string to search for: it is a Modify, with or without triggers, reached through calls, events and interfaces.

Asked through Prism, it is one call. Out of 10,373 places that can lead to that modify, the agent gets the 29 and never reads the rest.

An AI coding agent in Visual Studio Code answering, through Prism, which procedures modify Cust. Ledger Entry: 29, all at distance 1
All 29 came back at distance 1, so they are the actual call sites, not upstream callers. The full answer lists them grouped by object, 17 objects in all.

Commit

Which of them can also commit?

22procedures modify it and can reach a commit

The same question, and the code must also be able to reach a Commit. That is the set a reviewer wants: a ledger entry modify and a commit in one flow is how half-applied entries end up in the database.

One of them is ProcessElectronicPayment in codeunit CheckManagement. Its only reachable Commit sits in RemoveCreditTransfers, one call down.

An AI coding agent in Visual Studio Code answering, through Prism, which procedures both modify Cust. Ledger Entry and reach a Commit: 22 minimal witnesses
The answer opens with the five procedures in Payment Tolerance Management that modify and commit directly, and works outwards to PostCust in Gen. Jnl.-Post Line at distance 17. Every row carries its Prism Path, so you can open it in Prism.

User actions

Can a user get there?

3ways in to ProcessElectronicPayment

Two page actions and a report:

  • Void Payments on the Payment Journal
  • Transmit Payments on the Payment Journal
  • The report Void/Transmit Elec. Pmnts

From Void Payments to the commit: seven steps through procedures and triggers you can open. The agent noticed on its own that the commit fires from a report's OnAfterGetRecord, once per journal line.

An AI coding agent in Visual Studio Code listing, through Prism, the three user actions that reach ProcessElectronicPayment
Two page actions and one report, each with its Prism Path. The same answer continues with the seven-step path from Void Payments to the commit, through the report's OnAfterGetRecord trigger.

Review

Review what the agent did

Every answer the agent gets is a node in the graph Prism draws. Open ProcessElectronicPayment in Prism, and one strip of Immediate insights answers all three questions above: Commit reachable, 3 user actions, 8 tables modified. Each button opens the query behind the number.

Same rules, drawn for a person. The agent's claim becomes a picture you can check, and the picture is built by the analysis that answered the agent.

  • 02CommitWhich of them can also commit?
  • 03User actionsCan a user get there?
  • 01ModifyWho modifies Cust. Ledger Entry?
Prism for AL: Immediate insights for ProcessElectronicPayment showing Commit, 3 user actions and 8 modified tables
Commit is reachable, 3 user actions lead here, 8 tables can be modified. The agent's three answers, on one line.
More screenshots 3Fewer screenshots
Prism for AL: the one reachable procedure that commits, RemoveCreditTransfers
The Commit button: exactly one reachable place commits, RemoveCreditTransfers. Find Shortest Path shows how it is reached.
Prism for AL: RIMD query for ProcessElectronicPayment listing the tables it can touch
The RIMD buttons: 26 tables this procedure can touch. Under Delete, two: Credit Transfer Entry and Credit Transfer Register.
Prism for AL: inbound flow to ProcessElectronicPayment filtered to user actions
The UserAction button: two actions on the Payment Journal and one report. Three entry points, all of them checkable.

Connect

Connect your agent in a few minutes

Install the Connector. In Visual Studio Code, the Prism for AL Connector registers Prism's MCP server for any folder with an app.json, so GitHub Copilot finds it with no mcp.json to write. It also tells Copilot when to use Prism's tools instead of text search.

Connect over HTTP. Press Start on the MCP Server page, or run the server from the command line, and the agent connects to it. It works on a workspace that is already loaded, graph already built.

Start over stdio. With a stdio entry in the project's mcp.json, the agent starts the server itself whenever you open the folder or workspace. No window, nothing to start by hand; the index is built on each launch.

Works with any MCP-capable agent: GitHub Copilot in Visual Studio Code, Claude Code, Cursor. The tools read your AL source and .app packages, and never touch a database or a tenant.

How to connect your agent

Prism for AL: the MCP client config card on the MCP Server page, with the Visual Studio Code entry ready to copy
The MCP client config card on the MCP Server page writes the entry for the client you pick, named after the workspace, and copies it to the clipboard. The whole configuration for Visual Studio Code is seven lines.

Extensive code graph

Gain deep insights into syntax, references and control flow through calls to procedures and built-in functions, event publishers/subscribers, triggers and properties.

Flow visualization

Visualize control flows at procedure and trigger level

Use the Inbound flow-graph of a procedure or trigger to visualize the control flow paths that lead to the procedure or trigger getting called. Find usages shows only the direct callers. The inbound flow-graph traces every path that leads there, so an indirect caller doesn't slip past.

Use the Outbound flow-graph of a procedure or trigger to visualize what happens when the procedure or trigger executes.

Prism for AL: Inbound flow-graph
Inbound flow to procedure ProcessElectronicPayment.
Prism for AL: Outbound flow-graph
Outbound flow from procedure ProcessElectronicPayment.

Publishers

Find event publishers that you can subscribe to

Customizing Business Central is all about finding the right events to subscribe to. Find where the existing business logic begins, then click the EventPublisher button to find event publishers that may be reached by the business logic. Use Find Shortest Path to help you understand under which circumstances the event publisher can be reached.

Prism for AL: Immediate insights - event publishers
1. Click EventPublisher button on any procedure or trigger.
Prism for AL: Reachable event publishers
2. Browse reachable event publishers. Invoke Find Shortest Path to display flow path to the event publisher.

Commit

Can this procedure reach a commit?

When calling a procedure it is critical to know if it may reach an explicit Commit call as this could break database integrity.

Prism for AL: Immediate insights - commit
Immediate insights indicates that procedure ProcessElectronicPayment can reach an explicit call of Commit. Click the Commit button to see where the Commit gets called.
Prism for AL: Reachable committing nodes
Only procedure RemoveCreditTransfers calls Commit and is reachable from ProcessElectronicPayment. Use Find Shortest Path on the RemoveCreditTransfers node to see how the procedure is reachable from ProcessElectronicPayment.

RIMD

How does a business process use tables?

Look at the Read, Insert, Modify, Delete (RIMD) signature of a procedure or trigger to get a deeper understanding of how it works and which database trigger events you can subscribe to.

Prism for AL: Immediate insights - RIMD
Immediate insights with aggregated information about reachable RIMD operations for procedure ProcessElectronicPayment. Click e.g. Delete to see which two tables data is deleted from.
Prism for AL: RIMD overview
Credit Transfer Entry and Credit Transfer Register: the two tables ProcessElectronicPayment deletes from. Click the buttons to add more RIMD operations. Use the context menu on a table to view where the database operations take place.

User actions

Which user actions can lead to this procedure being called?

Backtrack control flow all the way back to user actions such as clicking a page action or running a report. Click the UserAction button to find which user actions potentially lead to the procedure or trigger being called.

Prism for AL: Backtrack to user actions
Click the UserAction button on any procedure or trigger.
Prism for AL: Backtrack to user actions
Three ways in, among them the report Void/Transmit Elec. Pmnts. Invoke Find Shortest Path to display a flow path from a user action to the procedure.

Shortest path

Connect the dots

No matter if a flow result originates from an outbound search (example: reachable event publishers) or inbound flow (example: backtracking to user actions), Find Shortest Path shows you the shortest control flow path between a start and an end point. Click the steps to view the code, so you can identify branching and looping statements; this will help you understand under which circumstances the flow is possible.

  • Show flow path from source to target node
  • Steps are numbered
  • Tree view provides context
  • Click on a flow node to navigate in Prism
  • Use expand/collapse buttons to get high-level overview
  • Use filter to reduce amount of data
Prism for AL: Find shortest path

Total solution overview

Open a solution the way that suits you, then see what it is made of: its modules, how they depend on each other, its translations and every object.

Open solution

Flexible options for opening a solution

We include source code of dependencies when available, so you get the full solution overview. When source code is not available for an app, we include symbol information from the .app file (most information apart from procedure and trigger bodies.)

Prism for AL: Open solution, with tiles to open a workspace file, open from BC, open a folder and open a package
  • Open workspace file: Opens a Visual Studio Code .code-workspace file.
  • Open from BC: Opens a solution from a running Business Central service.
  • Open folder: Opens a folder of Visual Studio Code projects or .al source files and packages (.app).
  • Open package: Opens a single package (.app file).

Module overview

What is your solution made of?

The solution page provides a quick overview of which modules (apps) the solution consists of and how they are related.

  • Modules: metadata from app.json, number of objects per type
  • Dependencies: used by (inbound), usings (outbound), and navigation between them
  • Translations: XLIFF file overview
Prism for AL: Solution page module overview

Module graph

See how your modules depend on each other

app.json names only a module's direct dependencies, and what those depend on stays out of sight. Prism draws the whole graph for your solution, including propagated dependencies such as Application.

  • Visually traverse dependencies
  • Propagated dependencies (e.g. Application)
  • Modules with only symbols marked with asterisk (*)
  • Flexible display options, e.g. version constraints
Prism for AL: Graph of dependencies between modules (app.json dependencies, application, platform) and propagated dependencies

Translations

Translation files overview and insight

As a solution grows, it can become hard to figure out which XLIFF files apply to a module and in case of multiple translations of the same label, which translation wins. Prism lists the XLIFF files that apply to each module and shows which translation wins.

Prism for AL: Translations overview
Base application translation overview: Origin tells you which app owns the XLIFF file.
Prism for AL: Translations applied
Inline view of field translation with insight into priority. In this case, the translation in LearnPrism overshadows the translation of the French language (France) app.

Object index

Filter, group and order objects as you like

Quickly locate objects with flexible object filtering. By default, objects are grouped by module and object type and modules are sorted by 'topological order' induced by the module dependencies.

Prism for AL object index grouping and sorting
Configure grouping and ordering.
Prism for AL object index
Filter objects by name with wildcards (here sales*setup), object number, object number ranges or combine with '|'.
Prism for AL object-level menu
Object context menu.

Rich code browsing experience

Read code faster: an object view with its extensions inlined, semantic colouring, an outline and its dependencies, and Visual Studio Code one step away.

Object view

Designed so you get insight quicker

Structured and colourful, packaged with information not available in the source code.

Prism for AL lists the object's extensions and customizations
List of object extensions and customizations.
Quick navigation links
Quick navigation to object detail sections.
Prism for AL: Object references are annotated with their defining module
Object reference inlays for defining module.
Prism for AL: Trigger events are displayed when subscribers exist.
Trigger events are displayed when subscribers exist.
Prism for AL: Overloaded procedures are numbered and have previous/next navigation
Overloaded procedures are numbered and provide previous/next navigation.

Extended view

Inlined extension elements provide a consolidated object view

In the "Extended" view, which is the default view, we inline all declarations from extended objects as if they were included in the base object. Elements "imported" like that are marked with a merge symbol in front of the element name. Click the symbol to navigate to the extension object.

Prism for AL: Extended page shows added fields inlined
Extended view of base page shows extension object's Group Member Submissions before VATReturnStatus.
Prism for AL: Page extension adds a field to the base page with addbefore
Page extension that adds field Group Member Submissions before base page's VATReturnStatus.

Semantic colouring

Read code faster with semantic colours

In general, developers spend a lot more time reading than writing code. This is especially true with AL, as Business Central's base application alone has around half a million lines of code. So code reading speed matters. And semantic code colouring helps.

Prism for AL semantic code colouring
  • Field
  • Variable (globals in italic)
  • Parameter
  • Return variable
  • Built-in method
  • Procedure
  • Object and namespace (namespaces in italic)
  • Data type
  • Commit
  • Delete

Variables, parameters and return variables holding a temporary record are underlined with a dotted line.

Dependencies

Know an object by what it uses and what uses it

Understand the purpose of an object better by looking at how it relates to other objects. Answer questions like “Which pages have a certain table as SourceTable?”

  • Usings (outbound) and usages (inbound)
  • Checkmark indicates existence of kind of dependency
  • Find usages on each object dependency via context menu
  • Follow the dependency chain with each row's Go button
  • Search objects to reduce candidates
Prism for AL: object dependencies - used by and using - drill-down into actual usages

Outline

Find your way in the current object

Outlines the current object as a tree structure for overview and navigation purposes. Use wildcard filter to restrict to what you are looking for. Configure what you want to see, e.g. 'only extensions' if you want to see how a base object is extended.

Prism for AL: Object outline settings, e.g. filter an extended object to only show what is added by extensions
Filtered to show only items that are added by an extension.
Prism for AL: Object outline with filtering
Object outline.

Visual Studio Code

Browse and analyse in Prism, edit in Visual Studio Code

Seamless two-way integration between Prism for AL and Visual Studio Code gives you easy access to Prism functionality in your daily work. The integration from Prism to Visual Studio Code is enabled for any source object which is located in your Visual Studio Code workspace folder. Navigation from Visual Studio Code to Prism requires Prism for AL Connector.

From Visual Studio Code, navigate to current location in Prism for AL
From Visual Studio Code to Prism for AL.
From Prism for AL, go to line in Visual Studio Code
From Prism for AL to Visual Studio Code.

Semantic search

Find usages of anything from anywhere, see where built-in functions are called, search events, and explore the data model visually.

Find usages

Find usages of anything from anywhere

Find usages of any declaration (object, procedure, field, key, control etc) in any module across your whole solution. Right-click any declaration to invoke. Prism finds usages even in symbol files (where available). Save time by using result filters to narrow down the number of results.

Prism for AL: Find usages and filter to where a field is assigned a value
Field usages filtered to where the field is assigned a value. Invoke new Find usages directly from the usages window.

Built-in function usages

How did we get this data into the database?

Find Built-in Function Usages allows you to quickly answer questions like the one above. Select which instance methods you search for. For table functions like Insert, save time by narrowing the result to non-temporary records.

Prism for AL: Invoke Find Built-in Function Usages from object-level menu
1. Invoke the function from, for example, the object index.
Prism for AL: Select built-in functions to find usages of
2. Select the instance methods to search for.
Prism for AL: Find built-in function usages result. Filter table functions usages to where the table is non-temporary.
3. The usages found, filtered to non-temporary records.

Event search

Find events fit for your purpose

Developing in AL necessitates a lot of searching for appropriate integration and business events to subscribe to. Unless you are 100% familiar with an event, use Find usages on the event, so you understand exactly when and how the event is raised.

Prism for AL: Event search based on event name pattern
Search for events where name matches on*notification.
Prism for AL: Event usages - where is the event raised and subscribed?
Usages of event OnAfterNotificationSent: raised twice and subscribed once.

Table relations

Explore your data model visually

Understanding the data model is crucial for efficient AL development. With 1,500+ tables in Microsoft's base application alone, presenting the full data model in one diagram is not an option. Instead, Prism for AL lets you explore the data model gradually.

  • Right-click the start table
  • Immediate in- and outbound table relations are shown
  • Navigate to objects and table relation definitions
  • Expand diagram by exploring in- and outbound relations
Prism for AL: Explore table relations by adding new in- and outbound relations

Try Prism for AL on your own code

Download it and press Get trial license key on its Home page. The license key reaches your inbox straight away, and the 14-day trial includes the MCP server.

Book a live demo

We take you through Prism for AL and answer your questions. Suggest a couple of times—we are pretty flexible.

7 usages of Prism for AL

  • Tine StaričMVP, Tech Adventures in Business Central

    Seriously, Visual Studio Code reference search is nothing compared to the powers of Prism for AL's code graph.

  • Džoka MitrovSwissSalary

    Everything I need for AL code analysis in one tool. And it’s blazing fast.

  • Jurica BogunovicTheta

    Prism for AL is irreplaceable. Best solution analyzer since … I guess since Prism for C/AL.

  • Suresh Kulla

    Prism for AL has significantly enhanced my efficiency over the past year by facilitating the identification of issues and the development of solutions.

  • Filip CrombezNavitrans

    Prism for AL has some unique features to discover your full AL stack which is not possible with Visual Studio Code.

  • Marije BrummelMarije Brummel's blog

    Performance troubleshooting for Business Central is impossible without the use of Prism for AL. It’s the fastest way to search across extensions for usages of fields and keys. I could not do my job without Prism for AL.

  • Filip CrombezNavitrans

    From within Prism for AL you can open the object in Visual Studio Code and the other way round! So I'm using Prism for AL as a base tool to explore and then do modifications in Visual Studio Code.

Used by leading Microsoft partners all over the world

  • Elbek & Vejrup
  • 9altitudes
  • Innovia Consulting
  • Cegeka
  • Technology Management
  • ArcherPoint
  • Pass Consulting
  • Consortio IT
  • 4PS
  • Incadea
  • Samuelson
  • Navitrans
  • Acumen Consulting
  • Konica Minolta
  • Quantios
  • Continia
  • twoday

Pricing

Per named user per month, billed yearly. The size of your team sets the price for every user on the subscription.

Prices in DKK, EUR and USD
  1. €37 1–4 users
  2. €32 5–19 users
  3. €27 20+ users

Ready to sign up?

If you would like to know more before you decide, then please visit our extensive documentation or the subscription FAQ. Also, feel free to contact us with any questions or suggestions you may have.

Sign up

An unhandled error has occurred. Reload 🗙