#11007 Add Travel Request API lifecycle to Expense Agent
Travel Request API lifecycle management is integrated into the Expense Agent, enabling creation, approval, and rejection of travel requests through scoped OData endpoints with proper authorization and linked expense report generation.
- 30files
- 23AL files
- 23objects
Pull request · merged into main (BC30) on 2026-09-09 by claudiuciumedean · 30 files (+2653 -30), 23 AL · feature · tier official · reviewed (checked by Opus)
What changed
- Advertises the travelRequest capability and adds owner-scoped and approver-scoped travel request navigation in the API
- Adds bound submit, approve and reject actions with authorization checks, status guards and audit fields
- Approval creates one linked expense report; deleting a travel request is blocked while expense reports reference it
- Normalizes local currency on API reads and writes and prevents PATCH from changing status or ownership
- Emits submit, approve, auto-approve and reject usage events without identifiers; HTTP integration tests are disabled in CI
- Behaviour changes for users or extensions.
AL objects touched
- Page 6969 “Approver View API”, ExpenseAgent: modified
- Page 6928 “Expense Reports API”, ExpenseAgent: modified
- Page 6918 “Expense Users API”, ExpenseAgent: modified
- Page 7102 “Spend Request Details API”, ExpenseAgent: modified
- Page 7099 “Spend Requests API”, ExpenseAgent: modified
- Page 7135 “Travel Request Details API”, ExpenseAgent: modified
- Page 7134 “Travel Requests API”, ExpenseAgent: modified
- Page 7103 “Travelers API”, ExpenseAgent: modified
- Codeunit 6906 “Expense Capabilities Provider”, ExpenseAgent: modified
- Enum 6984 “Expense Capability”, ExpenseAgent: modified
- Table extension 6908 “Expense Spend Request”, ExpenseAgent: modified
- Table 6906 “Expense Report Header”, ExpenseAgent: modified
- Table 6907 “Expense Report Line”, ExpenseAgent: modified
- Table 6915 “Posted Expense Report Header”, ExpenseAgent: modified
- Table 6916 “Posted Expense Report Line”, ExpenseAgent: modified
- Permission set 6955 “Expense Agent - Data Depen.”, ExpenseAgent: modified
- Permission set 6952 “Expense Agent - Objects”, ExpenseAgent: modified
- Permission set 6904 “Expense Management - Objects”, ExpenseAgent: renamed
- Codeunit 6908 “Expense Event Subscriber”, ExpenseAgent: modified
- Codeunit 7133 “Travel Request Approval”, ExpenseAgent: added
- Page 7129 “Travel Request Card”, ExpenseAgent: modified
- Page 7136 “Travel Request List”, ExpenseAgent: modified
- Page 7137 “Travel Request Subform”, ExpenseAgent: modified
Context
- Work items: AB#626966
- Labels: AL: Apps (W1), ExpenseManagement, Team: Finance
- Systems: development
- From the description: “Extends the Expense Agent beta API so travel requests can be managed through the same scoped OData model as expenses and expense reports.”
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).