
Prism for AL
Developer productivity for Business Central
Prism for AL is our analysis tool and code browser for Microsoft Dynamics 365 Business Central.
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.
Visualize control flows at procedure/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. This is Find usages on steroids.
Use the Outbound flow-graph of a procedure or trigger to visualize what happens when the procedure or trigger executes.

ProcessElectronicPayment
.

ProcessElectronicPayment
.
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.

ProcessElectronicPayment
can reach an explicit call of Commit
.
Use the context menu to see where the Commit
gets call.

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
.
How does a business process use tables?
Look at a 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.

ProcessElectronicPayment
.
Use the context menu to drill down to table level.

ProcessElectronicPayment
. Use the context menu
on a table to view where the database operations take place.
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 use Find Outbound Flow filtered to Event Publisher 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.


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. Use Find Inbound Flow filtered to User Action to find which user actions potentially lead to the a certain procedure or trigger being called.


Connect the dots!
No matter if you used Find Inbound Flows or Find Outbound Flow, Find Shortest Path shows you the shortest control flow path between a start and end point. Identify branching and looping statements to understand under which circumstances the flow is possible.

- Show flow path from source to target node
- Steps are numbered
- Source and target nodes are marked yellow
- 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
Total solution overview
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.)



- Open workspace:
Opens a Visual Studio Code
.code-workspace
file. - 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.)
What is your solution made of?
The solution page provides a quick overview of which modules (apps) the solutions consists of and how they are related.

Modules
- Metadata from
app.json
- Number of objects per type
Dependencies
- Used By—inbound dependencies
- Usings—outbound dependencies
- Navigate between dependencies
Translations
- XLIFF file overview
Tame the complexity and make sense of it all
Awareness and understanding of module dependencies is key. A picture says more than 1000 dependency declarations—that's why Prism generates a dependency graph for your solution.

- Visually traverse dependencies
- Propagated dependencies (e.g. Application)
- Modules with only symbols marked with asterisk (*)
- Flexible display options, e.g. version constraints
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 for AL comes to the rescue.


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.



Rich code browsing experience
Designed so you get insight quicker
Structured and colourful, packaged with information not available in the source code.





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 an arrow (đź ”) in front of the element name. Click the arrow to navigate to the extension object.

Group Member Submissions
before base page's VATReturnStatus
.

Group Member Submissions
before
VATReturnStatus
.
Turbo charged code reading speed
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.

Examples
- Type/namespace
- Built-in instance methods
- Commit
- Delete
- Temporary record
Tell me who your friends are and I will tell you who you are
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?"

Overview
- Usings (outbound) and usages (inbound)
- Checkmark indicates existence of kind of dependency
Go Deeper
- Find usages on each object dependency via context menu
- Follow dependency chain by left-clicking on dependency objects
- Search objects to reduce candidates
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' (đź ” Extensions) if you want to see how a base object is extended.


Browse and analyse in Prism—edit in Visual Studio Code
Seemless 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.


Semantic search
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.

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.



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.

on*notification
.

OnAfterNotificationSent
: raised twice and subscribed once.
Explore your data model visually
Understanding the data model is crucial for efficient AL development. With approximately 1500 tables in Microsoft's base application alone, presenting the full data model in one diagram in 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
Free trial
Give Prism for AL a spin on your own code.
Download and request a trial from the app.
DownloadBook a live demo
See how Prism for AL can help you get deeper code insight.
Suggest a couple of times—we are pretty flexible.
Email us for a demoPrism for AL has significantly enhanced my efficiency over the past year by facilitating the identification of issues and the development of solutions.
Everything I need for AL code analysis in one tool.
And it’s blazing fast.
SwissSalary
Seriously, Visual Studio Code reference search is nothing compared to the powers of Prism for AL's code graph.
Tech Adventures in Business Central
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.
Navitrans
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.
Marije Brummel's blog
Prism for AL is irreplaceable. Best solution analyzer since … I guess since Prism for C/AL.
Theta
Prism for AL has some unique features to discover your full AL stack which is not possible with Visual Studio Code.
Navitrans
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.