---
id: change/bcapps/12074
type: change
title: "#12074 Expense Agent: travel request expense location, per-traveler reports, activity log and submitter comment"
summary: 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.
tier: official
language: en
tags:
  - feature
  - main
  - bc30
  - page expense activity log api
  - page spend requests api
  - page travel requests api
  - codeunit expense activity log mgt.
  - table expense activity log entry
  - tableextension expense spend request
system: development
review:
  state: reviewed
  by: opus
  at: "2026-10-08T02:02:50.370Z"
  flags: []
generated:
  at: "2026-10-08T01:26:53.141Z"
  pipeline: 0.2.0
  prompts:
    extract-change: 1
  input_hash: b79e2cd4968e71182689c173415ce8cbfa6c9ef4
evidence:
  - kind: code
    url: https://github.com/microsoft/BCApps/pull/12074
    title: "microsoft/BCApps#12074: Expense Agent: travel request expense location, per-traveler reports, activity log and submitter comment"
    date: "2026-10-02"
    commit: b79e2cd4968e71182689c173415ce8cbfa6c9ef4
    t: null
    quote: null
links:
  learn: []
  objects:
    - object/page/7122
    - object/page/7099
    - object/page/7134
    - object/codeunit/6926
    - object/table/7100
    - object/tableextension/6908
    - object/codeunit/6987
    - object/table/6906
    - object/table/6907
    - object/permissionset/6953
    - object/permissionset/6952
    - object/codeunit/6908
    - object/codeunit/7133
    - object/page/7129
    - object/table/6938
  features: []
  topics: []
  localizations: []
  videos: []
  posts: []
  guidelines: []
  changes: []
number: 12074
repo: microsoft/BCApps
source_id: bcapps-prs
url: https://github.com/microsoft/BCApps/pull/12074
kind: pr
base_branch: main
major: "30"
merged_at: "2026-10-02T20:24:37Z"
author: claudiuciumedean
author_type: User
community_contribution: false
labels:
  - "AL: Apps (W1)"
  - ExpenseManagement
  - "Team: Finance"
change_class: code
change_kind: feature
behavior_change: true
breaking: false
files:
  count: 19
  additions: 2196
  deletions: 365
  al: 15
apps:
  - ExpenseAgent
objects_touched:
  - key: page/7122
    page: page/7122
    type: page
    id: 7122
    name: Expense Activity Log API
    app: ExpenseAgent
    status: modified
  - key: page/7099
    page: page/7099
    type: page
    id: 7099
    name: Spend Requests API
    app: ExpenseAgent
    status: modified
  - key: page/7134
    page: page/7134
    type: page
    id: 7134
    name: Travel Requests API
    app: ExpenseAgent
    status: modified
  - key: codeunit/6926
    page: codeunit/6926
    type: codeunit
    id: 6926
    name: Expense Activity Log Mgt.
    app: ExpenseAgent
    status: modified
  - key: table/7100
    page: table/7100
    type: table
    id: 7100
    name: Expense Activity Log Entry
    app: ExpenseAgent
    status: modified
  - key: tableextension/6908
    page: tableextension/6908
    type: tableextension
    id: 6908
    name: Expense Spend Request
    app: ExpenseAgent
    status: modified
  - key: codeunit/6987
    page: codeunit/6987
    type: codeunit
    id: 6987
    name: Expense Report-Post
    app: ExpenseAgent
    status: modified
  - key: table/6906
    page: table/6906
    type: table
    id: 6906
    name: Expense Report Header
    app: ExpenseAgent
    status: modified
  - key: table/6907
    page: table/6907
    type: table
    id: 6907
    name: Expense Report Line
    app: ExpenseAgent
    status: modified
  - key: permissionset/6953
    page: permissionset/6953
    type: permissionset
    id: 6953
    name: Expense Agent - Data
    app: ExpenseAgent
    status: modified
  - key: permissionset/6952
    page: permissionset/6952
    type: permissionset
    id: 6952
    name: Expense Agent - Objects
    app: ExpenseAgent
    status: modified
  - key: codeunit/6908
    page: codeunit/6908
    type: codeunit
    id: 6908
    name: Expense Event Subscriber
    app: ExpenseAgent
    status: modified
  - key: codeunit/7133
    page: codeunit/7133
    type: codeunit
    id: 7133
    name: Travel Request Approval
    app: ExpenseAgent
    status: modified
  - key: page/7129
    page: page/7129
    type: page
    id: 7129
    name: Travel Request Card
    app: ExpenseAgent
    status: modified
  - key: table/6938
    page: table/6938
    type: table
    id: 6938
    name: Traveler
    app: ExpenseAgent
    status: modified
objects_unjoined: []
obsoletions:
  - object: Travel Request Card
    member: International Travel
    replacement: Expense Location
  - object: Travel Request Card
    member: Origin Country/Region Code
    replacement: Expense Location
  - object: Travel Request Card
    member: Dest. Country/Region Code
    replacement: Expense Location
  - object: Travel Requests API
    member: internationalTravel
    replacement: null
  - object: Travel Requests API
    member: originCountryRegionCode
    replacement: null
  - object: Travel Requests API
    member: destCountryRegionCode
    replacement: null
backports: []
fixes_issues: []
work_items:
  - 626966
systems:
  - development
quote: null
joined_against:
  major: "30"
  commit: ecbc028c25dbe83b61313bc566e6c1d41184bb1c
---

# #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.

[Pull request](https://github.com/microsoft/BCApps/pull/12074) · 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"](../../objects/page/7122.md), ExpenseAgent: modified
- [Page 7099 "Spend Requests API"](../../objects/page/7099.md), ExpenseAgent: modified
- [Page 7134 "Travel Requests API"](../../objects/page/7134.md), ExpenseAgent: modified
- [Codeunit 6926 "Expense Activity Log Mgt."](../../objects/codeunit/6926.md), ExpenseAgent: modified
- [Table 7100 "Expense Activity Log Entry"](../../objects/table/7100.md), ExpenseAgent: modified
- [Table extension 6908 "Expense Spend Request"](../../objects/tableextension/6908.md), ExpenseAgent: modified
- [Codeunit 6987 "Expense Report-Post"](../../objects/codeunit/6987.md), ExpenseAgent: modified
- [Table 6906 "Expense Report Header"](../../objects/table/6906.md), ExpenseAgent: modified
- [Table 6907 "Expense Report Line"](../../objects/table/6907.md), ExpenseAgent: modified
- [Permission set 6953 "Expense Agent - Data"](../../objects/permissionset/6953.md), ExpenseAgent: modified
- [Permission set 6952 "Expense Agent - Objects"](../../objects/permissionset/6952.md), ExpenseAgent: modified
- [Codeunit 6908 "Expense Event Subscriber"](../../objects/codeunit/6908.md), ExpenseAgent: modified
- [Codeunit 7133 "Travel Request Approval"](../../objects/codeunit/7133.md), ExpenseAgent: modified
- [Page 7129 "Travel Request Card"](../../objects/page/7129.md), ExpenseAgent: modified
- [Table 6938 "Traveler"](../../objects/table/6938.md), 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).
