Turn the entire Business Central codebase into a simulatable, queryable, explainable system — so developers never program blind again.
Every BC customization follows the same painful loop:
Write AL → Deploy to sandbox → Click through UI → Hope it works → Debug when it doesn't → Repeat
This cycle costs 30-60 minutes per iteration. Multiply by dozens of iterations per feature, and you're losing days to feedback latency. Worse — the developer never sees the full picture. They're modifying a system of 9,000+ objects through a keyhole.
The tribal knowledge problem is even more damaging:
No tool solves this. Microsoft's AL Language extension gives IntelliSense. It doesn't show you what happens when your code runs. The debugger shows you one step at a time. Nobody shows you the whole pipeline.
DevToolsBC gives every BC developer — senior, junior, consultant — x-ray vision into the system. Five capabilities, building on each other:
Browse, search, and explore the full BC object model. See every table, codeunit, page, event, and how they connect. Answer: "What objects exist in the Sales domain?"
Status: Built. Object Browser, Event Flow, Dependencies, Domain Explorer.
Select any procedure, see its complete forward blast radius. Every procedure it calls, every event it fires, every subscriber that activates, every table it reads/writes/deletes.
Status: Built. Impact view with graph + table breakdown.
Walk the entire execution path of a procedure — in order. See the call stack build up, events dispatch, branches taken, loops walked. The ordered execution trace that the debugger gives you, but without deploying.
Status: Built. Simulation view with timeline, graph, and table panels. Data-aware execution with AL expression evaluation. Scenario engine with expectations and AL test code generation.
Start from a record instead of a procedure. Pick a Sales Header, set Document Type = Invoice, select "Post" — see the entire posting pipeline with:
This is the record-centric lens — same engine, fundamentally different entry point and presentation. Where simulation answers "what does this code do?", data flow answers "what happens to this data?"
Status: Phase 1 built. Trace engine, mutation tracking, pipeline view, 3-step seed selector, attribution badges.
Natural language entry: "What happens when I post a sales invoice with foreign currency?" → auto-fills the structured form → trace runs. Click any step for a plain-language explanation tailored to your audience level (Developer / Consultant / Junior). Ask follow-up questions. Generate event subscribers and validation overrides.
Status: Not started. This is the pinnacle — where the structural analysis becomes accessible to non-developers.
.al files + .app symbols
│
▼
┌─────────┐
│ bc-parse │ Rust CLI — parses everything into SQLite
│ (Rust) │ 9,236 objects, 53K procs, 23K events in ~3s
└────┬─────┘
│
▼
┌──────────┐
│ SQLite │ 17-table schema — the single source of truth
│ bc-toolkit.db │
└────┬─────┘
│
▼
┌──────────────┐
│Express Server │ REST + WebSocket API
│ (Node.js) │ Analysis engines live here:
│ │ - simulation-engine.ts (code-centric DFS)
│ │ - execution-engine.ts (data-aware simulation)
│ │ - trace-engine.ts (record-centric + mutations)
│ │ - impact-builder.ts (static forward BFS)
│ │ - domain-builder.ts (multi-hop BFS)
└────┬─────┘
│
▼
┌──────────────┐
│React Frontend │ 10 views, terminal-aesthetic UI
│ (Vite + TS) │ Zustand state, dark theme, monospace
└──────────────┘
Key principle: Rust parses, Node analyzes, React visualizes. The Rust parser is fast and done once. The Node engines can iterate quickly. The React views match the mental models of each analysis type.
| Phase | What | Status |
|---|---|---|
| P0 | Rust parser → SQLite, Express wired to DB | Done |
| P8 | SQLite migration, domain BFS, object browser | Done |
| P9 | Domain builder with events + extensions + calls + relations | Done |
| P10 | Procedure body AST parsing (13 stmt types, 24 record ops) | Done |
| P11 | Static Impact Analysis — forward BFS from seed | Done |
| P13 | Simulation engine — ordered DFS execution trace | Done |
| P13+ | Data-aware execution — AL expression parser/evaluator, virtual record store | Done |
| P14 | Scenarios — expectations, comparison, AL test generation | Done |
| P15 | Data Flow Tracer Phase 1 — trace engine, mutation tracking, pipeline view | Done |
| Phase | What | Key Deliverable |
|---|---|---|
| P16 | Data Flow Phase 2 — Mutation Timeline + Table View | Chronological mutation list, per-table summary cards |
| P17 | Data Flow Phase 3 — Extension Analysis + Validation Enrichment | Would-fail predictions, extension breakdown charts, static explanations |
| P18 | Data Flow Phase 4 — AI Explanations | Claude-powered step explanations, audience-level selector |
| P19 | Data Flow Phase 5 — NL Input + Dialogue + Code Generation | Natural language queries, conversational follow-ups, AL code gen |
| P20 | Claude Integration — write/simulate/iterate loop | API for Claude to submit code, run simulation, get structured results |
| P21 | VS Code Convergence | Live impact analysis on save, inline annotations, Monaco editor option |
Record-centric AND code-centric. Two entry points to the same underlying engine. Developers think in code, consultants think in data. Serve both.
AI as enhancement, not dependency. Phases 1-3 of every feature work without AI. Static heuristics first. Claude enriches later. The tool must be useful offline.
Separate views for separate mental models. Impact (graph), Simulation (timeline), Data Flow (pipeline), Scenarios (test matrix). Don't force everything into one view.
Fork, don't modify. New engines fork from existing ones rather than adding flags. trace-engine.ts forked from simulation-engine.ts. Each view owns its engine. This prevents feature coupling.
Parse once, analyze many. The Rust parser runs in 3 seconds. Every analysis reads from SQLite. Adding a new analysis type means adding a new Node engine + React view — zero Rust changes.
Terminal aesthetic. Dark theme, monospace, compact. This is a power tool for developers, not a dashboard for executives. Information density over visual polish.
| # | View | Purpose | Status |
|---|---|---|---|
| 1 | Home | Quick stats, recent activity, jump points | Built |
| 2 | Objects | Browse/search all AL objects with full detail | Built |
| 3 | Event Flow | Publisher → subscriber chain visualization | Built |
| 4 | Dependencies | Extension/subscription relationship graph | Built |
| 5 | Trace | Debug session trace replay (from VS Code DAP) | Built |
| 6 | Processes | Domain explorer — BFS from seed objects | Built |
| 7 | Impact | Static forward blast radius from any procedure | Built |
| 8 | Simulation | Ordered execution trace with call stack | Built |
| 9 | Scenarios | Data-aware execution with expectations + test gen | Built |
| 10 | Data Flow | Record-centric pipeline with mutations + attribution | Built (Phase 1) |
The closest analogy: what Chrome DevTools did for web development, DevToolsBC does for Business Central.
Last updated: 2026-02-26 — Phase 15 (Data Flow Tracer Phase 1) complete