Introduction
In Microsoft Dynamics 365 Business Central, actions are buttons, menu items, or commands that users click to perform tasks directly from pages.
Examples include:
- Posting documents
- Opening reports
- Navigating to related pages
- Running approvals
- Exporting data
- Executing custom business logic
Action Triggers allow developers to define what happens when a user clicks an action.
For beginner AL developers, understanding action triggers is essential for building interactive, efficient, and user-friendly ERP applications.
What are Action Triggers?
Action triggers are event-driven AL code blocks attached to page actions.
They execute automatically when the user clicks a button or command.
Benefits:
- Process automation
- Workflow execution
- User productivity
- Custom navigation
- Secure business operations
Main Action Trigger: OnAction()
Overview
OnAction() is the primary trigger for page actions.
When a user clicks an action button, this trigger executes.
Syntax:
action(MyAction)
{
trigger OnAction()
begin
Message('Action executed');
end;
}
Basic Example
action(PostOrder)
{
Caption = 'Post Order';
Image = Post;
trigger OnAction()
begin
Message('Sales order posted successfully');
end;
}
What Happens:
- User clicks Post Order
- AL trigger runs
- Logic executes automatically
Common Uses of Action Triggers
1. Posting Processes
trigger OnAction()
begin
SalesPost.Run(Rec);
end;
Example:
- Post sales invoices
- Post purchase orders
- Post journals
2. Opening Reports
trigger OnAction()
begin
Report.Run(50100);
end;
Example:
- Customer reports
- Ledger reports
- Financial statements
3. Page Navigation
trigger OnAction()
begin
Page.Run(Page::"Customer List");
end;
Example:
- Open related records
- View ledger entries
- Navigate workflows
4. Approval Workflows
trigger OnAction()
begin
ApprovalMgmt.SendApprovalRequest(Rec);
end;
Example:
- Purchase approvals
- Sales approvals
- Expense approvals
5. Custom Validation
trigger OnAction()
begin
if Rec.Amount <= 0 then
Error('Amount must be greater than zero');
end;
Action Properties Beginners Should Know
Caption
Defines the button name.
Caption = ‘Submit’;
Image
Defines the icon.
Image = Approve;
Promoted
Shows action prominently on the ribbon.
Promoted = true;
PromotedCategory
Groups actions.
PromotedCategory = Process;
Best Practices for Action Triggers
1. Keep Actions User-Friendly
Use clear:
- Captions
- Icons
- Categories
2. Validate Before Processing
Always check:
- Required fields
- Permissions
- Status conditions
Example:
if Status <> Status::Open then
Error(‘Only open records can be processed’);
3. Use Codeunits for Complex Logic
Avoid placing heavy business processes directly inside OnAction().
Better Approach:
trigger OnAction()
begin
OrderProcessor.Run(Rec);
end;
4. Secure Sensitive Actions
Examples:
- Delete
- Post
- Approve
- Financial processing
5. Provide Clear User Feedback
Use:
- Messages
- Confirmations
- Error handling
Common Business Scenarios
| Goal | Action Trigger Use |
| Post document | OnAction |
| Run report | OnAction |
| Open related page | OnAction |
| Send approval | OnAction |
| Export data | OnAction |
| Validate process | OnAction |
Beginner Mistakes to Avoid
Mistake 1: Heavy logic inside actions
Fix: Move logic to codeunits.
Mistake 2: Missing validations
Fix: Always validate before execution.
Mistake 3: Poor naming
Fix: Use clear captions and icons.
Mistake 4: Ignoring security
Fix: Restrict sensitive actions appropriately.
Real-World Example: Approve Purchase Order
action(ApproveOrder)
{
Caption = 'Approve';
Image = Approve;
Promoted = true;
trigger OnAction()
begin
if Rec.Status <> Rec.Status::PendingApproval then
Error('Order must be pending approval');
Rec.Status := Rec.Status::Approved;
Rec.Modify();
Message('Purchase order approved successfully');
end;
}
Features Demonstrated:
- Validation
- Status update
- Record modification
- User feedback
Professional Development Tips
- Design intuitive actions
- Keep logic modular
- Use permission checks
- Follow UI standards
- Group actions logically
- Test all workflows
Conclusion
Action triggers are essential for creating interactive and process-driven Business Central applications.
By mastering OnAction(), developers can build:
- Posting systems
- Approval workflows
- Navigation tools
- Automated business processes
- Professional ERP customizations
Strong action trigger knowledge improves both user experience and business efficiency.
Final Thought
Whether you are building:
- Sales workflows
- Purchase approvals
- Reporting tools
- Navigation systems
- Automation features
Action triggers are a core skill for every Business Central developer.