BC-Bench: Evaluating Agentic Engineering in a Domain-Specific Language for ERP
Organizations: Microsoft
Abstract
Agentic engineering systems have shown strong performance on general-purpose benchmarks, yet their effectiveness in enterprise resource planning (ERP) domain-specific languages (DSLs) remains underexplored. We introduce BC-Bench, a benchmark designed to evaluate agentic engineering on real-world tasks in AL, the DSL for Microsoft Dynamics 365 Business Central. BC-Bench comprises 101 manually curated tasks extracted from two Microsoft-owned production repositories, reflecting authentic ERP development workflows. Adapting the SWE-Bench methodology, we address the unique constraints of the AL ecosystem---including limited public resources and complex environment provisioning. Beyond generating functional code, BC-Bench evaluates test generation and supports multimodal problem statements where visual context is commonly present. We evaluate multiple frontier models across two agent harnesses, utilizing multi-run metrics to account for nondeterminism. In the Bug Fixing category, under our evaluated settings, between-model differences in resolution rate are larger than differences between the two evaluated agent harnesses, and improvements reported on general-purpose benchmarks do not consistently transfer to AL. These results highlight the need for domain-specific evaluation.
Figures & tables
| Metric | Value |
|---|---|
| Total tasks | 101 |
| BaseApp tasks | 85 |
| Other App tasks | 16 |
| Avg. files modified (gold patch) | 1.3 |
| Avg. gold patch LoC | 18.9 |
| Median files modified (gold patch) | 1.0 |
| Area | Count |
|---|---|
| Inventory | 21 |
| Finance | 19 |
| Sales | 12 |
| Project | 8 |
| Shopify | 7 |
| Manufacturing | 5 |
| Agent | Model | Mean with 95% CI | pass^5 | Duration | Version |
|---|---|---|---|---|---|
| Claude Code | claude-opus-4.6 | 68.5% (65.7–71.3%) | 49.5% | 284s | 0.2.0 |
| GitHub Copilot | claude-opus-4.6 | 65.1% (62.6–67.6%) | 50.5% | 314s | 0.2.0 |
| GitHub Copilot | gpt-5.2-codex | 60.8% (59.4–62.2%) | 49.5% | 196s | 0.2.2 |
| GitHub Copilot | claude-opus-4.5 | 59.8% (58.3–61.3%) | 38.6% | 172s | 0.2.0 |
| GitHub Copilot | claude-opus-4.5 | 58.4% (56.6–60.2%) | 38.6% | 165s | 0.1.0 |
| Claude Code | claude-opus-4.5 | 57.4% (55.4–59.4%) | 31.7% | 205s | 0.1.0 |
| Agent | Model | Mean with 95% CI | pass^5 | Duration | Version |
|---|---|---|---|---|---|
| GitHub Copilot | claude-opus-4.6 | 60.4% (58.8–62.0%) | 37.6% | 469s | 0.2.0 |
| GitHub Copilot | claude-opus-4.5 | 45.5% (43.0–48.0%) | 20.8% | 169s | 0.1.0 |
| GitHub Copilot | gpt-5.3-codex | 45.3% (42.5–48.1%) | 20.8% | 155s | 0.2.2 |
| GitHub Copilot | gpt-5.2-codex | 44.0% (40.8–48.5%) | 16.8% | 291s | 0.2.2 |
| Fixed model/version | Setting A | Setting B | -value |
|---|---|---|---|
| claude-opus-4.5, v0.1.0 | GitHub Copilot 58.4% | Claude Code 57.4% | 0.728 |
| claude-opus-4.6, v0.2.0 | Claude Code 68.5% | GitHub Copilot 65.1% | 0.075 |
| Fixed harness/version | Setting A | Setting B | -value |
|---|---|---|---|
| GitHub Copilot, v0.2.0 | claude-opus-4.6 65.1% | claude-opus-4.5 59.8% | 0.026 |
| GitHub Copilot, v0.2.2 | gpt-5.2-codex 60.8% | gpt-5.1-codex-max 53.7% | 0.019 |
| Fixed setting | Setting A | Setting B | -value |
|---|---|---|---|
| GitHub Copilot, v0.2.2 | gpt-5.3-codex 45.3% | gpt-5.2-codex 44.0% | 0.672 |
| Files Changed | gpt-5.2 | opus-4.6 | Tasks |
|---|---|---|---|
| 1 | 65.1% | 70.2% | 82 |
| 2+ | 42.1% | 43.2% | 19 |
| LoC Changed | gpt-5.2 | opus-4.6 | Tasks |
|---|---|---|---|
| 1–10 | 75.6% | 78.5% | 54 |
| 11–25 | 38.3% | 49.6% | 23 |
| 26+ | 49.2% | 50.0% | 24 |
| Area | gpt-5.2 | opus-4.6 | Tasks |
|---|---|---|---|
| Inventory | 65.7% | 70.5% | 21 |
| Finance | 51.6% | 62.1% | 19 |
| Sales | 65.0% | 70.0% | 12 |
| Project | 62.5% | 70.0% | 8 |
| Shopify | 48.6% | 54.3% | 7 |
| Manufacturing | 88.0% | 64.0% | 5 |
| Image | gpt-5.2 | opus-4.6 | Tasks | Chars |
|---|---|---|---|---|
| 0 | 53.5% | 57.1% | 34 | 1,514 |
| 1–5 | 56.7% | 60.0% | 30 | 1,720 |
| 6+ | 70.8% | 76.8% | 37 | 2,118 |
| Failure Mode | Trials | % |
|---|---|---|
| Timeout | 4 | 2.3 |
| Build Failure | 10 | 5.7 |
| Incorrect File | 52 | 29.5 |
| Incorrect Region | 32 | 18.2 |
| Wrong Solution | 78 | 44.3 |
| Total | 176 | 100 |
| Manual Label | Tasks | Failed Trials |
|---|---|---|
| Incomplete Fix | 10 | 36 |
| Incorrect Business Logic | 10 | 34 |
| Wrong AL/API Usage | 2 | 8 |
| Total | 22 | 78 |