---
id: object/codeunit/4316
type: object
title: Codeunit 4316 "Agent Task Message Builder"
summary: Codeunit 4316 "Agent Task Message Builder" in System Application (System.Agents). 21 public procedures. Introduced in BC26, still in BC30, changed in BC27-29.
tier: official
language: en
tags:
  - codeunit
  - system application
versions:
  introduced: "26"
  last_changed: "29"
  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: 03e0cdeca0a40a41bae0d81cd16701ed557592e9ae600ae4fc129443c98f075a
evidence:
  - kind: code
    url: https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/System%20Application/App/Agent/Interaction/AgentTaskMessageBuilder.Codeunit.al
    title: src/System Application/App/Agent/Interaction/AgentTaskMessageBuilder.Codeunit.al (releases/29.x)
    date: null
    commit: ea08af5ef2d6a9b5c5af4a029288abbe2c883220
    t: null
    quote: null
links:
  learn: []
  objects: []
  features: []
  topics: []
  localizations: []
  videos: []
  posts: []
  guidelines: []
object_type: codeunit
object_id: 4316
name: Agent Task Message Builder
namespace: System.Agents
app: System Application
extends: null
first_version: "26"
last_version: "30"
present_in:
  - "26"
  - "27"
  - "28"
  - "29"
  - "30"
changed_in:
  - "27"
  - "28"
  - "29"
source_major: "29"
obsolete: null
countries: []
ms_search_form_ids: []
counts:
  fields: 0
  procedures: 21
  events: 0
  subscribers: 0
relations:
  out: 0
  referenced_by: 0
  pages: 0
  extended_by: 0
  event_subscribers: 0
  calls: 1
  called_by: 6
  implements: 0
---

# Codeunit 4316 "Agent Task Message Builder"

> Codeunit 4316 "Agent Task Message Builder" in System Application (System.Agents). 21 public procedures. Introduced in BC26, still in BC30, changed in BC27-29.

System Application · System.Agents · BC26-30 · [source at ea08af5e](https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/System%20Application/App/Agent/Interaction/AgentTaskMessageBuilder.Codeunit.al) · facts from BC29

## Procedures

- `Initialize(MessageText: Text): codeunit "Agent Task Message Builder"`: Initialize the agent task message builder with the mandatory parameter. From value will be set to the current user.
- `Initialize(From: Text[250]; MessageText: Text): codeunit "Agent Task Message Builder"`: Initialize the agent task message builder with the mandatory parameters.
- `SetRequiresReview(RequiresReview: Boolean): codeunit "Agent Task Message Builder"`: Set the external ID of the task.
- `SetIgnoreAttachment(IgnoreAttachment: Boolean): codeunit "Agent Task Message Builder"`: Set whether to ignore attachments for the message. When set to true, attachments will be marked as ignored and will not be processed by the agent. The default value is false.
- `SetSkipMessageSanitization(SkipSanitizeMessage: Boolean): codeunit "Agent Task Message Builder"`: Set whether to sanitize the message text. When set to false, message sanitization will be bypassed. The default value is true.
- `SetMessageExternalID(ExternalId: Text[2048]): codeunit "Agent Task Message Builder"`: Set the external ID of the task.
- `SetAgentTask(ParentAgentTask: Record "Agent Task"): codeunit "Agent Task Message Builder"`: Set the agent task for which to create the message.
- `SetAgentTask(ParentAgentTaskID: BigInteger): codeunit "Agent Task Message Builder"`: Set the agent task for which to create the message.
- `Create(): Record "Agent Task Message"`: Creates the task message. Task will be marked as ready and be picked up for processing after message is created.
- `Create(SetTaskStatusToReady: Boolean): Record "Agent Task Message"`: Creates the task message.
- `GetAgentTaskMessage(): Record "Agent Task Message"`: Get the agent task message record.
- `AddAttachment(FileName: Text[250]; FileMIMEType: Text[100]; InStream: InStream): codeunit "Agent Task Message Builder"`: Attach a file to the task message. The file will be attached when the message is created. It is possible to attach multiple files to the message.
- `AddAttachment(FileName: Text[250]; FileMIMEType: Text[100]; InStream: InStream; Ignored: Boolean): codeunit "Agent Task Message Builder"`: Attach a file to the task message. The file will be attached when the message is created. It is possible to attach multiple files to the message.
- `AddAttachment(FileName: Text[250]; FileMIMEType: Text[100]; InStream: InStream; Ignored: Boolean; IgnoredReason: Text[250]): codeunit "Agent Task Message Builder"`: Attach a file to the task message. The file will be attached when the message is created. It is possible to attach multiple files to the message.
- `AddAttachment(var AgentTaskFile: Record "Agent Task File"): codeunit "Agent Task Message Builder"`
- `AddAttachment(File: FileUpload): codeunit "Agent Task Message Builder"`: Attach a file received from a page-level fileuploadaction trigger to the task message. Intended to be called once per element of a List of [FileUpload] so that callers can support multi-file selection from the browser file picker. The MIME type is derived from the file name extension. The file is at...
- `AddAttachment(File: FileUpload; Ignored: Boolean): codeunit "Agent Task Message Builder"`: Attach a file received from a page-level fileuploadaction trigger to the task message. Intended to be called once per element of a List of [FileUpload] so that callers can support multi-file selection from the browser file picker. The MIME type is derived from the file name extension. The file is at...
- `AddAttachment(File: FileUpload; Ignored: Boolean; IgnoredReason: Text[250]): codeunit "Agent Task Message Builder"`: Attach a file received from a page-level fileuploadaction trigger to the task message. Intended to be called once per element of a List of [FileUpload] so that callers can support multi-file selection from the browser file picker. The MIME type is derived from the file name extension. The file is at...
- `UploadAttachment(): Boolean`: Uploads a file to the task message. The file will be attached when the message is created. It is possible to attach multiple files to the message.
- `GetLastAttachment(): Record "Agent Task File"`: Get the last attachment that was added to the task message.
- `GetAttachments(var TempAttachments: Record "Agent Task File" temporary): Boolean`: Get the last attachment that was added to the task message.

## 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 4311 "Agent Task Msg. Builder Impl."](../codeunit/4311.md) (12 calls: `AddAttachment → AddAttachment`, `Create → Create`, `GetAgentTaskMessage → GetAgentTaskMessage`, …)

## Called by

- [Codeunit 4361 "Agent Task Template"](../codeunit/4361.md) (9 calls: `CreateMessageFromTemplate → Create`, `CreateMessageFromTemplate → SetAgentTask`, `InitializeAgentMessageBuilder → AddAttachment`, …)
- [Page 4359 "Agent New Task Message"](../page/4359.md) (5 calls: `AddMessageToExistingTask → Create`, `AddMessageToExistingTask → SetAgentTask`, `CreateNewMessage → AddAttachment`, …)
- [Codeunit 4310 "Agent Task Builder Impl."](../codeunit/4310.md) (4 calls: `AddTaskMessage → Initialize`, `Create → Create`, `Create → SetAgentTask`, …)
- [Codeunit 4582 "SOA Retrieve Emails"](../codeunit/4582.md) (4 calls: `AddEmailAttachmentToTaskMessage → AddAttachment`, `AddEmailToExistingAgentTask → Create`, `AddEmailToExistingAgentTask → Initialize`, …)
- [Codeunit 4415 "SOA Create Task Impl"](../codeunit/4415.md) (2 calls: `AddAttachmentsToTaskMessage → AddAttachment`, `CreateTask → Initialize`)
- [Codeunit 3303 "Payables Agent"](../codeunit/3303.md) (1 call: `BuildAgentTask → Initialize`)

## Across versions

- Present in: BC26-30
- Changed (declaration) in: BC27-29

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: "Agent Task Message Builder")`, then `bcatlas_get_procedure_body` or `bcatlas_get_neighbors` on the returned id.
