---
id: object/codeunit/1521
type: object
title: Codeunit 1521 "Workflow Response Handling"
summary: Codeunit 1521 "Workflow Response Handling" in Base Application (System.Automation). 43 public procedures, 18 events. Present since at least BC23, still in BC30, changed in BC24.
tier: official
language: en
tags:
  - codeunit
  - base application
versions:
  introduced: null
  last_changed: "24"
  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: fffc9d4ea328422d5009060063abcec5809d5bd7c2ca6d6a2ac13f779f33a8bc
evidence:
  - kind: code
    url: https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Layers/W1/BaseApp/System/Workflow/WorkflowResponseHandling.Codeunit.al
    title: src/Layers/W1/BaseApp/System/Workflow/WorkflowResponseHandling.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: 1521
name: Workflow Response Handling
namespace: System.Automation
app: Base Application
extends: null
first_version: "23"
last_version: "30"
present_in:
  - "23"
  - "24"
  - "25"
  - "26"
  - "27"
  - "28"
  - "29"
  - "30"
changed_in:
  - "24"
source_major: "29"
obsolete: null
countries: []
ms_search_form_ids: []
counts:
  fields: 0
  procedures: 97
  events: 18
  subscribers: 0
relations:
  out: 0
  referenced_by: 0
  pages: 0
  extended_by: 0
  event_subscribers: 14
  calls: 14
  called_by: 17
  implements: 0
---

# Codeunit 1521 "Workflow Response Handling"

> Codeunit 1521 "Workflow Response Handling" in Base Application (System.Automation). 43 public procedures, 18 events. Present since at least BC23, still in BC30, changed in BC24.

Base Application · System.Automation · BC23-30 · [source at ea08af5e](https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Layers/W1/BaseApp/System/Workflow/WorkflowResponseHandling.Codeunit.al) · facts from BC29

## Properties

| Property | Value |
|---|---|
| Permissions | TableData "Sales Header" = rm, TableData "Purchase Header" = rm, TableData "Notification Entry" = rimd, tabledata "Workflow Response" = r |

## Events published

- `OnAddWorkflowResponsesToLibrary()` (integration)
  - subscribers: [Codeunit 1542 "Workflow Webhook Responses"](../codeunit/1542.md) AddWorkflowWebhookResponsesToLibrary, [Codeunit 20423 "Qlty. Workflow Setup"](../codeunit/20423.md) HandleOnAddWorkflowResponsesToLibrary, [Codeunit 6139 "E-Document Workflow Setup"](../codeunit/6139.md) AddEDocWorkflowResponsesToLibrary
- `OnAddWorkflowResponsePredecessorsToLibrary(ResponseFunctionName: Code[128])` (integration)
  - subscribers: [Codeunit 1542 "Workflow Webhook Responses"](../codeunit/1542.md) AddWorkflowWebhookEventResponseCombinationsToLibrary, [Codeunit 20423 "Qlty. Workflow Setup"](../codeunit/20423.md) HandleOnAddWorkflowResponsePredecessorsToLibrary, [Codeunit 6139 "E-Document Workflow Setup"](../codeunit/6139.md) AddMyworkflowEventOnAddWorkflowResponsePredecessorsToLibrary, [Codeunit 6280 "Sust. Workflow Event Handling"](../codeunit/6280.md) AddWorkflowResponsePredecessorsToLibrary
- `OnExecuteWorkflowResponse(var ResponseExecuted: Boolean; var Variant: Variant; xVariant: Variant; ResponseWorkflowStepInstance: Record "Workflow Step Instance")` (integration)
  - subscribers: [Codeunit 1542 "Workflow Webhook Responses"](../codeunit/1542.md) ExecuteWorkflowWebhookResponses, [Codeunit 20424 "Qlty. Workflow Response"](../codeunit/20424.md) HandleOnExecuteWorkflowResponse, [Codeunit 6139 "E-Document Workflow Setup"](../codeunit/6139.md) ExecuteEdocWorkflowResponses
- `OnAfterGetWorkflowResponseDescription(var WorkflowResponse: Record "Workflow Response"; var WorkflowStepArgument: Record "Workflow Step Argument"; var WorkflowDescription: Text[250])` (integration)
- `OnAfterAllowRecordUsage(Variant: Variant; var RecRef: RecordRef)` (integration)
- `OnAfterGetDescription(WorkflowStepArgument: Record "Workflow Step Argument"; WorkflowResponse: Record "Workflow Response"; var Result: Text[250])` (integration)
  - subscribers: [Codeunit 6139 "E-Document Workflow Setup"](../codeunit/6139.md) OnAfterGetDescription
- `OnBeforeAddResponseToLibrary(FunctionName: Code[128]; Description: Text[250])` (integration)
- `OnBeforeAllowRecordUsageDefault(var Variant: Variant; var Handled: Boolean)` (integration)
  - subscribers: [Codeunit 6280 "Sust. Workflow Event Handling"](../codeunit/6280.md) OnBeforeAllowRecordUsageDefault
- `OnBeforeCreateNotificationEntry(WorkflowStepInstance: Record "Workflow Step Instance"; ApprovalEntry: Record "Approval Entry"; var IsHandled: Boolean)` (integration)
- `OnBeforeExecuteResponse(var Variant: Variant; ResponseWorkflowStepInstance: Record "Workflow Step Instance"; xVariant: Variant; var IsHandled: Boolean)` (integration)
- `OnBeforeIsArgumentMandatory(ResponseFunctionName: Code[128]; var ArgumentMandatory: Boolean; var IsHandled: Boolean)` (integration)
- `OnBeforeReleaseDocument(var Variant: Variant)` (integration)
- `OnOpenDocument(RecRef: RecordRef; var Handled: Boolean)` (integration)
  - subscribers: [Codeunit 20425 "Qlty. Workflow Approvals"](../codeunit/20425.md) HandleOnOpenDocument
- `OnPostDocumentOnCaseElse(RecRef: RecordRef; var IsHandled: Boolean)` (integration)
- `OnReleaseDocument(RecRef: RecordRef; var Handled: Boolean)` (integration)
  - subscribers: [Codeunit 20425 "Qlty. Workflow Approvals"](../codeunit/20425.md) HandleOnReleaseDocument
- `OnCheckIsArgumentMandatory(ResponseFunctionName: Code[128]; var ArgumentMandatory: Boolean)` (integration)
- `OnCheckHasRequiredArguments(WorkflowStep: Record "Workflow Step"; WorkflowStepArgument: Record "Workflow Step Argument"; var HasRequiredArgument: Boolean)` (integration)
- `OnShowMessageOnBeforeShowMessage(WorkflowStepArgument: Record "Workflow Step Argument"; var SuppressMessage: Boolean)` (integration)

## Procedures

- `CreateResponsesLibrary()`
- `ExecuteResponse(var Variant: Variant; ResponseWorkflowStepInstance: Record "Workflow Step Instance"; xVariant: Variant)`
- `DoNothingCode(): Code[128]`
- `CreateNotificationEntryCode(): Code[128]`
- `ReleaseDocumentCode(): Code[128]`
- `OpenDocumentCode(): Code[128]`
- `SetStatusToPendingApprovalCode(): Code[128]`
- `GetApprovalCommentCode(): Code[128]`
- `CreateApprovalRequestsCode(): Code[128]`
- `SendApprovalRequestForApprovalCode(): Code[128]`
- `ApproveAllApprovalRequestsCode(): Code[128]`
- `RejectAllApprovalRequestsCode(): Code[128]`
- `CancelAllApprovalRequestsCode(): Code[128]`
- `PostDocumentAsyncCode(): Code[128]`
- `PostDocumentCode(): Code[128]`
- `CreatePmtLineForPostedPurchaseDocAsyncCode(): Code[128]`
- `CreatePmtLineForPostedPurchaseDocCode(): Code[128]`
- `CreateOverdueNotificationCode(): Code[128]`
- `CheckCustomerCreditLimitCode(): Code[128]`
- `CheckGeneralJournalBatchBalanceCode(): Code[128]`
- `CreateAndApproveApprovalRequestAutomaticallyCode(): Code[128]`
- `ShowMessageCode(): Code[128]`
- `RestrictRecordUsageCode(): Code[128]`
- `AllowRecordUsageCode(): Code[128]`
- `GetMarkReadyForOCRCode(): Code[128]`
- `GetSendToOCRAsyncCode(): Code[128]`
- `GetSendToOCRCode(): Code[128]`
- `GetReceiveFromOCRAsyncCode(): Code[128]`
- `GetReceiveFromOCRCode(): Code[128]`
- `GetCreateDocFromIncomingDocCode(): Code[128]`
- `GetCreateReleasedDocFromIncomingDocCode(): Code[128]`
- `GetCreateJournalFromIncomingDocCode(): Code[128]`
- `RevertValueForFieldCode(): Code[128]`
- `ApplyNewValuesCode(): Code[128]`
- `DiscardNewValuesCode(): Code[128]`
- `EnableJobQueueEntryCode(): Code[128]`
- `SetStatusToPendingApproval(var Variant: Variant)`
- `AddResponseToLibrary(FunctionName: Code[128]; TableID: Integer; Description: Text[250]; ResponseOptionGroup: Code[20])`
- `AddResponsePredecessor(FunctionName: Code[128]; PredecessorFunctionName: Code[128])`
- `GetDescription(WorkflowStepArgument: Record "Workflow Step Argument"): Text[250]`
- `IsArgumentMandatory(ResponseFunctionName: Code[128]): Boolean`
- `HasRequiredArguments(WorkflowStep: Record "Workflow Step"): Boolean`
- `GetApproveOverReceiptCode(): Text[128]`

Plus 36 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 1520 "Workflow Event Handling"](../codeunit/1520.md) (39 calls: `AddResponsePredecessors → RunWorkflowOnAfterPostPurchaseDocCode`, `AddResponsePredecessors → RunWorkflowOnAfterReadyForOCRIncomingDocCode`, `AddResponsePredecessors → RunWorkflowOnAfterReleasePurchaseDocCode`, …)
- [Codeunit 1535 "Approvals Mgmt."](../codeunit/1535.md) (9 calls: `ApproveAllApprovalRequests → ApproveApprovalRequestsForRecord`, `CancelAllApprovalRequests → CancelApprovalRequestsForRecord`, `CreateAndApproveApprovalRequestAutomatically → CreateAndAutomaticallyApproveRequest`, …)
- [Codeunit 1550 "Record Restriction Mgt."](../codeunit/1550.md) (7 calls: `AllowRecordUsage → AllowFAJournalBatchUsage`, `AllowRecordUsage → AllowGenJournalBatchUsage`, `AllowRecordUsage → AllowItemJournalBatchUsage`, …)
- [Codeunit 1531 "Workflow Change Rec Mgt."](../codeunit/1531.md) (3 calls: `ExecuteResponse → ApplyNewValues`, `ExecuteResponse → DiscardNewValues`, `ExecuteResponse → RevertValueForField`)
- [Codeunit 132 "Release Incoming Document"](../codeunit/132.md) (2 calls: `OpenDocument → Reopen`, `ReleaseDocument → PerformManualRelease`)
- [Codeunit 414 "Release Sales Document"](../codeunit/414.md) (2 calls: `OpenDocument → Reopen`, `ReleaseDocument → PerformManualCheckAndRelease`)
- [Codeunit 415 "Release Purchase Document"](../codeunit/415.md) (2 calls: `OpenDocument → Reopen`, `ReleaseDocument → PerformManualCheckAndRelease`)
- [Codeunit 137 "OCR Inc. Doc. via Job Queue"](../codeunit/137.md) (1 call: `ReceiveFromOCRAsync → EnqueueIncomingDoc`)
- [Codeunit 150 "System Initialization"](../codeunit/150.md) (1 call: `AddResponseToLibrary → IsInProgress`)
- [Codeunit 1501 "Workflow Management"](../codeunit/1501.md) (1 call: `ExecuteResponse → GetTelemetryDimensions`)
- [Codeunit 1510 "Notification Management"](../codeunit/1510.md) (1 call: `CreateOverdueNotifications → CreateOverdueNotifications`)
- [Codeunit 1512 "Workflow Create Payment Line"](../codeunit/1512.md) (1 call: `CreatePmtLineForPostedPurchaseDoc → CreatePmtLine`)
- [Codeunit 80 "Sales-Post"](../codeunit/80.md) (1 call: `PostDocument → (object)`)
- [Codeunit 90 "Purch.-Post"](../codeunit/90.md) (1 call: `PostDocument → (object)`)

## Called by

- [Codeunit 1502 "Workflow Setup"](../codeunit/1502.md) (100 calls: `InitWorkflow → CreateResponsesLibrary`, `InsertCustomerApprovalWorkflowDetails → CreateApprovalRequestsCode`, `InsertCustomerApprovalWorkflowDetails → SendApprovalRequestForApprovalCode`, …)
- [Codeunit 1540 "Workflow Webhook Setup"](../codeunit/1540.md) (16 calls: `CreateApprovalWorkflow → AllowRecordUsageCode`, `CreateApprovalWorkflow → OpenDocumentCode`, `CreateApprovalWorkflow → ReleaseDocumentCode`, …)
- [Codeunit 6280 "Sust. Workflow Event Handling"](../codeunit/6280.md) (12 calls: `AddWorkflowResponsePredecessorsToLibrary → AddResponsePredecessor`, `AddWorkflowResponsePredecessorsToLibrary → CancelAllApprovalRequestsCode`, `AddWorkflowResponsePredecessorsToLibrary → CreateApprovalRequestsCode`, …)
- [Codeunit 1804 "Approval Workflow Setup Mgt."](../codeunit/1804.md) (6 calls: `ChangeWorkflowStepArgument → CreateApprovalRequestsCode`, `CreateCustomerOrItemApprovalWorkflow → CreateApprovalRequestsCode`, `CreateCustomerOrItemApprovalWorkflow → SendApprovalRequestForApprovalCode`, …)
- [Codeunit 20423 "Qlty. Workflow Setup"](../codeunit/20423.md) (3 calls: `HandleOnAddWorkflowResponsePredecessorsToLibrary → AddResponsePredecessor`, `HandleOnAddWorkflowResponsesToLibrary → AddResponsePredecessor`, `HandleOnAddWorkflowResponsesToLibrary → AddResponseToLibrary`)
- [Table 1501 "Workflow"](../table/1501.md) (3 calls: `CheckRecordChangedWorkflows → ApplyNewValuesCode`, `CheckRecordChangedWorkflows → RevertValueForFieldCode`, `CheckResponseOptions → HasRequiredArguments`)
- [Codeunit 1542 "Workflow Webhook Responses"](../codeunit/1542.md) (2 calls: `AddWorkflowWebhookEventResponseCombinationsToLibrary → AddResponsePredecessor`, `AddWorkflowWebhookResponsesToLibrary → AddResponseToLibrary`)
- [Codeunit 1501 "Workflow Management"](../codeunit/1501.md) (1 call: `ExecuteResponses → ExecuteResponse`)
- [Codeunit 1535 "Approvals Mgmt."](../codeunit/1535.md) (1 call: `FindApprovedApprovalEntryForWorkflowUserGroup → CreateApprovalRequestsCode`)
- [Page 1523 "Workflow Response Options"](../page/1523.md) (1 call: `LookupFieldCaptionForApplyNewValues → RevertValueForFieldCode`)
- [Page 1525 "Workflow Response FactBox"](../page/1525.md) (1 call: `OnAfterGetRecord → HasRequiredArguments`)
- [Page 1529 "Workflow Overview"](../page/1529.md) (1 call: `GetDescription → GetDescription`)
- [Page 1543 "WF Event/Response Comb. Matrix"](../page/1543.md) (1 call: `UpdateMatrixData → AddResponsePredecessor`)
- [Page 1812 "Item Approval WF Setup Wizard"](../page/1812.md) (1 call: `SetDefaultValues → ShowMessageCode`)
- [Page 1813 "Cust. Approval WF Setup Wizard"](../page/1813.md) (1 call: `SetDefaultValues → ShowMessageCode`)
- [Table 1502 "Workflow Step"](../table/1502.md) (1 call: `GetDescription → GetDescription`)
- [Table 1521 "Workflow Response"](../table/1521.md) (1 call: `MakeDependentOnAllEvents → AddResponsePredecessor`)

## Across versions

- Present in: BC23-30
- Changed (declaration) in: BC24

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: "Workflow Response Handling")`, then `bcatlas_get_procedure_body` or `bcatlas_get_neighbors` on the returned id.
