CentralGauge

LLM Benchmark Results for Microsoft Dynamics 365 Business Central AL Code

Report generated: January 6, 2026

Model Rankings

1st Pass 2nd Pass
Opus 4.5 (t0.1)
52%
14%
66.1%
Gemini 3 Pro (t0.1)
54%
60.7%
Sonnet 4.5 (t0.1)
43%
13%
55.4%
gpt-5.2-2025 (t0.1)
36%
18%
53.6%
GPT-5.2 (t0.1)
39%
13%
51.8%
grok-code-fast (t0.1)
36%
13%
48.2%
deepseek-v3.2 (t0.1)
29%
14%
42.9%
Haiku 4.5 (t0.1)
29%
9%
37.5%
minimax-m2.1 (t0.1)
29%
35.7%

Model Performance

anthropic/claude-opus-4-5-20251101

Pass Rate:66.1%
Avg Score:72.5%
First Pass:51.8%
Temperature:0.1
Thinking:-
Tokens:159,557
Cost:$2.77

Known Shortcomings (21)

  • parse-failure 2x
  • reserved-keyword-variable-name 1x
  • message-in-event-subscriber 1x
  • multiline-string-literal-syntax 1x
  • isolated-storage-secrettext-overload 1x
+16 more View all 21

gemini/gemini-3-pro-preview

Pass Rate:60.7%
Avg Score:66.1%
First Pass:53.6%
Temperature:0.1
Thinking:-
Tokens:645,913
Cost:$0.50

Known Shortcomings (6)

  • event-subscriber-syntax 1x
  • json-value-extraction-methods 1x
  • empty-or-malformed-output 1x
  • variant-type-conversion 1x
  • purchase-header-event-names 1x
+1 more View all 6

anthropic/claude-sonnet-4-5-20250929

Pass Rate:55.4%
Avg Score:61.4%
First Pass:42.9%
Temperature:0.1
Thinking:-
Tokens:161,423
Cost:$1.62

Known Shortcomings (25)

  • parse-failure 3x
  • query-count-column-syntax 1x
  • jsonobject-get-method-signature 1x
  • dataitem-link-cross-join-conflict 1x
  • reserved-keyword-variable-name 1x
+20 more View all 25

openai/gpt-5.2-2025-12-11(guided)

Pass Rate:53.6%
Avg Score:59.0%
First Pass:35.7%
Temperature:0.1
Thinking:-
Tokens:149,235
Cost:$1.02

openai/gpt-5.2-2025-12-11

Pass Rate:51.8%
Avg Score:54.4%
First Pass:39.3%
Temperature:0.1
Thinking:-
Tokens:165,940
Cost:$1.19

Known Shortcomings (22)

  • json-typed-getter-methods 4x
  • table-field-property-context 2x
  • query-crossjoin-syntax 2x
  • report-syntax-structure 2x
  • empty-or-missing-code-generation 2x
+17 more View all 22

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

Pass Rate:48.2%
Avg Score:52.5%
First Pass:35.7%
Temperature:0.1
Thinking:-
Tokens:239,839
Cost:$2.80

Known Shortcomings (11)

  • interface-definition-syntax 2x
  • json-value-extraction-methods 2x
  • event-subscriber-xrec-parameter 1x
  • table-definition-syntax 1x
  • query-object-syntax 1x
+6 more View all 11

openrouter/deepseek/deepseek-v3.2

Pass Rate:42.9%
Avg Score:47.0%
First Pass:28.6%
Temperature:0.1
Thinking:-
Tokens:179,772
Cost:$1.99

Known Shortcomings (15)

  • char-type-not-available 1x
  • page-extension-field-properties 1x
  • event-subscriber-attribute-syntax 1x
  • errorinfo-customdimensions-api 1x
  • json-asvalue-method-signature 1x
+10 more View all 15

anthropic/claude-haiku-4-5-20251001

Pass Rate:37.5%
Avg Score:43.9%
First Pass:28.6%
Temperature:0.1
Thinking:-
Tokens:182,321
Cost:$0.59

Known Shortcomings (18)

  • event-subscriber-codeunit-subtype 1x
  • evaluate-function-syntax 1x
  • test-attribute-codeunit-subtype 1x
  • pageextension-property-syntax 1x
  • codeunit-enum-structure 1x
+13 more View all 18

openrouter/minimax/minimax-m2.1

Pass Rate:35.7%
Avg Score:40.6%
First Pass:28.6%
Temperature:0.1
Thinking:-
Tokens:232,181
Cost:$2.75

Task Results Matrix

P = Pass, F = Fail (hover for details)

TaskDescriptionOpus 4.5Gemini 3 ProSonnet 4.5gpt-5.2-2025GPT-5.2grok-code-fastdeepseek-v3.2Haiku 4.5minimax-m2.1
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)PPPPPPPPP
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 DatePPPPPPPPP
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)PPPPPPPPP
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])PPPPPPPPP
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 .PPPPPPFPP
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)PPPPPPFPF
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.")FFFFFFFFF
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): DecimalPPPPPFPPF
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, InventoryFFFFFFFFF
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 - Updates a custom log or displays a message when a new item is created - Includes proper EventSubscriber attributesFFFFPFFFF
CG-AL-E031Create a table called "CG Subscription Plan" with ID 70031.FFFFFFFFF
CG-AL-E032Create an interface called "CG Token Provider".PPPPPPPPP
CG-AL-E045Create a table called "Vehicle Log" with ID 70045.PPPPPPPPP
CG-AL-E050Create an AL codeunit named "CG Text Builder" with ID 70050 that uses multiline string literals.FFFPFFFFF
CG-AL-E051Create an AL codeunit named "CG Number Sequence" with ID 70051 that increments string values with numeric portions.PPPPPPPFF
CG-AL-E052Create an AL codeunit named "CG Type Converter" with ID 70052 for converting simple types to text.PPPPPPPFP
CG-AL-E053Create a page extension named "CG Item List Extension" with ID 70053 that extends the "Item List" page (Page 31).PPPPPPFFP
CG-AL-H001Create a codeunit called "Tax Calculator" with ID 70100. The codeunit should implement international tax calculation with the following procedure:PPPPPPPPP
CG-AL-H002Create two tables to demonstrate FlowField with CalcFormula:FFFFFFFFF
CG-AL-H003Create a codeunit called "CG Temp Table Processor" with ID 70202 that demonstrates correct temporary table handling.FPPFFFFFF
CG-AL-H004Create an enum and codeunit that demonstrate correct enum ordinal handling.PPPPPPPPP
CG-AL-H005Create a table and codeunit that test understanding of Rec vs xRec and Modify behavior.FFFFFFFFF
CG-AL-H006Create a SingleInstance codeunit that maintains state across calls within the same session.PPPPPPPPP
CG-AL-H007Create a codeunit that demonstrates modern AL error handling with ErrorInfo.PPPPPPFFF
CG-AL-H008Create a codeunit demonstrating TryFunction pattern for safe execution.PPPPPPPPP
CG-AL-H009Create a codeunit that implements proper BC currency rounding patterns.PPPPPPPPP
CG-AL-H010Create a codeunit with IntegrationEvent publishers and demonstrate proper event patterns.PPPPPPPPP
CG-AL-H011Create an AL query object named "CG Sales Summary" with ID 70011 that:PPFFPFPFF
CG-AL-H013Create an AL codeunit named "CG Loop Utilities" with ID 70013 that demonstrates the continue keyword:PPPPPPPPP
CG-AL-H014Create an AL codeunit named "CG JSON Parser" with ID 70014 that uses the typed JSON getter methods:PFFFFFFFF
CG-AL-H0151. Define an Interface named "Payment Gateway".PPPPPPPFF
CG-AL-H016Create an AL codeunit named "CG Secure Storage" with ID 70016 that demonstrates SecretText handling:FFFFFFFFF
CG-AL-H017Create an AL query object named "CG Dimension Matrix" with ID 70017 that:PPFFFFPFF
CG-AL-H018Create an AL codeunit named "CG Request Builder" with ID 70018 implementing a fluent API pattern:PPPFFPFFF
CG-AL-H019Create an AL codeunit named "CG Internal Service" with ID 70019 demonstrating security attributes:PPPPPPPPP
CG-AL-H020Create an AL codeunit named "CG Collection Processor" with ID 70020 demonstrating List and Dictionary types:FFFPPPFFF
CG-AL-H021Create AL objects demonstrating Lists and Dictionaries of interfaces (available in BC 2025 Wave 1).FFFFFFFFF
CG-AL-H022Create a codeunit named "CG Dynamic Record Handler" with ID 70224 that demonstrates advanced RecordRef and FieldRef usage for dynamic record manipulation.PPPFFFFFF
CG-AL-H023Create a codeunit named "CG Record Introspector" with ID 70226 for dynamic record manipulation and introspection using RecordRef and FieldRef.PFFFFFFFF
CG-AL-H205Create a codeunit called "CG Line Amount Engine" with ID 70205. The codeunit must have Access = Public.PPPPPPPPF
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)FFFFFFFFF
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:PPPPPPPFP
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)FFFFFFFFF
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:PPPPPPPPF
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:FFFFFFFFF
CG-AL-M006Create an advanced table extension called "Advanced Customer Extension" with ID 70001 that extends the Customer table.FFFFFFFFF
CG-AL-M007Create a complex report called "Sales Performance Analysis" with ID 70001 that performs advanced data processing.PPFFFFFFF
CG-AL-M008Create a workflow implementation codeunit called "Purchase Approval Workflow" with ID 70003.PFFFFFFFF
CG-AL-M009Create a comprehensive interface implementation for a shipping service.PPPFFFFPF
CG-AL-M010Create a complete multi-object scenario for a "Project Management" system with related objects:FFFFFFFFF
CG-AL-M020Create an AL codeunit named "CG JSON Value Extractor" with ID 70120.PPPPFFFFF
CG-AL-M021Create an AL codeunit named "CG YAML Handler" with ID 70121 that handles reading and writing YAML.PFFFFFFFF
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.FFFFFFFFF
CG-AL-M023Create a codeunit named "CG Partial Record Loader" with ID 70123 that demonstrates the SetLoadFields method for optimized partial record loading.FFFPFFFFP
CG-AL-M0881. Create an Enum with ID 70188 named "Subscription Plan".PPPPPPPPP
CG-AL-M112Create two tables:FFFFFFFFF