#12074 Expense Agent: travel request expense location, per-traveler reports, activity log and submitter comment
The Expense Agent travel request feature now supports expense location selection using per diem rules, creates per-traveler expense reports on approval, logs the full request lifecycle, enables rejection with automatic reopen, and allows submitter comments for resubmissions.
- 19files
- 15AL files
- 15objects
Pull request · merged into main (BC30) on 2026-10-02 by claudiuciumedean · 19 files (+2196 -365), 15 AL · feature · tier official · reviewed (checked by Opus)
What changed
- Expense location field replaces three obsolete country/region fields and enforces location+date validation when per diem is enabled
- Approving a travel request creates separate expense reports for each additional traveler, with employee validation and removal restrictions
- Activity log tracks travel request lifecycle (created, submitted, resubmitted, approved, rejected) with separate entries for generated expense reports
- Reject action reopens the request immediately so submitters can resubmit without a separate call
- New submitTravelRequestWithComment action allows comments during resubmission, stored in read-only field
- Behaviour changes for users or extensions.
AL objects touched
- Page 7122 “Expense Activity Log API”, ExpenseAgent: modified
- Page 7099 “Spend Requests API”, ExpenseAgent: modified
- Page 7134 “Travel Requests API”, ExpenseAgent: modified
- Codeunit 6926 “Expense Activity Log Mgt.”, ExpenseAgent: modified
- Table 7100 “Expense Activity Log Entry”, ExpenseAgent: modified
- Table extension 6908 “Expense Spend Request”, ExpenseAgent: modified
- Codeunit 6987 “Expense Report-Post”, ExpenseAgent: modified
- Table 6906 “Expense Report Header”, ExpenseAgent: modified
- Table 6907 “Expense Report Line”, ExpenseAgent: modified
- Permission set 6953 “Expense Agent - Data”, ExpenseAgent: modified
- Permission set 6952 “Expense Agent - Objects”, ExpenseAgent: modified
- Codeunit 6908 “Expense Event Subscriber”, ExpenseAgent: modified
- Codeunit 7133 “Travel Request Approval”, ExpenseAgent: modified
- Page 7129 “Travel Request Card”, ExpenseAgent: modified
- Table 6938 “Traveler”, ExpenseAgent: modified
Obsoletions
- Travel Request Card: International Travel, replaced by Expense Location
- Travel Request Card: Origin Country/Region Code, replaced by Expense Location
- Travel Request Card: Dest. Country/Region Code, replaced by Expense Location
- Travel Requests API: internationalTravel
- Travel Requests API: originCountryRegionCode
- Travel Requests API: destCountryRegionCode
Context
- Work items: AB#626966
- Labels: AL: Apps (W1), ExpenseManagement, Team: Finance
- Systems: development
Source: metadata of a merged pull request in microsoft/BCApps (bcapps): title, labels, changed paths and counts, with a summary in our words. No source text and no description beyond one short quote (D10, D61).