Codeunit 4400 "SOA Setup"
SalesOrderAgent · Microsoft.Agent.SalesOrderAgent
Across versions
- BC23-28not present
- BC29-30present
Neighbourhood 38 connected objects and pages
SalesOrderAgent · Microsoft.Agent.SalesOrderAgent · BC29-30 · source at ea08af5e · facts from BC29
Properties
| Property | Value |
|---|---|
| Access | Internal |
| Permissions | tabledata “Email Inbox” = rd |
Procedures
CreateDefaultAgentNoEmail(): Used for testing OnPremGetInitials(): Text[4](internal)GetInitials(AgentUserSecurityID: Guid): Text[4](internal)GetAgentType(): Text(internal)GetAgentSummary(): Text(internal)AllowCreateNewSOAgent(): Boolean(internal)ActiveSOAgentCount(OwnerUserSecurityID: Guid): Integer(internal): Counts the Sales Order Agent instances owned by a user that still occupy a slot. Archived agents are excluded because they can never be reactivated.ActiveSOAgentSetupExists(): Boolean(internal): Tells whether the company has at least one Sales Order Agent that is not archived. Kept to two bounded queries because callers include paths that run for ordinary users.CountNonArchivedSetups(var SOASetup: Record "SOA Setup"): Integer(internal): Counts the records in an already filtered set of setup records whose agent is not archived.FindFirstNonArchivedSetup(var SOASetup: Record "SOA Setup"): Boolean(internal): Finds the first record in an already filtered set of setup records whose agent is not archived.IsAgentArchived(AgentUserSecurityID: Guid): Boolean(internal)IsAgentActive(AgentUserSecurityID: Guid): Boolean(internal): Tells whether the agent behind a setup record is currently live, meaning it exists, is enabled and is not archived. Sessions that cannot read the Agent table get true, so callers never act on a state they were unable to determine.MustTreatAgentAsArchived(AgentUserSecurityID: Guid): Boolean(internal): Archived state for callers that block an operation. Unlike IsAgentArchived this fails closed: an agent whose state cannot be read is treated as archived, so the guard cannot be bypassed by running without access to the Agent table.CheckAgentNotArchived(AgentUserSecurityID: Guid)(internal)MaxSOAInstances(): Integer(internal)GetDispatcherBaseDelaySeconds(): Integer(internal)GetDispatcherDelayIncrementSeconds(): Integer(internal)UpdateAgent(var AgentSetupBuffer: Record "Agent Setup Buffer"; var TempSOASetup: Record "SOA Setup" temporary; Schedule: Boolean)(internal)GetDefaultEmailSignatureAsTxt(): Text(internal)UpdateInstructions(var TempSOASetup: Record "SOA Setup" temporary)(internal)InstructionsSyncRequired(var SOASetup: Record "SOA Setup"): Boolean(internal)UpdateSOASetupInstructionsLastSync(var SOASetup: Record "SOA Setup")(internal)UpdateSOASetupActivationDT(var TempSOASetup: Record "SOA Setup" temporary)(internal)GetDefaultAgentAccessControl(AgentUserSecurityID: Guid; var TempAgentAccessControl: Record "Agent Access Control" temporary)(internal)GetDefaultProfile(var TempAllProfile: Record "All Profile" temporary)(internal)GetDefaultAccessControls(var TempAccessControlBuffer: Record "Access Control Buffer" temporary)(internal)GetSOASetup(var TempSOASetup: Record "SOA Setup" temporary; AgentUserSecurityID: Guid)(internal)CheckSOASetupStillValid(var SOASetup: Record "SOA Setup"): Boolean(internal)ValidateAgentIdentity(SOASetup: Record "SOA Setup")(internal)CheckMailboxUnique(SOASetup: Record "SOA Setup")(internal)GetEmailAccount(var SOASetup: Record "SOA Setup"; var TempEmailAccount: Record "Email Account" temporary)(internal)GetDefaultEmailAccount(var TempEmailAccount: Record "Email Account" temporary)(internal)GetAgentTaskUserInterventionSuggestions(AgentTaskUserInterventionRequestDetails: Record "Agent User Int Request Details"; var AgentTaskUserInterventionSuggestion: Record "Agent Task User Int Suggestion")(internal)GetAgentTaskPageContext(AgentTaskPageContextRequest: Record "Agent Task Page Context Req."; var AgentTaskPageContext: Record "Agent Task Page Context")(internal)GetCommunicationLanguageCodeAndFormat(AgentTaskId: BigInteger; var LanguageCode: Code[10]; var FormatRegion: Text[80])(internal): By priority: from the contact card, from the customer card, or from the user settings.GetSOAUserDisplayName(): Text[80](internal)GetSOAUserDisplayName(AgentName: Text[50]): Text[80](internal)GetSOAUsername(): Text[50](internal)ValidateEmailConnectionStatus(var TempSOASetup: Record "SOA Setup" temporary): Boolean(internal)ValidateEmailConnection(StateChanged: Boolean; var TempSOASetup: Record "SOA Setup" temporary; MailboxChanged: Boolean; IsFirstActivation: Boolean)(internal)GetInboxEmailCount(var SOASetup: Record "SOA Setup"): Integer(internal)SupportedAttachmentContentType(FileMIMEType: Text): BooleanIsPdfAttachmentContentType(FileMIMEType: Text): Boolean(internal)IsImageAttachmentContentType(FileMIMEType: Text): Boolean(internal)DocumentExceedsPageCountThreshold(DocInStream: Instream; var Exceeds: Boolean)(internal)PageCountThreshold(): Integer(internal)GetMaxNoOfAttachmentsPerEmail(): Integer(internal)GetFeatureName(): Text(internal)GetUpdatedQuoteInterventionSuggestionCode(): Code[20](internal)GetUpdatedOrderInterventionSuggestionCode(): Code[20](internal)
Plus 26 local procedures.
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 4305 “SOA Filters Impl.” (5 calls:
GetAgentTaskPageContext → GetSecurityFiltersForContacts,GetAgentTaskPageContext → GetSecurityFiltersForCustomers,GetCommunicationLanguageCodeAndFormat → GetExcludeAllFilter, …) - Codeunit 4397 “SOA Test Setup” (5 calls:
GetEmailsCount → (object),GetEmailsCount → GetEmailCount,GetEmailsCount → SetTestEmailCount, …) - Codeunit 4321 “Agent” (4 calls:
GetDefaultAgentAccessControl → GetUserAccess,GetDefaultProfile → PopulateDefaultProfile,LogTelemetry → GetUserSettings, …) - Codeunit 4324 “Agent Setup” (4 calls:
CreateAgent → SaveChanges,CreateDefaultAgentNoEmail → GetSetupRecord,CreateDefaultAgentNoEmail → SaveChanges, …) - Codeunit 4587 “SOA Impl” (3 calls:
CreateAgent → ScheduleSOAgent,UpdateAgent → RemoveScheduledTask,UpdateAgent → ScheduleSOAgent) - Codeunit 43 “Language” (2 calls:
GetAgentTaskPageContext → GetLanguageId,LogTelemetry → GetCultureName) - Codeunit 8894 “Email Account” (2 calls:
GetDefaultEmailAccount → GetAllAccounts,GetEmailAccount → GetAllAccounts) - Codeunit 9024 “Azure AD Graph User” (2 calls:
UpdateAgent → IsUserDelegatedAdmin,UpdateAgent → IsUserDelegatedHelpdesk) - Codeunit 3110 “PDF Document” (1 call:
DocumentExceedsPageCountThreshold → GetPdfPageCount) - Codeunit 4002 “SOA Prompt Builder” (1 call:
UpdateInstructions → PrepareInstructions) - Codeunit 4317 “Agent System Permissions” (1 call:
AllowCreateNewSOAgent → CurrentUserHasCanManageAllAgentsPermission) - Codeunit 4395 “Global Item Search” (1 call:
EnableItemSearch → EnableItemSearch) - Codeunit 4396 “SOA Email Setup” (1 call:
UpdateSyncDateTime → GetMaxNoOfEmails) - Codeunit 457 “Environment Information” (1 call:
ValidateEmailConnection → IsSandbox) - Codeunit 8703 “Feature Telemetry” (1 call:
LogTelemetry → LogUptake)
Called by
- Codeunit 4582 “SOA Retrieve Emails” (16 calls:
AddEmailAttachmentToTaskMessage → DocumentExceedsPageCountThreshold,AddEmailAttachmentToTaskMessage → GetFeatureName,AddEmailAttachmentToTaskMessage → GetMaxNoOfAttachmentsPerEmail, …) - Page 4400 “SOA Setup” (14 calls:
ApplySetup → CheckMailboxUnique,ApplySetup → GetInboxEmailCount,ApplySetup → UpdateAgent, …) - Codeunit 4399 “SOA Annotation” (7 calls:
AddAgentTaskFailureAnnotation → GetFeatureName,AddAgentTaskSendRepliesFailureAnnotation → GetFeatureName,AddOverProcessLimitAnnotation → GetFeatureName, …) - Codeunit 4587 “SOA Impl” (7 calls:
GetInstanceOffset → CountNonArchivedSetups,RemoveScheduledTask → GetFeatureName,RemoveScheduledTasksIfAgentNotActive → GetFeatureName, …) - Codeunit 4401 “SOA Metadata Provider” (6 calls:
CreateManualAgentTask → CheckAgentNotArchived,GetDefaultAccessControls → GetDefaultAccessControls,GetDefaultInitials → GetInitials, …) - Codeunit 4589 “SOA Upgrade” (5 calls:
AlwaysUpdateAgentInstructionsOnUpgrade → MustTreatAgentAsArchived,TryUpdateAgentInstructions → UpdateInstructions,UpgradeAgentIdentity → GetInitials, …) - Codeunit 4598 “SOA Instructions” (4 calls:
AddCultureToBroaderItemSearchSystemPrompt → GetCommunicationLanguageCodeAndFormat,AddCultureToBroaderItemSearchSystemPrompt → GetFeatureName,GetMailTemplateCheckSystemPrompt → GetFeatureName, …) - Codeunit 4305 “SOA Filters Impl.” (3 calls:
GetContactsInvolvedInTask → GetFeatureName,GetSecurityFiltersForCustomers → GetFeatureName,LogContactLinkChoice → GetFeatureName) - Codeunit 4586 “SOA Dispatcher” (3 calls:
CanRunTask → GetFeatureName,RunSOAgent → CheckSOASetupStillValid,RunSOAgent → GetFeatureName) - Codeunit 4304 “SOA Session Events” (2 calls:
BindUserEvents → GetFeatureName,SetupFilteringEvents → GetFeatureName) - Codeunit 4309 “SOA Agent Task Execution” (2 calls:
GetAgentTaskPageContext → GetAgentTaskPageContext,GetAgentTaskUserInterventionSuggestions → GetAgentTaskUserInterventionSuggestions) - Codeunit 4402 “SOA Output Message Setup” (2 calls:
GetSignatureText → GetDefaultEmailSignatureAsTxt,LogTelemetryError → GetFeatureName) - Codeunit 4417 “SOA Item Selector” (2 calls:
LogItemSelectorException → GetFeatureName,LogItemSelectorResponseFailure → GetFeatureName) - Codeunit 4581 “SOA Send Replies” (2 calls:
GiveUpOnDelivery → GetFeatureName,SendEmailReply → GetFeatureName) - Codeunit 4002 “SOA Prompt Builder” (1 call:
BuildSignature → GetDefaultEmailSignatureAsTxt) - Codeunit 4306 “SOA Session Filter” (1 call:
SetFilterOnSalesHeader → GetFeatureName) - Codeunit 4323 “SOA Awareness Notifications” (1 call:
IsBindingNeeded → ActiveSOAgentSetupExists) - Codeunit 4418 “SOA Reply Retry Mgt.” (1 call:
RetrySending → GetFeatureName) - Codeunit 4419 “SOA Send Reply” (1 call:
AddMessageAttachments → GetFeatureName) - Codeunit 4421 “SOA Attachment MLLM” (1 call:
IsImageAttachment → IsImageAttachmentContentType) - Codeunit 4584 “SOA Recovery” (1 call:
RunSOARecovery → GetFeatureName) - Codeunit 4585 “SOA Error Handler” (1 call:
RunSOAErrorHandler → GetFeatureName) - Codeunit 4590 “SOA Billing” (1 call:
LogSOATrackingRecord → GetFeatureName) - Codeunit 4591 “SOA Item Search” (1 call:
LogTelemetryForFindItems → GetFeatureName) - Codeunit 4600 “SOA Document Events” (1 call:
AddAttachmentsToDocument → GetFeatureName) - Page 4402 “SOA KPI” (1 call:
GetCurrentUserAgentSecurityID → FindFirstNonArchivedSetup)
Recent changes
- 2026-10-06 #10772 [Bug Fix] #304: [SOA] Re-resolve new sender to created contact after ‘I have added the contact’ (main, BC30, fix)
- 2026-08-27 #10665 [SOA] Skip content extraction for image attachments (main, BC30, fix)
- 2026-08-19 #10308 Uptake agent archiving in Sales Order Agent (AB#644549) (main, BC30, feature)
- 2026-07-22 #9606 [SOA] Disable available-items-only search by default (main, BC30, feature)
- 2026-07-22 #9365 [SOA] Prevent translated username token and remove dead GetAgent helpers (main, BC30, fix)
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: "SOA Setup"), then bcatlas_get_procedure_body or bcatlas_get_neighbors on the returned id.