CentralGauge

LLM Benchmark Results for Microsoft Dynamics 365 Business Central AL Code

Report generated: February 14, 2026 at 8:13 PM

Benchmark data: Feb 8, 2026 – Feb 13, 2026

3
Runs
12
Models
56
Tasks
$71.27
Total Cost
9.3M
Tokens

Model Rankings

pass@1 pass@3 (additional)
Kimi K2.5 (t0.1)
56%
8%
64.3%
Gemini 3 Pro (t0.1)
55%
9%
64.3%
Glm 5 (t0.1)
45%
12%
57.1%
Minimax M2.5 (t0.1)
41%
9%
50.0%

Analytics

Compare pass rate and cost across models at a glance.

Performance vs Cost

0 20 40 60 80 100 Pass Rate % 0 2 4 6 8 10 12 Cost ($)Claude Opus 4.6Claude Opus 4.5 (50K)GPT-5.2Claude Sonnet 4.5Kimi K2.5Gemini 3 ProGrok Code Fast 1Glm 5Deepseek V3.2Qwen3 Max ThinkingMinimax M2.5Qwen3 Coder Nextanthropic/claude-opus-4-6: 76.8% pass rateanthropic/claude-opus-4-5-20251101@thinking=50000: 76.8% pass rateopenai/gpt-5.2-2025-12-11@thinking=high: 69.6% pass rateanthropic/claude-sonnet-4-5-20250929: 66.1% pass rateopenrouter/moonshotai/kimi-k2.5: 64.3% pass rategemini/gemini-3-pro-preview: 64.3% pass rateopenrouter/x-ai/grok-code-fast-1: 57.1% pass rateopenrouter/z-ai/glm-5: 57.1% pass rateopenrouter/deepseek/deepseek-v3.2: 55.4% pass rateopenrouter/qwen/qwen3-max-thinking: 51.8% pass rateopenrouter/minimax/minimax-m2.5: 50.0% pass rateopenrouter/qwen/qwen3-coder-next: 39.3% pass rate76.8%76.8%69.6%anthropic/claude-opus-4-6: $11.17anthropic/claude-opus-4-5-20251101@thinking=50000: $9.26openai/gpt-5.2-2025-12-11@thinking=high: $3.63anthropic/claude-sonnet-4-5-20250929: $4.27openrouter/moonshotai/kimi-k2.5: $7.96gemini/gemini-3-pro-preview: $3.03openrouter/x-ai/grok-code-fast-1: $10.77openrouter/z-ai/glm-5: $6.84openrouter/deepseek/deepseek-v3.2: $3.65openrouter/qwen/qwen3-max-thinking: $2.97openrouter/minimax/minimax-m2.5: $4.35openrouter/qwen/qwen3-coder-next: $3.37
Pass Rate Cost
Bars = pass rate • Dots = cost

Performance by Theme

How models perform across different AL code categories

Model Performance

anthropic/claude-opus-4-6

Runs:3
pass@1:76.2%
pass@3:76.8%
Consistency:98.2%
1st: 1052nd: 23Failed: 1343/56 passed
Temperature:0.1
Thinking:-
Tokens/run:216,746
Cost/run:$3.72

Known Shortcomings (6)

  • reserved-keyword-as-parameter-name 1x
  • cross-join-dataitem-link 1x
  • incomplete-procedure-body 1x
  • flowfield-calcfields-requirement 1x
  • parse-failure 1x
+1 more View all 6
View details ›

anthropic/claude-opus-4-5-20251101@thinking=50000

Runs:3
pass@1:75.0%
pass@3:76.8%
Consistency:96.4%
1st: 1052nd: 21Failed: 1343/56 passed
Temperature:0.1
Thinking:50,000
Tokens/run:184,549
Cost/run:$3.09

Known Shortcomings (8)

  • page-extension-with-table-extension 1x
  • reserved-keyword-as-parameter-name 1x
  • dictionary-iteration-syntax 1x
  • empty-or-malformed-code-generation 1x
  • temporary-table-parameter-handling 1x
+3 more View all 8
View details ›

openai/gpt-5.2-2025-12-11@thinking=high

Runs:3
pass@1:64.3%
pass@3:69.6%
Consistency:89.3%
1st: 772nd: 31Failed: 1739/56 passed
Temperature:0.1
Thinking:high
Tokens/run:139,806
Cost/run:$1.21

Known Shortcomings (10)

  • interface-definition-syntax 2x
  • table-field-caption-property 1x
  • query-object-syntax 1x
  • query-crossjoin-syntax 1x
  • parse-failure 1x
+5 more View all 10
View details ›

anthropic/claude-sonnet-4-5-20250929

Runs:3
pass@1:63.1%
pass@3:66.1%
Consistency:94.6%
1st: 852nd: 21Failed: 1937/56 passed
Temperature:0.1
Thinking:-
Tokens/run:151,654
Cost/run:$1.42

Known Shortcomings (8)

  • multiline-string-literals 1x
  • query-filter-element-syntax 1x
  • jsonobject-get-method-signature 1x
  • cross-join-dataitem-link-constraints 1x
  • reserved-keyword-as-variable-name 1x
+3 more View all 8
View details ›

openrouter/moonshotai/kimi-k2.5

Runs:3
pass@1:56.0%
pass@3:64.3%
Consistency:82.1%
1st: 742nd: 20Failed: 2036/56 passed
Temperature:0.1
Thinking:-
Tokens/run:297,584
Cost/run:$2.65

Known Shortcomings (3)

  • event-subscriber-parameter-syntax 1x
  • page-extension-cardpageid-override 1x
  • parse-failure 1x
View details ›

gemini/gemini-3-pro-preview

Runs:3
pass@1:55.4%
pass@3:64.3%
Consistency:83.9%
1st: 862nd: 7Failed: 2036/56 passed
Temperature:0.1
Thinking:-
Tokens/run:823,024
Cost/run:$1.01

Known Shortcomings (9)

  • multiline-string-literals 1x
  • inherent-permissions-syntax 1x
  • query-crossjoin-column-datasource 1x
  • complete-codeunit-generation 1x
  • yaml-parsing-string-manipulation 1x
+4 more View all 9
View details ›

openrouter/x-ai/grok-code-fast-1

Runs:3
pass@1:52.4%
pass@3:57.1%
Consistency:89.3%
1st: 682nd: 20Failed: 2432/56 passed
Temperature:0.1
Thinking:-
Tokens/run:412,978
Cost/run:$3.59

Known Shortcomings (12)

  • query-object-syntax 2x
  • multiline-string-literals 1x
  • page-extension-cardpageid-override 1x
  • json-api-methods 1x
  • recordref-fieldref-dynamic-manipulation 1x
+7 more View all 12
View details ›

openrouter/deepseek/deepseek-v3.2

Runs:3
pass@1:47.6%
pass@3:55.4%
Consistency:80.4%
1st: 552nd: 25Failed: 2531/56 passed
Temperature:0.1
Thinking:-
Tokens/run:147,036
Cost/run:$1.22

Known Shortcomings (18)

  • dictionary-clear-method 1x
  • application-area-in-page-extension-field 1x
  • multiline-string-literals 1x
  • page-extension-cardpageid-override 1x
  • errorinfo-custom-dimensions-api 1x
+13 more View all 18
View details ›

openrouter/qwen/qwen3-max-thinking

Runs:3
pass@1:47.0%
pass@3:51.8%
Consistency:89.3%
1st: 502nd: 29Failed: 2729/56 passed
Temperature:0.1
Thinking:-
Tokens/run:134,893
Cost/run:$0.99

Known Shortcomings (12)

  • option-field-optionmembers-required 2x
  • enum-frominteger-syntax 1x
  • list-iteration-pattern 1x
  • variant-type-argument-and-interface-definition 1x
  • json-object-api-methods 1x
+7 more View all 12
View details ›

openrouter/z-ai/glm-5

Runs:3
pass@1:45.2%
pass@3:57.1%
Consistency:75.0%
1st: 522nd: 24Failed: 2432/56 passed
Temperature:0.1
Thinking:-
Tokens/run:258,725
Cost/run:$2.28

Known Shortcomings (17)

  • list-dictionary-of-interface-clear-method 1x
  • event-subscriber-event-name 1x
  • al-string-literal-escaping 1x
  • query-object-syntax 1x
  • fluent-api-return-self-codeunit 1x
+12 more View all 17
View details ›

openrouter/minimax/minimax-m2.5

Runs:3
pass@1:41.1%
pass@3:50.0%
Consistency:82.1%
1st: 502nd: 19Failed: 2828/56 passed
Temperature:0.1
Thinking:-
Tokens/run:195,437
Cost/run:$1.45

Known Shortcomings (18)

  • interface-definition-syntax 2x
  • text-char-conversion-copystr 1x
  • page-object-definition 1x
  • event-subscriber-attribute-syntax 1x
  • page-extension-and-table-extension-generation 1x
+13 more View all 18
View details ›

openrouter/qwen/qwen3-coder-next

Runs:3
pass@1:35.1%
pass@3:39.3%
Consistency:91.1%
1st: 382nd: 21Failed: 3422/56 passed
Temperature:0.1
Thinking:-
Tokens/run:144,605
Cost/run:$1.12

Known Shortcomings (19)

  • codeunit-generation-empty-output 5x
  • interface-definition-syntax 3x
  • query-object-syntax 2x
  • initvalue-vs-defaultvalue 1x
  • text-trim-method-unavailable 1x
+14 more View all 19
View details ›

Task Results Matrix

N/M = passed N of M runs (hover for details)

TaskDescriptionClaude Opus 4.6Claude Opus 4.5 (50K)GPT-5.2Claude Sonnet 4.5Kimi K2.5Gemini 3 ProGrok Code Fast 1Deepseek V3.2Qwen3 Max ThinkingGlm 5Minimax M2.5Qwen3 Coder Next
CG-AL-E001Create a simple AL table called "Product Category" with ID 70000. The table should have the following fields: - Code (Code[20], primary key) - Description (Text[100]) - Active (Boolean, default true) - Created Date (Date)3/33/33/33/33/33/33/32/33/33/33/30/3
CG-AL-E002Create a simple AL card page called "Product Category Card" with ID 70001. The page should be based on the existing "Product Category" table (ID 69001) and display the following fields: - Code - Description - Active - Created Date3/33/33/33/33/33/33/33/33/32/31/33/3
CG-AL-E003Create a simple AL enum called "Priority Level" with ID 70000. The enum should have the following values: - Low (value 0) - Medium (value 1) - High (value 2) - Critical (value 3)3/33/33/33/33/33/33/33/33/31/33/33/3
CG-AL-E004Create a table extension called "Item Extension" with ID 70000 that extends the standard Item table. Add the following new fields: - Warranty Period (Integer, representing months) - Supplier Rating (Option with values: Not Rated, Bronze, Silver, Gold, Platinum) - Last Maintenance Date (Date) - Special Instructions (Text[250])3/33/33/33/33/33/33/33/33/32/33/33/3
CG-AL-E005Create a simple AL codeunit called "Text Utilities" with ID 70000. The codeunit should have the following public procedures: - CapitalizeFirstLetter(InputText: Text): Text - capitalizes the first letter of input text - CountWords(InputText: Text): Integer - counts the number of words in the input text - IsValidEmail(EmailAddress: Text): Boolean - basic validation to check if text contains @ and .3/33/33/33/33/31/33/33/31/33/30/32/3
CG-AL-E006Create a page extension called "Customer Card Extension" with ID 70000 that extends the Customer Card page (page 21). Add the following controls to the General group: - Preferred Contact Method (Option field with values: Email, Phone, Mail, SMS) - Customer Notes (Text field for internal notes) - VIP Customer (Boolean field to mark important customers)3/33/33/33/32/33/33/30/32/33/31/30/3
CG-AL-E007Create a simple AL report called "Customer List Report" with ID 70000. The report should use the Customer table as its data source and display: - Customer No. (column name: No_Customer, source: "No.") - Customer Name (column name: Name_Customer, source: Name) - City (column name: City_Customer, source: City) - Phone No. (column name: PhoneNo_Customer, source: "Phone No.")3/33/33/33/33/33/33/33/33/33/33/33/3
CG-AL-E008Create a simple AL interface called "Payment Processor" with ID 70000. The interface should define the following procedures: - ProcessPayment(Amount: Decimal; PaymentMethod: Text): Boolean - ValidatePayment(PaymentData: Text): Boolean - GetTransactionFee(Amount: Decimal): Decimal3/33/32/33/32/33/31/31/33/31/30/30/3
CG-AL-E009Create a simple AL XMLport called "Item Export" with ID 70000. The XMLport should export Item data with the following structure: - Root element: Items - Item element containing: No, Description, Unit Price, Inventory0/30/30/30/30/30/30/30/30/30/30/30/3
CG-AL-E010Create a simple AL codeunit called "Item Event Subscriber" with ID 70001 that subscribes to Item table events. Create an event subscriber procedure that: - Subscribes to the OnAfterInsert event of the Item table - Displays a message when a new item is created - Includes proper EventSubscriber attributes3/33/33/33/32/33/30/33/33/31/30/33/3
CG-AL-E031Create a table called "CG Subscription Plan" with ID 70031.3/33/33/33/33/33/33/33/33/33/33/33/3
CG-AL-E032Create an interface called "CG Token Provider".3/33/33/33/33/33/33/33/33/33/33/30/3
CG-AL-E045Create a table called "Vehicle Log" with ID 70045.3/33/33/33/33/33/33/32/33/30/33/32/3
CG-AL-E050Create an AL codeunit named "CG Text Builder" with ID 70050 that uses multiline string literals.3/31/32/30/30/30/30/30/30/30/30/30/3
CG-AL-E051Create an AL codeunit named "CG Number Sequence" with ID 70051 that increments string values with numeric portions.3/33/33/32/30/32/32/30/30/31/30/30/3
CG-AL-E052Create an AL codeunit named "CG Type Converter" with ID 70052 for converting simple types to text.3/33/33/33/30/30/33/31/33/31/32/33/3
CG-AL-E053Create a page extension named "CG Item List Extension" with ID 70053 that extends the "Item List" page (Page 31).3/33/33/33/32/33/33/30/33/33/31/33/3
CG-AL-H001Create a codeunit called "Tax Calculator" with ID 70100. The codeunit should implement international tax calculation with the following procedure:3/33/33/33/33/32/33/33/33/32/33/33/3
CG-AL-H002Create two tables to demonstrate FlowField with CalcFormula:3/33/33/33/33/33/33/33/32/33/33/33/3
CG-AL-H003Create a codeunit called "CG Temp Table Processor" with ID 70202 that demonstrates correct temporary table handling.3/33/30/30/32/33/30/30/30/33/30/30/3
CG-AL-H004Create an enum and codeunit that demonstrate correct enum ordinal handling.3/33/33/33/33/33/33/33/33/33/33/33/3
CG-AL-H005Create a table and codeunit that test understanding of Rec vs xRec and Modify behavior.0/30/30/30/30/30/30/30/30/30/30/30/3
CG-AL-H006Create a SingleInstance codeunit that maintains state across calls within the same session.3/33/33/33/33/33/33/32/33/33/33/33/3
CG-AL-H007Create a codeunit that demonstrates modern AL error handling with ErrorInfo.3/33/33/33/33/33/33/32/30/32/32/30/3
CG-AL-H008Create a codeunit demonstrating TryFunction pattern for safe execution.3/33/33/33/33/33/33/33/33/33/33/33/3
CG-AL-H009Create a codeunit that implements proper BC currency rounding patterns.3/33/33/33/33/31/33/33/33/32/33/33/3
CG-AL-H010Create a codeunit with IntegrationEvent publishers and demonstrate proper event patterns.3/33/33/33/33/33/33/33/33/33/33/31/3
CG-AL-H011Create an AL query object named "CG Sales Summary" with ID 70011 that:0/33/31/31/30/33/30/33/30/30/30/30/3
CG-AL-H013Create an AL codeunit named "CG Loop Utilities" with ID 70013 that demonstrates the continue keyword:3/33/33/33/33/33/32/33/33/33/33/33/3
CG-AL-H014Create an AL codeunit named "CG JSON Parser" with ID 70014 that uses the typed JSON getter methods:3/33/30/30/30/30/30/30/30/30/30/30/3
CG-AL-H0151. Define an Interface named "Payment Gateway".3/33/33/33/33/33/33/32/32/32/32/30/3
CG-AL-H016Create an AL codeunit named "CG Secure Storage" with ID 70016 that demonstrates SecretText handling:0/30/30/30/30/30/30/30/30/30/30/30/3
CG-AL-H017Create an AL query object named "CG Dimension Matrix" with ID 70017 that:3/33/30/30/30/31/30/30/30/30/30/30/3
CG-AL-H018Create an AL codeunit named "CG Request Builder" with ID 70018 implementing a fluent API pattern:3/33/33/33/33/32/30/30/32/30/30/30/3
CG-AL-H019Create an AL codeunit named "CG Internal Service" with ID 70019 demonstrating security attributes:3/33/33/33/33/30/32/32/33/33/30/33/3
CG-AL-H020Create an AL codeunit named "CG Collection Processor" with ID 70020 demonstrating List and Dictionary types:3/30/33/30/30/31/31/32/30/30/30/30/3
CG-AL-H021Create AL objects demonstrating Lists and Dictionaries of interfaces (available in BC 2025 Wave 1).0/30/30/30/31/30/30/30/30/30/30/30/3
CG-AL-H022Create a codeunit named "CG Dynamic Record Handler" with ID 70224 that demonstrates advanced RecordRef and FieldRef usage for dynamic record manipulation.3/33/32/30/30/30/30/30/30/30/31/30/3
CG-AL-H023Create a codeunit named "CG Record Introspector" with ID 70226 for dynamic record manipulation and introspection using RecordRef and FieldRef.0/30/30/30/30/30/30/30/30/30/30/30/3
CG-AL-H205Create a codeunit called "CG Line Amount Engine" with ID 70205. The codeunit must have Access = Public.3/33/33/33/33/33/33/33/31/33/33/30/3
CG-AL-M001Create a comprehensive API page called "Product API" with ID 70100 that provides full CRUD operations for a Product table. The API should: - Support GET, POST, PATCH, DELETE operations - Include proper error handling and validation - Have fields: id (SystemId), productCode, description, unitPrice, stockQuantity, categoryId - Include proper OData annotations and API versioning (v1.0) - Add business logic validation (price must be positive, stock must be non-negative) - Include proper captions, publisher info (mycompany), and API group (products)0/30/30/30/30/30/30/30/30/30/30/30/3
CG-AL-M002Create a comprehensive business logic codeunit called "Sales Order Calculator" with ID 70001. The codeunit should implement sales calculations including: - CalculateLineTotal(Quantity: Decimal; UnitPrice: Decimal): Decimal - basic calculation - CalculateLineTotal(Quantity: Decimal; UnitPrice: Decimal; DiscountPercent: Decimal): Decimal - with discount - CalculateOrderTotal(LineTotals: List of [Decimal]): Decimal - sum all line totals from list - ApplyVolumeDiscount(OrderTotal: Decimal): Decimal - apply tiered discounts:3/33/33/33/33/33/33/30/30/33/33/32/3
CG-AL-M003Create a complex table called "Sales Contract" with ID 70002 that includes comprehensive validation. Fields should include: - Contract No. (Code[20], primary key, auto-generated) - Customer No. (Code[20], with TableRelation to Customer) - Start Date and End Date (Date fields with validation) - Contract Value (Decimal with minimum value validation) - Status (Option: Draft, Active, Suspended, Terminated, Closed) - Payment Terms (Code[10] with TableRelation)0/30/30/30/30/30/30/30/30/30/30/30/3
CG-AL-M004Create an interactive page called "Sales Order Workspace" with ID 70101 that provides comprehensive order management. The page should be PageType Card, based on Sales Header table (filtered to Document Type::Order), and include:3/33/33/33/33/30/33/32/33/30/32/30/3
CG-AL-M005Create an integration codeunit called "External Payment Service" with ID 70002 that handles external API communication. The codeunit should implement the following procedures:2/30/30/30/30/30/30/30/30/30/30/30/3
CG-AL-M006Create an advanced table extension called "Advanced Customer Extension" with ID 70001 that extends the Customer table.3/33/30/33/31/30/30/32/30/30/32/30/3
CG-AL-M007Create a complex report called "Sales Performance Analysis" with ID 70001 that performs advanced data processing.0/30/31/30/30/30/30/30/30/30/30/30/3
CG-AL-M008Create a workflow implementation codeunit called "Purchase Approval Workflow" with ID 70003.0/30/30/31/30/30/30/30/30/30/30/30/3
CG-AL-M009Create a comprehensive interface implementation for a shipping service.0/32/31/33/31/33/30/30/30/31/30/30/3
CG-AL-M010Create a complete multi-object scenario for a "Project Management" system with related objects:0/30/30/30/30/30/30/30/30/30/30/30/3
CG-AL-M020Create an AL codeunit named "CG JSON Value Extractor" with ID 70120.3/33/30/30/32/31/32/30/30/30/30/30/3
CG-AL-M021Create an AL codeunit named "CG YAML Handler" with ID 70121 that handles reading and writing YAML.3/33/30/30/30/30/30/30/30/30/30/30/3
CG-AL-M022Create a codeunit named "CG Weather Service" with ID 70122 that makes HTTP calls to an external weather API. This tests whether the LLM can properly implement HttpClient usage.3/33/33/33/31/33/30/33/30/32/30/30/3
CG-AL-M023Create a codeunit named "CG Partial Record Loader" with ID 70123 that demonstrates the SetLoadFields method for optimized partial record loading.3/33/33/33/33/31/33/33/33/33/31/33/3
CG-AL-M0881. Create an Enum with ID 70188 named "Subscription Plan".3/33/33/33/33/33/33/33/33/32/33/31/3
CG-AL-M112Create two tables:0/30/30/30/30/30/30/30/30/30/30/30/3