Compare commits

...
Sign in to create a new pull request.

19 commits

Author SHA1 Message Date
Jeremy Vyska
dbbc3d3cdc
Merge pull request #286 from microsoft/add-kine-knowledge-gap-article
Add article: AI for BC Development - The Knowledge Gap That Ships to Production
2026-04-01 11:54:55 +02:00
Jeremy Vyska
3e884878ab Add Kine article: AI Knowledge Gap That Ships to Production to vibe coding resources
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-04-01 09:19:07 +02:00
Jeremy Vyska
76159eb8cc
Merge pull request #283 from microsoft/agentic-assistance-hub
Orphaned files meant for the original PR
2026-01-20 14:24:42 +01:00
Jeremy Vyska
36c4ec1c0e
Merge pull request #275 from microsoft/issues/250
Fix #250: Clarify case sensitivity of APIPublisher and APIGroup
2025-12-16 12:24:39 +01:00
Henrik Helgesen
ed0868d8c1
Merge pull request #273 from microsoft/issues/150
Fix #150: Replace unavailable video with note
2025-12-03 12:44:37 -08:00
Henrik Helgesen
345e0f2a64
Merge pull request #274 from microsoft/issues/270
Fix #270: Add CAL Coding Guidelines PDF and fix broken link
2025-12-03 12:43:39 -08:00
Henrik Helgesen
b8d7ceccfc
Merge pull request #282 from javiarmesto/ai-native-dev-guideline
New Tool - AI Native AL Development toolkit
2025-12-03 12:37:25 -08:00
Javier Armesto Gonzalez
aa970ed0a6
Apply suggestion from @Copilot
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-11-28 12:00:55 +01:00
Javier Armesto Gonzalez
0042e10d5f
Add files via upload 2025-11-28 11:00:53 +01:00
Jeremy Vyska
d2cdf97e0c
Merge pull request #279 from microsoft/jeremy-siteops
Front page updates & fixes
2025-11-10 12:48:24 +01:00
Jeremy Vyska
3a262c4d33 Refresh of front page content 2025-11-10 12:47:46 +01:00
Jeremy Vyska
9ea56d5843 Fixing broken front page link 2025-11-10 12:39:14 +01:00
Jeremy Vyska
e508cb64fb
Merge pull request #278 from microsoft/main
Updating siteops branch for small fixes
2025-11-10 12:37:43 +01:00
Henrik Helgesen
afc35a8c51
Merge pull request #265 from igor-ctrl/patch-1
Update index.md
2025-10-23 09:50:39 -07:00
Jeremy Vyska
aba9b11f07 Fix #250: Clarify case sensitivity of APIPublisher and APIGroup for subscriptions 2025-10-18 13:45:00 +02:00
Jeremy Vyska
77b968ae1f Fix #270: Add CAL Coding Guidelines PDF and update broken link 2025-10-18 13:42:14 +02:00
Jeremy Vyska
8afc5570db Fix #150: Replace unavailable video with note about missing content 2025-10-18 13:35:27 +02:00
Jeremy Vyska
2c230e308c
Merge pull request #272 from microsoft/agentic-assistance-hub
Agentic assistance hub
2025-10-17 15:19:07 +02:00
Igor
7dd5bae8c9
Update index.md
## Update No. Series pattern for BC v24+ modern API

Microsoft deprecated `NoSeriesManagement` in BC v24+. Added modern `codeunit "No. Series"` pattern documentation with simplified API examples, comparison table, and method reference. Legacy content preserved for backward compatibility.

Real-world implementation verified in production BC extension.
2025-10-01 15:34:12 -05:00
8 changed files with 147 additions and 46 deletions

View file

@ -125,14 +125,14 @@ images: ["images/og-image-fission.png"]
<div class="card-shadow"> <div class="card-shadow">
<span class="card-badge">NEW</span> <span class="card-badge">NEW</span>
<h4 class="section-text-bold mt-4"> <h4 class="section-text-bold mt-4">
Vibe Coding for AL Getting Started With Agentic Coding
</h4> </h4>
<div class="card-shadow-content"> <div class="card-shadow-content">
<p class="section-text"> <p class="section-text">
AI-optimized coding rules and guidelines designed to enhance the AL developer experience in modern AI-powered IDEs like VS Code and Cursor. Essential concepts and practices for working with AI coding assistants in your AL development workflow.
</p> </p>
<a href="/docs/vibe-coding/"> <a href="/docs/agentic-coding/gettingstarted/">
<button class="hero-mid-2 align-self-end">Explore Rules</button> <button class="hero-mid-2 align-self-end">Get Started</button>
</a> </a>
</div> </div>
</div> </div>
@ -140,16 +140,16 @@ images: ["images/og-image-fission.png"]
<div class="col-lg-4"> <div class="col-lg-4">
<div class="card-shadow"> <div class="card-shadow">
<span class="card-badge">TAG</span> <span class="card-badge">GUIDE</span>
<h4 class="section-text-bold mt-4"> <h4 class="section-text-bold mt-4">
API Vibe Coding Rules
</h4> </h4>
<div class="card-shadow-content"> <div class="card-shadow-content">
<p class="section-text"> <p class="section-text">
Two API Related Design Patterns and one Best Practice for working with API's AI-optimized coding rules and guidelines designed to enhance the AL developer experience in modern AI-powered IDEs.
</p> </p>
<a href="/tags/api/" <a href="/docs/agentic-coding/vibe-coding-rules/"
><button class="hero-mid-2 align-self-end">Read Now</button></a ><button class="hero-mid-2 align-self-end">Explore Rules</button></a
> >
</div> </div>
</div> </div>
@ -157,17 +157,17 @@ images: ["images/og-image-fission.png"]
<div class="col-lg-4"> <div class="col-lg-4">
<div class="card-shadow"> <div class="card-shadow">
<span class="card-badge">PATTERN</span> <span class="card-badge">TOOLS</span>
<h4 class="section-text-bold mt-4"> <h4 class="section-text-bold mt-4">
Event Bridge Agentic Tools
</h4> </h4>
<div class="card-shadow-content"> <div class="card-shadow-content">
<p class="section-text"> <p class="section-text">
In the world of interfaces, it is important to preserve (certain) events over multiple implementation of the interface. Model Context Protocol (MCP) servers that enhance AI assistants for Business Central development workflows.
</p> </p>
<a <a
href="/docs/patterns/event-bridge-pattern/" href="/docs/agentic-coding/communityresources/tools/"
><button class="hero-mid-2 align-self-end">Read Now</button></a ><button class="hero-mid-2 align-self-end">Explore Tools</button></a
> >
</div> </div>
</div> </div>
@ -210,17 +210,6 @@ images: ["images/og-image-fission.png"]
</p> </p>
</div> </div>
</a> </a>
<a href="https://twitter.com/search?q=%23bcalhelp">
<div class="card-shadow twitter-card" style="margin-left: auto">
<div class="card-header-custom">
<h2 style="padding-right: 0.8rem;"><i class="fab fa-twitter"></i></h2>
<h2 class="section-text-bold">Twitter</h2>
</div>
<p class="section-text">
Chat about this with the <b class="text-highlight">#bcalhelp</b> hashtag.
</p>
</div>
</a>
</div> </div>
</div> </div>
</div> </div>
@ -254,22 +243,6 @@ images: ["images/og-image-fission.png"]
</div></a </div></a
> >
</div> </div>
<div class="col-lg-6">
<a href="https://twitter.com/search?q=%23bcalhelp"
><div
class="card-shadow twitter-card-desktop"
style="margin-left: auto"
>
<div class="card-header-custom">
<h2 style="padding-right: 0.8rem;"><i class="fab fa-twitter"></i></h2>
<h2 class="section-text-bold">Twitter</h2>
</div>
<p class="section-text">
Chat about this with the <b class="text-highlight">#bcalhelp</b> hashtag.
</p>
</div></a
>
</div>
</div> </div>
</div> </div>
</div> </div>

View file

@ -35,7 +35,7 @@ The properties that must be defined are:
- ODataKeyFields - ODataKeyFields
### APIPublisher ### APIPublisher
The name of the API publisher is usually the company creating the API. It is the first custom part in the URL for a given endpoint. The value is case insensitive. The name of the API publisher is usually the company creating the API. It is the first custom part in the URL for a given endpoint. While the value is case insensitive for HTTP operations (GET, POST, etc.), it is case sensitive when checking for active subscriptions.
Example: Example:
@ -44,7 +44,7 @@ APIPublisher = 'contoso';
``` ```
### APIGroup ### APIGroup
Sets the group of the API endpoint that page or query is exposed in. In the URL the APIGroup comes after the APIPublisher. It can be used to distinguish different API apps or groups of APIs from each other. The value is case insensitive. Sets the group of the API endpoint that page or query is exposed in. In the URL the APIGroup comes after the APIPublisher. It can be used to distinguish different API apps or groups of APIs from each other. While the value is case insensitive for HTTP operations (GET, POST, etc.), it is case sensitive when checking for active subscriptions.
Example: Example:

View file

@ -23,6 +23,6 @@ We're looking forward to your comments. Where you can, do provide concrete examp
[anchor0]: https://blogs.msdn.microsoft.com/nav/2015/01/09/cal-coding-guidelines-used-at-microsoft-development-center-copenhagen "download the C/AL coding guidelines as pdf" [anchor0]: /files/CAL-Coding-Guidelines-at-Microsoft-Development-Center-Copenhagen.pdf "download the C/AL coding guidelines as pdf"
[anchor1]: /members/waldo/default.aspx "waldo" [anchor1]: /members/waldo/default.aspx "waldo"
[anchor2]: https://www.youtube.com/watch?v=z6skKy0pkmU&list=PLhZ3P-LY7CqmVszuvtJLujFyHpsVN0U_w&index=26 [anchor2]: https://www.youtube.com/watch?v=z6skKy0pkmU&list=PLhZ3P-LY7CqmVszuvtJLujFyHpsVN0U_w&index=26

View file

@ -92,7 +92,9 @@ Entities where the Blocked Entity has been implemented include:
The [Released Entity][anchor4]. The [Released Entity][anchor4].
{{< youtube O2R-fTSup1o >}} {{% alert title="Note" %}}
There was previously a video demonstration of this pattern, but it is no longer available.
{{% /alert %}}
[anchor0]: 2260.BlockedEntityPattern.png [anchor0]: 2260.BlockedEntityPattern.png
[anchor1]: /navpatterns/1-patterns/blocked-entity/data-driven-blocked-entity/ [anchor1]: /navpatterns/1-patterns/blocked-entity/data-driven-blocked-entity/

View file

@ -0,0 +1,49 @@
---
title: "AL Development Collection"
linkTitle: "AL Development Collection"
weight: 1
description: >
AI Native AL Development toolkit with 37 Agent Primitives for systematic Business Central development
---
## Overview
The AL Development Collection provides a complete AI-native development toolkit for Microsoft Dynamics 365 Business Central. Instead of ad-hoc AI usage, you get systematic engineering through 37 Agent Primitives organized across 3 framework layers implementing the AI Native-Instructions Architecture.
**Created by**: [Javier Armesto](https://github.com/javiarmesto)
---
## Key Features
**6 Role-Based Specialist Agents**:
- al-architect 🏗️ (solution design), al-developer 💻 (implementation), al-debugger 🐛 (troubleshooting)
- al-tester ✅ (TDD/quality), al-api 🌐 (API development), al-copilot 🤖 (AI features)
**4 Orchestra System Agents** (Multi-agent TDD):
- al-conductor 🎭 (orchestration), al-planning-subagent 🔍 (research)
- al-implement-subagent 💻 (TDD implementation), al-review-subagent ✅ (validation)
**9 Auto-Applied Instructions**:
- Code style, naming conventions, performance patterns
- Error handling, events, testing standards
- Context-aware loading via `applyTo` patterns
**18 Agentic Workflows**:
- Environment setup (al-initialize, al-build)
- Development (al-events, al-pages, al-permissions)
- Analysis (al-diagnose, al-performance, al-migrate)
- Copilot features (al-copilot-capability, al-copilot-promptdialog, al-copilot-test)
**Smart Complexity Routing (Experimental)**:
- 🟢 LOW → al-developer (direct implementation)
- 🟡 MEDIUM → al-conductor (TDD orchestration)
- 🔴 HIGH → al-architect → al-conductor (full design + TDD)
---
## Links
- **GitHub**: https://github.com/javiarmesto/AL-Development-Collection-for-GitHub-Copilot
- **Quick Start**: https://github.com/javiarmesto/AL-Development-Collection-for-GitHub-Copilot/blob/main/QUICK-START.md
- **Complete Development Flow**: https://github.com/javiarmesto/AL-Development-Collection-for-GitHub-Copilot/blob/main/docs/workflows/complete-development-flow.md

View file

@ -14,6 +14,21 @@ This page curates blog posts, articles, and written guides from the Business Cen
### Getting Started ### Getting Started
#### "AI for BC Development - The Knowledge Gap That Ships to Production" — Kine
**Author**: Kine (blog.kine.cz)
**Published**: 2025
**Summary**: A critical self-assessment guide on whether you are ready to validate what AI produces for BC development. Covers common AI mistakes in AL code (wrong field assignment, missing keys, reinventing standard libraries) and what BC knowledge areas you need to review AI output responsibly.
**Key Takeaways**:
- Common AI mistakes in AL code that ship to production
- Self-assessment framework for AI-assisted development readiness
- BC knowledge areas required to review AI output responsibly
- Practical examples of wrong field assignments, missing keys, and reinvented standard libraries
**Link**: https://blog.kine.cz/posts/bcdevelopmentserie-02b/
---
#### "Vibe Coding — yes or no?" — Demiliani #### "Vibe Coding — yes or no?" — Demiliani
**Author**: Demiliani **Author**: Demiliani
**Published**: 2025-08-21 **Published**: 2025-08-21

View file

@ -10,6 +10,68 @@ _Created by Microsoft, Described by Jeremy Vyska (Spare Brained Ideas)_
The "Number Series" system is used extensively to provide numbers to master records, documents, and other transactions through Microsoft Dynamics 365 Business Central. The "Number Series" system is used extensively to provide numbers to master records, documents, and other transactions through Microsoft Dynamics 365 Business Central.
## Important: BC v24+ Modern Pattern (Updated 2024)
**As of Business Central version 24.0 and later**, Microsoft deprecated the `NoSeriesManagement` codeunit in favor of the new `codeunit "No. Series"` with simplified methods.
### Modern Implementation (BC v24+)
**Variable declaration:**
```al
var
NoSeries: Codeunit "No. Series";
```
**OnInsert pattern (simplified):**
```al
trigger OnInsert()
begin
if "No." = '' then begin
MySetup.Get();
MySetup.TestField("Document Nos.");
"No. Series" := MySetup."Document Nos.";
if NoSeries.AreRelated(MySetup."Document Nos.", xRec."No. Series") then
"No. Series" := xRec."No. Series";
"No." := NoSeries.GetNextNo("No. Series");
end;
end;
```
**OnValidate pattern (same as before):**
```al
trigger OnValidate()
begin
if "No." <> xRec."No." then begin
MySetup.Get();
NoSeries.TestManual(MySetup."Document Nos.");
"No. Series" := '';
end;
end;
```
### Key Differences from Legacy Pattern
| Legacy (NoSeriesManagement) | Modern (No. Series) |
|----------------------------|---------------------|
| `NoSeriesMgt.InitSeries(...)` - 5 parameters | `NoSeries.GetNextNo(...)` - 1-2 parameters |
| `NoSeriesMgt.TestManual(...)` | `NoSeries.TestManual(...)` - Same method name |
| `NoSeriesMgt.TryGetNextNo(...)` | `NoSeries.PeekNextNo(...)` - New name |
| `NoSeriesMgt.SelectSeries(...)` | `NoSeries.AreRelated(...)` - Simplified API |
| Complex parameter passing | Simplified, intuitive API |
### Migration Strategy
For **backward compatibility** (supporting both BC v23 and v24+):
1. Use conditional compilation with `#if` directives based on platform version
2. Check runtime platform version and branch logic accordingly
3. Implement both patterns in separate procedures with version detection
{{% alert title="Note" color="warning" %}}
**The examples below reflect the LEGACY pattern** (NoSeriesManagement codeunit) for reference and historical context. For new development on BC v24+, use the modern `codeunit "No. Series"` pattern shown above.
{{% /alert %}}
---
## Description ## Description
At the heart of things, the Number Series engine allows users to define structure for a sequential numeric or alphanumeric string (collectively referred to as a 'number series'), then assign that structure to different parts of the system. At the heart of things, the Number Series engine allows users to define structure for a sequential numeric or alphanumeric string (collectively referred to as a 'number series'), then assign that structure to different parts of the system.