---
id: object/table/4325
type: object
title: Table 4325 "SOA Setup"
summary: Table 4325 "SOA Setup" in SalesOrderAgent (Microsoft.Agent.SalesOrderAgent). 35 fields, 6 public procedures. Introduced in BC29, still in BC30.
tier: official
language: en
tags:
  - table
  - salesorderagent
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: cdc341f723c1c6e22be1635a231bbd6ddfdd29ed9c56164fd378bf3a0a96d9f9
evidence:
  - kind: code
    url: https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Apps/W1/SalesOrderAgent/app/src/Setup/SOASetup.Table.al
    title: src/Apps/W1/SalesOrderAgent/app/src/Setup/SOASetup.Table.al (releases/29.x)
    date: null
    commit: ea08af5ef2d6a9b5c5af4a029288abbe2c883220
    t: null
    quote: null
links:
  learn:
    - https://learn.microsoft.com/dynamics365/business-central/expense-management/expense-agent
    - https://learn.microsoft.com/dynamics365/business-central/payables-agent
    - https://learn.microsoft.com/dynamics365/business-central/sales-order-agent-item-availability
    - https://learn.microsoft.com/dynamics365/business-central/sales-order-agent-process
    - https://learn.microsoft.com/dynamics365/business-central/sales-order-agent-setup
    - https://learn.microsoft.com/dynamics365/business-central/sales-order-agent
    - https://learn.microsoft.com/dynamics365/business-central/supervise-agent-tasks
  objects: []
  features: []
  topics:
    - topic/business-central/business-functionality/expense-management-preview/understand-expense-agent
    - topic/business-central/copilot-and-agent-capabilities/expense-agent-preview/expense-agent-overview
    - topic/business-central/copilot-and-agent-capabilities/payables-agent
    - topic/business-central/copilot-and-agent-capabilities/sales-order-agent
  localizations: []
  videos: []
  posts: []
  guidelines: []
  changes:
    - change/bcapps/10748
    - change/bcapps/10036
object_type: table
object_id: 4325
name: SOA Setup
namespace: Microsoft.Agent.SalesOrderAgent
app: SalesOrderAgent
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: 35
  procedures: 7
  events: 0
  subscribers: 0
relations:
  out: 0
  referenced_by: 0
  pages: 1
  extended_by: 0
  event_subscribers: 0
  calls: 0
  called_by: 0
  implements: 0
---

# Table 4325 "SOA Setup"

> Table 4325 "SOA Setup" in SalesOrderAgent (Microsoft.Agent.SalesOrderAgent). 35 fields, 6 public procedures. Introduced in BC29, still in BC30.

SalesOrderAgent · Microsoft.Agent.SalesOrderAgent · BC29-30 · [source at ea08af5e](https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Apps/W1/SalesOrderAgent/app/src/Setup/SOASetup.Table.al) · facts from BC29

Learn documents this table through its pages: [Page 4400 "SOA Setup"](../page/4400.md) (7 Learn pages).

## Properties

| Property | Value |
|---|---|
| Access | Internal |
| Extensible | false |
| DataClassification | CustomerContent |

## Fields

Explanation: the field's ToolTip in the code; without one, the ToolTip of a page control bound to the field (marked via the page); without that, its Caption (marked caption) when that differs from the name.

| No. | Name | Type | Explanation | Notes |
|---|---|---|---|---|
| 1 | ID | Integer | — | AutoIncrement; DataClassification SystemMetadata |
| 2 | Agent User Security ID | Guid | — | obsolete Pending 28.0; #if not CLEANSCHEMA28; DataClassification SystemMetadata |
| 3 | Email Account ID | Guid | — | #if not CLEANSCHEMA28; DataClassification SystemMetadata |
| 4 | Email Connector | Enum "Email Connector" | — | #if not CLEANSCHEMA28; enum Email Connector; DataClassification SystemMetadata |
| 5 | Incoming Monitoring | Boolean | — | #if not CLEANSCHEMA28; DataClassification SystemMetadata |
| 6 | Email Monitoring | Boolean | Specifies if the agent should monitor incoming emails and process them. <small>via [Page 4400 "SOA Setup"](../page/4400.md)</small> | #if not CLEANSCHEMA28; DataClassification SystemMetadata |
| 7 | Exists | Boolean | — | #if not CLEANSCHEMA28; FlowField: exist(Agent where("User Security ID" = field("User Security ID"))) |
| 8 | State | Option | — | #if not CLEANSCHEMA28; FlowField: lookup(Agent.State where("User Security ID" = field("User Security ID"))); OptionCaption: Enabled,Disabled |
| 9 | Agent Scheduled Task ID | Guid | — | #if not CLEANSCHEMA28; DataClassification SystemMetadata |
| 10 | Recovery Scheduled Task ID | Guid | — | #if not CLEANSCHEMA28; DataClassification SystemMetadata |
| 11 | Quote Review | Boolean | Specifies if the agent requests review when a quote is created and updated. <small>via [Page 4400 "SOA Setup"](../page/4400.md)</small> | #if not CLEANSCHEMA28; DataClassification SystemMetadata |
| 12 | Create Order from Quote | Boolean | Specifies whether the agent automatically converts sales quotes into sales orders. When Send quotes for confirmation is on, conversion happens after the customer confirms the quote by email. When Send quotes for confirmation is off, the agent converts the quote immediately without sending it to the ... <small>via [Page 4400 "SOA Setup"](../page/4400.md)</small> | #if not CLEANSCHEMA28; DataClassification SystemMetadata |
| 13 | Order Review | Boolean | Specifies if the agent requests review when an order is created and updated. <small>via [Page 4400 "SOA Setup"](../page/4400.md)</small> | #if not CLEANSCHEMA28; DataClassification SystemMetadata |
| 14 | Sales Doc. Configuration | Boolean | Sales Document Configuration <small>caption</small> | #if not CLEANSCHEMA28; DataClassification SystemMetadata |
| 15 | Search Only Available Items | Boolean | Specifies if the agent takes item availability into account when searching for matches to the requested items. <small>via [Page 4400 "SOA Setup"](../page/4400.md)</small> | #if not CLEANSCHEMA28; DataClassification SystemMetadata |
| 16 | Activated At | DateTime | Specifies the date and time the agent was activated or deactivated. | #if not CLEANSCHEMA28; DataClassification SystemMetadata |
| 17 | Earliest Sync At | DateTime | Specifies the earliest date and time that the agent will process emails. | #if not CLEANSCHEMA28; DataClassification SystemMetadata |
| 18 | Last Sync At | DateTime | Specifies the date and time the agent last processed emails. | #if not CLEANSCHEMA28; DataClassification SystemMetadata |
| 19 | Email Address | Text[250] | Specifies the email address of the agent. | #if not CLEANSCHEMA28 |
| 20 | Known Sender In. Msg. Review | Enum "SOA Input Message Review" | Specifies the type of input message review for messages from registered senders. | #if not CLEANSCHEMA28; enum [Enum 4593 "SOA Input Message Review"](../enum/4593.md); DataClassification SystemMetadata |
| 21 | Unknown Sender In. Msg. Review | Enum "SOA Input Message Review" | Specifies the type of input message review for messages from unregistered senders. | #if not CLEANSCHEMA28; enum [Enum 4593 "SOA Input Message Review"](../enum/4593.md); DataClassification SystemMetadata |
| 22 | Incl. Capable to Promise | Boolean | Specifies whether the agent includes in the search results items that are currently unavailable but can be ordered for a later shipment date. <small>via [Page 4400 "SOA Setup"](../page/4400.md)</small> | #if not CLEANSCHEMA28; DataClassification SystemMetadata |
| 23 | Instructions Last Sync At | DateTime | Specifies the date and time the agent last synchronized instructions. | #if not CLEANSCHEMA28; DataClassification SystemMetadata |
| 24 | Message Limit | Integer | Specifies the maximum number of messages the agent can process in a single day. | #if not CLEANSCHEMA28; DataClassification SystemMetadata |
| 25 | Analyze Attachments | Boolean | Specifies whether the agent analyzes attachments when determining intent. | #if not CLEANSCHEMA28; DataClassification SystemMetadata |
| 26 | Send Sales Quote | Boolean | Specifies if the agent sends sales quotes for confirmation. | #if not CLEANSCHEMA28; DataClassification SystemMetadata |
| 27 | Email Template | Blob | Specifies the email signature for the sales order agent. | #if not CLEANSCHEMA28 |
| 28 | Configure Email Template | Boolean | Specifies whether the email signature is configured for the sales order agent. | #if not CLEANSCHEMA28 |
| 29 | Email Folder | Text[2048] | Specifies the email folder that the agent monitors. | #if not CLEANSCHEMA28; DataClassification SystemMetadata |
| 30 | Email Folder Id | Text[2048] | Specifies the unique identifier of the email folder that the agent monitors. | #if not CLEANSCHEMA28 |
| 31 | Mark Email As Read | Boolean | Specifies whether the agent marks emails as read after processing them. | #if not CLEANSCHEMA28; DataClassification SystemMetadata |
| 33 | Owner User Security ID | Guid | Specifies the BC user who owns this agent instance. | #if not CLEANSCHEMA28; DataClassification EndUserPseudonymousIdentifiers |
| 34 | Agent Name | Text[50] | Specifies the unique display name of the sales order agent instance. | #if not CLEANSCHEMA28; DataClassification SystemMetadata |
| 35 | Agent Initials | Text[4] | Specifies the initials for the sales order agent instance. | #if not CLEANSCHEMA28; DataClassification SystemMetadata |
| 50 | User Security ID | Guid | — | #if not CLEANSCHEMA28; DataClassification SystemMetadata |

## Keys

- Key1: ID (clustered)
- Key2: Agent User Security ID
- Key3: User Security ID

## Procedures

- `GetBasedOnAgentUserSecurityID(var AgentUserSecurityID: Guid; ErrorIfNotFound: Boolean): Boolean` (internal)
- `GetForCurrentAgentSession(): Boolean` (internal): Gets the setup record of the agent that owns the current session. Only meaningful inside an agent session, where the session identity is the agent identity. Callers must not fall back to an unfiltered read, because that picks an arbitrary agent once more than one agent exists.
- `IsAuthorizedUserSecurityID(UserSecurityID: Guid): Boolean` (internal): Determines whether the specified identity is the configured owner or agent, including the fallback for setups created before an explicit owner was stored.
- `GetDefaultMessageLimit(): Integer` (internal)
- `SetEmailSignature(EmailSignatureAsTxt: Text)` (internal)
- `GetEmailSignatureAsTxt(): Text` (internal)

Plus 1 local procedures.

## Pages and codeunits on this table

- [Page 4400 "SOA Setup"](../page/4400.md) (source table)
- [Codeunit 4397 "SOA Test Setup"](../codeunit/4397.md) (codeunit runs on it)
- [Codeunit 4581 "SOA Send Replies"](../codeunit/4581.md) (codeunit runs on it)
- [Codeunit 4582 "SOA Retrieve Emails"](../codeunit/4582.md) (codeunit runs on it)
- [Codeunit 4584 "SOA Recovery"](../codeunit/4584.md) (codeunit runs on it)
- [Codeunit 4585 "SOA Error Handler"](../codeunit/4585.md) (codeunit runs on it)
- [Codeunit 4586 "SOA Dispatcher"](../codeunit/4586.md) (codeunit runs on it)

## Recent changes

- 2026-08-28 [#10748 [SOA] Resolve the current agent's setup instead of an arbitrary one](../../changes/bcapps/10748.md) (main, BC30, fix)
- 2026-08-13 [#10036 [SOA]: Bugbash for releases 28.x - Contact unable to find due to Qasim map to Megan, different names](../../changes/bcapps/10036.md) (main, BC30, fix)

## Across versions

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

## Deprecations

- field Activated At: guarded (#if not CLEANSCHEMA28)
- field Agent Initials: guarded (#if not CLEANSCHEMA28)
- field Agent Name: guarded (#if not CLEANSCHEMA28)
- field Agent Scheduled Task ID: guarded (#if not CLEANSCHEMA28)
- field Analyze Attachments: guarded (#if not CLEANSCHEMA28)
- field Configure Email Template: guarded (#if not CLEANSCHEMA28)
- field Create Order from Quote: guarded (#if not CLEANSCHEMA28)
- field Earliest Sync At: guarded (#if not CLEANSCHEMA28)
- field Email Account ID: guarded (#if not CLEANSCHEMA28)
- field Email Address: guarded (#if not CLEANSCHEMA28)
- field Email Connector: guarded (#if not CLEANSCHEMA28)
- field Email Folder: guarded (#if not CLEANSCHEMA28)
- field Email Folder Id: guarded (#if not CLEANSCHEMA28)
- field Email Monitoring: guarded (#if not CLEANSCHEMA28)
- field Email Template: guarded (#if not CLEANSCHEMA28)
- field Exists: guarded (#if not CLEANSCHEMA28)
- field Incl. Capable to Promise: guarded (#if not CLEANSCHEMA28)
- field Incoming Monitoring: guarded (#if not CLEANSCHEMA28)
- field Instructions Last Sync At: guarded (#if not CLEANSCHEMA28)
- field Known Sender In. Msg. Review: guarded (#if not CLEANSCHEMA28)
- field Last Sync At: guarded (#if not CLEANSCHEMA28)
- field Mark Email As Read: guarded (#if not CLEANSCHEMA28)
- field Message Limit: guarded (#if not CLEANSCHEMA28)
- field Order Review: guarded (#if not CLEANSCHEMA28)
- field Owner User Security ID: guarded (#if not CLEANSCHEMA28)
- field Quote Review: guarded (#if not CLEANSCHEMA28)
- field Recovery Scheduled Task ID: guarded (#if not CLEANSCHEMA28)
- field Sales Doc. Configuration: guarded (#if not CLEANSCHEMA28)
- field Search Only Available Items: guarded (#if not CLEANSCHEMA28)
- field Send Sales Quote: guarded (#if not CLEANSCHEMA28)
- field State: guarded (#if not CLEANSCHEMA28)
- field Unknown Sender In. Msg. Review: guarded (#if not CLEANSCHEMA28)
- field User Security ID: guarded (#if not CLEANSCHEMA28)
- field Agent User Security ID: Pending 28.0 (#if not CLEANSCHEMA28), "Replaced by "User Security ID" field."

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). 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: "table", object_name: "SOA Setup")`, then `bcatlas_get_procedure_body` or `bcatlas_get_neighbors` on the returned id.
