Best Practices

Guidelines for successful AI-assisted AL development

Overview

AI coding assistants are powerful tools, but they work best when used thoughtfully. This guide provides best practices for integrating AI assistance into your AL development workflow.

General Principles

1. AI Augments, Not Replaces

You are still the developer. The AI is a tool to enhance your productivity, not a replacement for your expertise.

Good Approach:

  • Use AI to generate boilerplate code
  • Review and understand all generated code
  • Make architectural decisions yourself
  • Validate business logic

Poor Approach:

  • Blindly accept all AI suggestions
  • Skip code review for AI-generated code
  • Let AI make design decisions
  • Assume AI understands your business requirements

2. Trust, but Verify

Always review AI-generated code:

// AI might generate this:
procedure CalculateDiscount(Amount: Decimal): Decimal
begin
    exit(Amount * 0.1); // Always 10% discount
end;

// But you need to verify it matches requirements:
// - Is 10% correct for all scenarios?
// - Should it vary by customer type?
// - Are there discount limits?
// - Should it read from setup?

3. Provide Good Context

Better context = better results:

Provide:

  • Clear file and folder names
  • XML documentation comments
  • Descriptive variable names
  • Project README with conventions
  • Open related files

Avoid:

  • Generic names like Temp1, DoStuff
  • Undocumented complex logic
  • Mixing unrelated code in one file

Code Generation Best Practices

Start with Structure

Generate scaffolding first, then refine:

  1. First: Generate basic structure
Create a codeunit skeleton for "Sales Order Processor" with procedures for:
- ValidateOrder
- CalculateTotals  
- ProcessPayment
- PostOrder
  1. Then: Implement each procedure
Implement the ValidateOrder procedure with these checks:
- Customer exists
- All lines have positive quantities
- Credit limit not exceeded

Review Generated Code

Check AI-generated code for:

Correctness

  • Does it do what you asked?
  • Are there edge cases not handled?
  • Is the logic sound?

AL Best Practices

  • Proper error handling
  • Appropriate use of transactions
  • Correct field validations
  • No unnecessary database calls

Business Central Standards

  • Correct use of BC APIs
  • Proper event patterns
  • Standard naming conventions
  • Application area settings

Performance

  • Efficient database queries
  • Appropriate filtering
  • Minimal record iterations
  • Proper use of FindSet vs FindFirst

Iterate and Refine

Don’t expect perfection on first try:

// Initial prompt
Create a procedure to import customers from CSV

// After reviewing generated code
Add validation for required fields: Name and Email

// After further review
Add error logging and return a list of failed imports

// Final refinement
Add telemetry tracking for import metrics

Code Review with AI

Use AI for Initial Review

AI can catch common issues:

Review this code for:
- Potential bugs
- Performance issues
- AL best practice violations
- Missing error handling

Don’t Skip Human Review

AI review is a supplement, not a replacement:

  • AI catches: Syntax issues, common patterns, style violations
  • You catch: Business logic errors, architectural concerns, context-specific issues

Review AI’s Review

The AI might miss context:

// AI might flag this as inefficient:
Customer.SetRange("No.", CustNo);
if Customer.FindFirst() then
    Customer.Name := NewName;

// But might miss that in your context, you're in a loop
// processing thousands of customers, which is inefficient

Documentation with AI

Generate Drafts, Then Personalize

Use AI for documentation drafts:

Generate XML documentation for this codeunit

Then review and enhance:

  • Add business context
  • Include usage examples
  • Document assumptions
  • Note dependencies

Keep Documentation Updated

When AI generates code changes:

Update this procedure and its XML documentation to include the new parameter

Create User-Facing Documentation

AI can help with user docs too:

Create user documentation explaining how to set up customer discount categories.
Target audience: Business users, not developers.

Testing with AI

Generate Test Scaffolding

Create a test codeunit structure for testing the Sales Order Processor
Include test methods for each public procedure

Create Test Data Setup

Create a helper procedure that sets up test data:
- One customer with normal credit limit
- One customer with exceeded credit
- Sample items with prices
- Sales header with lines

Don’t Rely Only on AI Tests

AI-generated tests might miss:

  • Edge cases specific to your business
  • Integration scenarios
  • Performance testing needs
  • User acceptance criteria

Refactoring with AI

Safe Refactoring Steps

  1. Ensure Tests Exist
Create tests for this procedure before we refactor it
  1. Refactor with AI
Refactor this procedure to extract the discount calculation into a separate function
  1. Verify Tests Still Pass Run your test suite to confirm behavior unchanged

  2. Review Changes Understand what changed and why

When to Refactor with AI

Good for:

  • Extracting methods
  • Renaming variables
  • Applying consistent formatting
  • Adding error handling
  • Modernizing deprecated APIs

Be Careful with:

  • Complex business logic changes
  • Architectural changes
  • Database schema modifications
  • Integration point changes

Learning from AI

Use AI as a Learning Tool

Ask for Explanations:

Explain why this code uses Commit instead of direct posting

Request Alternatives:

Show me three different ways to implement this validation,
with pros and cons of each

Learn Patterns:

Show me the standard AL pattern for implementing a document posting routine

Build Your Knowledge

Don’t become dependent:

  • Understand the code, don’t just use it
  • Learn the patterns being used
  • Research unfamiliar APIs or techniques
  • Practice writing code without AI assistance

Performance Considerations

AI and Code Performance

AI doesn’t automatically write optimal code:

// AI might generate this:
for i := 1 to Customer.Count do begin
    Customer.Get(i);
    ProcessCustomer(Customer);
end;

// You should refactor to:
if Customer.FindSet() then
    repeat
        ProcessCustomer(Customer);
    until Customer.Next() = 0;

Review for Performance

Always check AI-generated code for:

  • Database query efficiency
  • Unnecessary loops
  • Proper use of filters
  • Appropriate use of temporary tables

Security Considerations

Don’t Share Sensitive Data

Be careful what’s in your workspace:

  • Production connection strings
  • Customer data
  • API keys or secrets
  • Proprietary algorithms

Review Security Aspects

AI might not catch security issues:

// AI might generate this:
procedure ExecuteSQL(SQLStatement: Text)
begin
    // Direct SQL execution - potential SQL injection!
end;

// You need to catch security concerns

Collaboration Best Practices

Team Standards

Establish team guidelines:

  • When to use AI assistance
  • Required review process for AI code
  • Documentation requirements
  • Testing standards

Code Review Process

For AI-generated code:

  1. Mark commits that include AI-generated code
  2. Extra scrutiny during review
  3. Explain AI usage in PR descriptions
  4. Share learnings with the team

Knowledge Sharing

Help your team:

  • Share effective prompts
  • Document successful patterns
  • Discuss AI limitations found
  • Teach AI-assisted techniques

When NOT to Use AI

AI is Not Ideal For:

Critical Security Code

  • Authentication and authorization
  • Encryption implementations
  • Security-sensitive validations

Highly Specialized Logic

  • Unique business rules requiring deep domain knowledge
  • Complex calculations with many edge cases
  • Industry-specific compliance requirements

Exploration and Learning

  • When you’re trying to learn a new concept
  • When you need to deeply understand the solution
  • When the journey is as important as the destination

Quick, Simple Tasks

  • You can type it faster than explaining it
  • It’s simpler to do it yourself
  • The prompt would be longer than the code

Measuring Success

Track Your Productivity

Monitor how AI affects your work:

  • Time saved on boilerplate code
  • Reduction in syntax errors
  • Faster documentation creation
  • More time for design and testing

Quality Metrics

Ensure quality isn’t suffering:

  • Bug rates in AI-assisted code
  • Code review findings
  • Test coverage
  • Performance benchmarks

Continuous Improvement

  • Refine your prompting skills
  • Learn from unsuccessful attempts
  • Share successes with your team
  • Update your practices as AI tools evolve

Quick Reference: Do’s and Don’ts

✅ Do

  • Review all AI-generated code
  • Provide clear, specific prompts
  • Use AI for boilerplate and repetitive tasks
  • Learn from AI-generated examples
  • Test AI-generated code thoroughly
  • Keep documentation updated
  • Share knowledge with your team

❌ Don’t

  • Blindly accept AI suggestions
  • Skip code review for AI code
  • Include sensitive data in prompts
  • Rely on AI for architectural decisions
  • Use AI-generated code you don’t understand
  • Assume AI knows your business requirements
  • Let AI replace your expertise

Next Steps


Last modified October 17, 2025: Merge pull request #272 from microsoft/agentic-assistance-hub (2c230e3) by Jeremy Vyska