---
id: object/codeunit/6970
type: object
title: Codeunit 6970 "Create Expense Agent Setup"
summary: Codeunit 6970 "Create Expense Agent Setup" in ExpenseAgent (Microsoft.ExpenseAgent). 5 public procedures. Introduced in BC29, still in BC30.
tier: official
language: en
tags:
  - codeunit
  - expenseagent
versions:
  introduced: "29"
  last_changed: null
  deprecated: null
review:
  state: derived
  by: null
  at: null
  flags: []
generated:
  at: "2026-10-11T00:31:51.816Z"
  pipeline: 0.2.0
  prompts: {}
  input_hash: d526e77c6447f60e8b95ba5ae8fc8d65b68bcdbb8d266bc28f797c412a9d516e
evidence:
  - kind: code
    url: https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Apps/W1/ExpenseAgent/app/src/Setup/Codeunits/CreateExpenseAgentSetup.Codeunit.al
    title: src/Apps/W1/ExpenseAgent/app/src/Setup/Codeunits/CreateExpenseAgentSetup.Codeunit.al (releases/29.x)
    date: null
    commit: ea08af5ef2d6a9b5c5af4a029288abbe2c883220
    t: null
    quote: null
links:
  learn: []
  objects: []
  features: []
  topics: []
  localizations: []
  videos: []
  posts: []
  guidelines: []
  changes:
    - change/bcapps/11889
    - change/bcapps/10564
    - change/bcapps/10101
    - change/bcapps/9859
object_type: codeunit
object_id: 6970
name: Create Expense Agent Setup
namespace: Microsoft.ExpenseAgent
app: ExpenseAgent
extends: null
first_version: "29"
last_version: "30"
present_in:
  - "29"
  - "30"
changed_in: []
source_major: "29"
obsolete: null
countries: []
ms_search_form_ids: []
counts:
  fields: 0
  procedures: 10
  events: 0
  subscribers: 0
relations:
  out: 0
  referenced_by: 0
  pages: 0
  extended_by: 0
  event_subscribers: 0
  calls: 1
  called_by: 3
  implements: 0
---

# Codeunit 6970 "Create Expense Agent Setup"

> Codeunit 6970 "Create Expense Agent Setup" in ExpenseAgent (Microsoft.ExpenseAgent). 5 public procedures. Introduced in BC29, still in BC30.

ExpenseAgent · Microsoft.ExpenseAgent · BC29-30 · [source at ea08af5e](https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Apps/W1/ExpenseAgent/app/src/Setup/Codeunits/CreateExpenseAgentSetup.Codeunit.al) · facts from BC29

## Properties

| Property | Value |
|---|---|
| Access | Internal |
| Permissions | tabledata "Expense Agent Setup" = rim, tabledata "Source Code Setup" = rim |

## Procedures

- `CreateDefaultPaymentMethods()` (internal)
- `BuildPaymentMethodSeeds(var TempExpensePaymentMethod: Record "Expense Payment Method" temporary)` (internal): Returns the catalogue of default expense payment methods without writing anything to the database.
- `LoadPaymentMethodsPreview(var TempExpensePaymentMethod: Record "Expense Payment Method" temporary)` (internal): Builds the preview record set for expense payment methods: existing rows plus seeds that do not yet exist. A seed is skipped if an existing payment method already owns the same Reimbursement Type (the table enforces uniqueness of Reimbursement Type via OnValidate, so apply will skip it too). No data...
- `GetMileageUOMStandardCodeFilter(): Text` (internal)
- `GetDefaultMileageUOM(): Code[10]` (internal)

Plus 5 local procedures.

## Triggers

OnRun

## Calls

From the extracted call graph of BC29 (graphify-al on the snapshot checkout): calls whose target is known from a declared type or an `Object::"Name"` argument. Interface dispatch and calls through events are not counted, so the list is not complete.

- [Codeunit 6972 "Create Expense No. Series"](../codeunit/6972.md) (5 calls: `CreateSetupTable → ExpenseNoSeries`, `CreateSetupTable → ExpenseReportNoSeries`, `CreateSetupTable → ExpenseUserSeries`, …)

## Called by

- [Table 6930 "Expense Agent Setup"](../table/6930.md) (2 calls: `CreatePaymentMethodsDefaults → CreateDefaultPaymentMethods`, `CreatePostingGroupsDefaults → (object)`)
- [Page 6971 "Exp. Payment Methods Preview"](../page/6971.md) (1 call: `ReloadPreview → LoadPaymentMethodsPreview`)
- [Page 6991 "Expense Agent Setup Wizard"](../page/6991.md) (1 call: `OnAfterGetCurrRecord → GetDefaultMileageUOM`)

## Recent changes

- 2026-10-01 [#11889 [Master] - Bug 651129: Expense Agent - Distance UOM in Configuration](../../changes/bcapps/11889.md) (main, BC30, feature)
- 2026-08-31 [#10564 Bug 641415: [Expense Agent] Incorrect Payment Method Assignment for Card-Based Expenses](../../changes/bcapps/10564.md) (main, BC30, fix)
- 2026-08-16 [#10101 [Master] [Expense Agent] Bug 641393 [AT] Recognize International Standard Code 1A as mileage UOM](../../changes/bcapps/10101.md) (main, BC30, fix)
- 2026-08-04 [#9859 [Master] - Move Expense Agent (Preview) app into BCApps](../../changes/bcapps/9859.md) (main, BC30, feature, added)

## Across versions

- Present in: BC29-30
- Changed (declaration) in: none

Source: AL metadata extracted from the code (names, ids, signatures, properties); no code bodies (D10).

## Ask your agent

Procedure bodies are not stored here (D10). The call sections above are our own, per object, from the BC29 call graph. For a procedure body or the calls of one procedure, ask bc-code-atlas (external, by Stefan Maron, MIT; default corpus w1-28), which the bc-observatory plugin connects: `bcatlas_resolve_node(object_type: "codeunit", object_name: "Create Expense Agent Setup")`, then `bcatlas_get_procedure_body` or `bcatlas_get_neighbors` on the returned id.
