20260209 - Chaos to Clarity - Visualizing AL architecture for scalable Business Central solutions
Applying the C4 model (software system, container, component, code levels) to visualize AL architecture in Business Central, using a bridge app and interface/enum integration provider example. Also covers Structurizr DSL and Copilot checks against SOLID principles.
- Introduction and Housekeeping
- Presenter Background and Journey
- Evolution from NAV to Modern Architecture
- The Challenge - Interfaces and Bridge Apps
- Searching for Clarity through Diagrams
- Exploring Architecture Diagram Types
- Introduction to the C4 Model
- C4 Model Levels and Mapping to AL Architecture
- System Context View and Diagram Principles
- Container and Component Views with Design Decisions
- Communicating Architecture to Stakeholders
- Practical Application to Business Central Solution
- Detailed Solution Hub Design Patterns and Testing
- AI and Architecture Design Integration
- Tooling Recommendations and AI-Assisted Validation
Overview
A Business Central developer with a NAV background describes how interfaces and the bridge app pattern left him with unclear architecture, and how the C4 model gave him a way to organize it. He maps the four C4 levels to Business Central concepts: extensions, PTEs and AL namespaces.
He applies this to a solution hub PTE with an EROC connector bridge app and a projects integration module that uses an enum and interfaces to support different project providers. He then covers communicating at the right level to stakeholders, Structurizr DSL for architecture as code, and using Copilot to review diagrams against SOLID principles.
Key points
- The C4 model uses four levels: software system, container, component and code. C4 containers are not Docker containers.
- Mapping used in the session: Business Central as the software system, PTEs and AppSource apps as containers, namespaces inside extensions as components, and AL files grouped in folders or namespaces as the code level.
- Enum-based integration provider pattern: an enum defines providers and interfaces supply the implementations, so new providers can be added without changing existing code. A test app can mock a provider.
- The bridge app pattern lets external systems connect through interchangeable connector apps, so a connector can be removed while the data stays in Business Central. The presenter found the architectural work not easy.
- Write design decisions into diagrams, for example whether systems exchange JSON or XML.
- Use system context and container views for business executives, and deeper levels for developers.
- Structurizr DSL keeps the model and its views in one file, so a model change updates every view, though diagrams must be exported again. Copilot generated a DSL file from a draw.io diagram screenshot, and it can be rendered in the Structurizr web playground.
Features
| Feature | Status | At |
|---|---|---|
| C4 Model for Architecture Visualization | status not stated, demoed | 12:33 |
| Bridge App Pattern for System Integration | status not stated, demoed | 6:47 |
| AL Interfaces | status not stated, demoed | 5:48 |
| Architecture Diagram Documentation | status not stated, demoed | 22:08 |
| Code Architecture Reflection | status not stated | 23:15 |
| Stakeholder Architecture Communication | status not stated, demoed | 25:20 |
| Solution hub module | status not stated | 28:17 |
| EROC connector | status not stated, demoed | 30:32 |
| Projects integration module | status not stated, demoed | 31:28 |
| Enum-based integration provider pattern | status not stated, demoed | 33:16 |
| Architecture clarity improves AI prompts | status not stated | 34:30 |
| Structurizr DSL for architecture as code | status not stated, demoed | 37:41 |
| Copilot architecture validation | status not stated, demoed | 39:22 |
| Structurizer playground | status not stated, demoed | 41:37 |
AL objects mentioned
As heard in the captions. A name that matches one object page by exact type and name links to it; the others stay as named.
- other “EROC” at 6:47
- other “solution component” at 16:52
- other “solution hub” at 28:17
- other “EROC connector” at 30:32
- other “projects integration module” at 31:39
- enum “integration provider” at 33:16
- interface “integration interface” at 33:16
- other “C4 model” at 41:48
- other “Structurizer” at 41:48
Not found in BC28-30: enum “integration provider”, interface “integration interface”.
Quotes
- 4:19 “I would consider myself as a NAV dinosaur. I started in consulting with the finance consulting”
- 6:03 “there was a large comet uh hitting me and that was interfaces”
- 7:27 “this concept of a bridge app uh sounded very very intriguing”
- 8:08 “too much design up front is dump. No design up front is even dumber.”
- 13:44 “The definition that Simon is doing the C4 model is a defined set of abstractions and a defined set of diagrams”
Presenters (as heard): Christian Lind, Ted Johnston, Alex, Simon, Espen, Camille, Jeremy.
