Statical Prism for AL is our analysis tool and code browser for Microsoft Dynamics 365 Business Central.
Total solution overview
Module details and dependency graph, table relations graph and more.
Extensive code graph
Run powerful code queries on your workspace-as-a-graph — leave no stone unturned.
Semantic search
Find usages, find system function usages, semantic filtering, and much more.
Rich code browsing experience
Extended object view with inlined extensions, semantic code coloring, Visual Studio Code integration, etc.
Read more on https://stati-cal.com/PrismForAL.
History:
3.1.0:
- ID-2544 Feature Show inbound flow-graph
- ID-2580 Feature Procedural flow-graph visualization enabled for database and page event triggers
- ID-2548 Feature Prism Path (custom URI scheme for specifying declaration links)
- ID-1689 Feature Find usages tree view
- ID-2566 Feature BC25 (runtime 14): SymbolReference.json omits zero valued attributes, e.g. "Kind" for control and action areas
- ID-2547 Feature Free text search tree view
- ID-2538 Feature Moved 'extends' and 'customizes' from object header to first group in object view
- ID-2537 Feature Moved namespace and usings further down in object view
- ID-2564 Feature File | Explorer menu: Order items by name
- ID-2516 Feature RIMD overview window should show original declaration
- ID-2533 Feature BC25 (runtime 14): Support for conditional expressions (condition ? ifTrue : ifFalse)
- ID-2532 Feature BC25 (runtime 14): Support for new PageStyle type
- ID-2529 Feature BC25 (runtime 14): Code graph flow logic for Query.SaveAsJson
- ID-2521 Feature BC25 (runtime 14): Support for .alpackages subfolders
- ID-2513 Feature BC25 (runtime 14): Support for new OptimizeForTextSearch property
- ID-2502 Feature BC25 (runtime 14): Support for ProfileExtensions
- ID-2496 Feature BC25 (runtime 14): Support for <interface> as <interface> expressions
- ID-2495 Feature BC25 (runtime 14): Support for <interface> is <interface> expressions
- ID-2494 Feature BC25 (runtime 14): Support for interface extending interfaces
- ID-2468 Feature BC25 (runtime 14): Resolution of 'this'
- ID-2582 Bugfix Find inbound flow to enum value fails with message "Unexpected empty tree context" when referred from table relation filter expression
- ID-2579 Bugfix Inbound and outbound flow to/from OnValidate trigger in extension object failed
- ID-2569 Bugfix Fixed resolution of objects that have ObsoleteState Moved or Removed
- ID-2546 Bugfix Parse error when AllowedFileExtensions property has multiple comma-separated values
- ID-2545 Bugfix Tooltips sometimes lack information
- ID-2541 Bugfix Prism cache optimization script uses wrong path
- ID-2531 Bugfix Parse error when ColumnSpan property value is negative
- ID-2530 Bugfix Graph loading - name resolution error when codeunit has TableNo property and record function is implicitly scoped
- ID-2525 Bugfix Setting "Confirm Closing Workspace" does not work when closing the control panel window
- ID-2515 Bugfix Setting "Confirm Closing Workspace" should also apply when reloading a workspace
- ID-2487 Bugfix Procedural graph Commit node does not have a tooltip
3.0.0:
- ID-2465 Feature Procedural graph visualization (outgoing procedural flows)
- ID-2469 Feature Immediate insights: RIMD analysis for procedure and triggers in object
- ID-2471 Feature RIMD overview for a procedure/trigger
- ID-2478 Feature Reachable RIMDing procedures, triggers and dispatch nodes
- ID-2102 Feature Immediate insights: Commit analysis for procedure and triggers in object
- ID-2479 Feature Reachable commiting procedures and triggers
- ID-2477 Feature Build compact or full graph
- ID-2461 Feature Generate graph on startup
- ID-2506 Feature Graph views can be saved to a PNG image file
- ID-2505 Feature Graph views are touch sensitive (pan and zoom in module relations, table relations and procedural graph)
- ID-1020 Feature TransferFields mapping should include extended fields
- ID-2501 Feature Solution overview export to Excel
- ID-2498 Feature Module graph - export as image (png/jpg/svg)
- ID-2486 Feature BC25 (runtime 14): Parsing support for properties FileUploadAction and FileUploadRowAction
- ID-2462 Feature Flows from and Flows to: Enable also when compact graph is available
- ID-2455 Feature Show TransferFields Mapping (context menu item)
- ID-2452 Feature Unresolved modules should have tabs in row details
- ID-2451 Feature Show related module discoveries for resolved modules
- ID-2450 Feature Show related module discoveries for unresolved modules
- ID-2428 Feature Workspace troubleshooting (reproduce workspace without .al code)
- ID-2363 Feature Search procedure and event publishers: Find all when search field is empty
- ID-2497 Bugfix Graph loading: Name Resolution - The given key was not present in the dictionary
- ID-2460 Bugfix Runtime package not detected
- ID-2436 Bugfix Do not crash when feature metrics file is corrupted; transactionally save feature metrics file
- ID-2435 Bugfix Cannot open .code-workspace when al.packageCachePath is not found on disk
- ID-2427 Bugfix Error opening workspace (UnsatisfiableVersionConstraintException)
2.7.0:
- ID-2389 Feature Feature usage overview
- ID-2272 Feature Event triggers should should have a more prominent placing in UI
- ID-2420 Feature BC24: Support for new properties AllowMultipleFiles and AllowedFileExtensions
- ID-2419 Feature BC24: Support for page layout areas Prompt and PromptOption and action areas Prompting and PromptGuide
- ID-2417 Feature BC24: Support for FileUploadAction
- ID-2414 Feature BC24: Support for new types: FileUpload and Cookie
- ID-2404 Feature Improved display of recent items (usability)
- ID-2403 Feature Search fields/procedures/publishers: custom result limit for faster display of large number of results
- ID-2398 Feature New notification system (informations, warnings, errors)
- ID-2392 Feature Improved error message when new license key cannot be written to disk
- ID-2385 Feature Indicate record data type as temporary when built-in function is used on a temporary instance
- ID-2369 Feature Improved performance of opening windows
- ID-2379 Bugfix Flow result: Order of control modifications must equal syntax order
- ID-2415 Bugfix Parse error when list properties like OrderBy, Customizations, and Namespaces are empty
- ID-2413 Bugfix The runtime property of module details is not correctly shown
- ID-2409 Bugfix Recent items: Remove all does not remove anything
- ID-2406 Bugfix Workspace loading fails when System app is outdated
- ID-2395 Bugfix Symbol file object dependency error for some quoted name references
- ID-2394 Bugfix Symbol file parse error when file contains a systemaction
- ID-2388 Bugfix Temporary XmlPort data item tooltip styling is incorrect
- ID-2387 Bugfix Temporary report data item tooltip lacks temporary indication
2.6.0:
- ID-1153 Feature Improved analysis of temporary table usages (properties SourceTableTemporary, TableType and UseTemporary)
- ID-2353 Feature Improved formatting and tooltips of temporary system-defined variables (e.g. rec), report data items, and xmlport elements
- ID-2347 Feature Precise navigation for inline page trigger events
- ID-2346 Feature Precise navigation for inline database trigger events
- ID-2124 Feature Feature usage telemetry (optional)
- ID-2374 Feature Support for PromptMode type
- ID-2373 Feature Support for runtime 12.1 properties PromptDialog and IsPreview
- ID-2268 Feature Upgrade to .NET 8 (LTS)
- ID-2366 Bugfix Graph translation failed hard following object translation errors
- ID-2311 Bugfix Extended view does not merge when implicit areas like Content is missing base object's source
- ID-2368 Bugfix Parse error when dotnet type reference has namespace qualifiers
- ID-2367 Bugfix NullReferenceException when handling label translation
- ID-2355 Bugfix Some system function usages were not found in complex namespace scenario
- ID-2354 Bugfix System function tooltip presents wrong object in rare cases
- ID-2338 Bugfix Code graph memory leak
2.5.0:
- ID-2295 Feature BC23: Support for namespaces
- ID-2292 Feature BC23: Code graph control flow - RunObject property allows running query objects
- ID-2275 Feature BC23: Ability to define fields in page customizations
- ID-2274 Feature BC23: Support for new properties AllowInCustomizations and ExcelLayoutMultipleDataSheets
- ID-2309 Feature BC23: Support for new properties AnalysisModeEnabled, MovedFrom and MovedTo
- ID-2273 Feature BC23: Support for new SecretText type
- ID-2330 Feature BC23: Support for systemaction
- ID-2299 Feature Show namespaces in tooltips
- ID-2163 Feature Workspace session: resume last location on workspace open
- ID-2323 Feature Open directory: use NavxManifest.xml if app.json is not found
- ID-2321 Feature Navigation from VSCode should be saved in history
- ID-2317 Feature Resolve/link filter expressions in table relations and flowfields
- ID-2312 Feature Improve annotation/attribute formatting
- ID-2300 Feature User control over display of namespace names (e.g. Microsoft.Sales.Customer vs Customer)
- ID-2331 Bugfix Large memory leak
- ID-2326 Bugfix Name resolution error in report request page with procedure
- ID-2316 Bugfix Navigation fails with some namespace-qualified object names, e.g. Codeunit::MyNamespace.MyObject
- ID-2315 Bugfix Some navigations failed when e.g. table had multiple field validation triggers
- ID-2310 Bugfix History navigation issues
2.4.0:
- ID-2238 Feature Show page trigger events when they are subscribed to
- ID-2256 Feature Outline search of translable properties
- ID-2250 Feature Improve translation metadata caching (faster to open workspace after caching)
- ID-2160 Feature Custom setting for the location of the Prism package cache
- ID-2222 Feature Solution view: organize module details into tabs (general, used by, using, translation)
- ID-2208 Feature Improve logging when graph process cannot start (e.g. out of memory)
- ID-2207 Feature Minor reduction in memory usage during parsing
- ID-2223 Feature Show breadcrumb to declaration in toast when no usages or flows were found
- ID-2254 Feature Search modules by GUID in solution view (requires at least 4 input characters)
- ID-2229 Bugfix Translations are not shown for cached packages
- ID-2218 Bugfix Translation Id must use canonical property names for resilience (/trans-unit@id case sensitive hashing)
- ID-2232 Bugfix Translation sources list includes files without applicable translations
- ID-2231 Bugfix Module details: translation sources are unsorted
- ID-2230 Bugfix Language picker shows unsorted translation languages
- ID-2247 Bugfix Code graph did not include flow information for page trigger OnNewRecord and event OnNewRecordEvent
- ID-2253 Bugfix Flows from On{Before|After}RenameEvent nodes was not implemented
- ID-2252 Bugfix Flows from On{Before|After}ValidateEvent nodes wrongly included triggers
- ID-2220 Bugfix Page extensions: modify page action does not show triggers
2.3.0:
- ID-2197 Feature Setting for default translation language
- ID-2199 Feature Pin selected language and always show all translation languages in language picker
- ID-2206 Feature Allow non-array features attribute in app.json for backwards compatibility
- ID-2209 Feature Copy translation id to clipboard
- ID-2201 Bugfix XLIFF: align translation unit selection with BC runtime behavior
- ID-2203 Bugfix Parse error when EntityCaption or EntitySetCaption properties have label attributes :
2.2.0:
- ID-2101 Feature Event publisher reachability from procedure or trigger
- ID-2100 Feature CRUD analysis from procedure or trigger
- ID-1845 Feature XLIFF support: show translations in place for selected language
- ID-2057 Feature Graph: Distinguish between (Insert | Modify | Delete) nodes with RunTrigger postfix (True | False | Maybe)
- ID-2138 Feature Support for NAV 2018 symbol files
- ID-2181 Feature Do not fade out navigation cursor after a while
- ID-2187 Feature Show session log entries since last feature command was executed (Ctrl+Alt+L in control panel or workspace window)
- ID-2183 Feature New setting "Optimize find usages" which allows user to turn off optimization for diagnostic purposes (decides which objects to search)
- ID-2147 Feature SourceExpression properties in symbol files - show expresion, hide property
- ID-2184 Bugfix Find usages does not analyse extension objects that have the same name as another extension object of the same type
- ID-2189 Bugfix Extended view: Some tooltips are wrong in inlined code
- ID-2154 Bugfix Array types originating from symbol files are presented as the inner type
- ID-2153 Bugfix Display of multidimensional array types lack commas