---
title: "Codeunit 1520 Workflow Event Handling"
author: "Jonas Paprotka"
url: https://jonas-paprotka.de/ref/codeunit/1520-workflow-event-handling/
type: codeunit
id: 1520
name: "Workflow Event Handling"
app: "Base Application"
namespace: System.Automation
versions: "17-28"
build: 28.5.54151.54365
source: "https://jonas-paprotka.de/ref/codeunit/1520-workflow-event-handling/source/29/"
checked: 2026-09-20
subject: "Microsoft Dynamics 365 Business Central"
license: "Content © 2026 Jonas Paprotka. Quote freely with attribution and a link."
---

# Codeunit 1520 Workflow Event Handling

Jonas Paprotka, https://jonas-paprotka.de/ref/codeunit/1520-workflow-event-handling/

| | |
| --- | --- |
| App | Base Application |
| Namespace | System.Automation |
| Versions | 17-28 |
| Source file | System/Workflow/WorkflowEventHandling.Codeunit.al |

## Procedures

| Name | Parameters | Returns | Access | Versions | Obsolete | Reason |
| --- | --- | --- | --- | --- | --- | --- |
| CreateEventsLibrary | () | - | public | 17-28 | - | - |
| AddEventToLibrary | (Code[128], Integer, Text[250], Integer, Boolean) | - | public | 17-28 | - | - |
| AddEventPredecessor | (Code[128], Code[128]) | - | public | 17-28 | - | - |
| RunWorkflowOnAfterInsertIncomingDocumentCode | () | Code[128] | public | 17-28 | - | - |
| RunWorkflowOnAfterReleaseIncomingDocCode | () | Code[128] | public | 17-28 | - | - |
| RunWorkflowOnAfterCreateDocFromIncomingDocSuccessCode | () | Code[128] | public | 17-28 | - | - |
| RunWorkflowOnAfterCreateDocFromIncomingDocFailCode | () | Code[128] | public | 17-28 | - | - |
| RunWorkflowOnAfterReadyForOCRIncomingDocCode | () | Code[128] | public | 17-28 | - | - |
| RunWorkflowOnAfterSendToOCRIncomingDocCode | () | Code[128] | public | 17-28 | - | - |
| RunWorkflowOnAfterReceiveFromOCRIncomingDocCode | () | Code[128] | public | 17-28 | - | - |
| RunWorkflowOnAfterReceiveFromDocExchIncomingDocCode | () | Code[128] | public | 17-28 | - | - |
| RunWorkflowOnSendPurchaseDocForApprovalCode | () | Code[128] | public | 17-28 | - | - |
| RunWorkflowOnSendIncomingDocForApprovalCode | () | Code[128] | public | 17-28 | - | - |
| RunWorkflowOnCancelIncomingDocApprovalRequestCode | () | Code[128] | public | 17-28 | - | - |
| RunWorkflowOnCancelPurchaseApprovalRequestCode | () | Code[128] | public | 17-28 | - | - |
| RunWorkflowOnAfterReleasePurchaseDocCode | () | Code[128] | public | 17-28 | - | - |
| RunWorkflowOnSendSalesDocForApprovalCode | () | Code[128] | public | 17-28 | - | - |
| RunWorkflowOnCancelSalesApprovalRequestCode | () | Code[128] | public | 17-28 | - | - |
| RunWorkflowOnAfterReleaseSalesDocCode | () | Code[128] | public | 17-28 | - | - |
| RunWorkflowOnAfterPostPurchaseDocCode | () | Code[128] | public | 17-28 | - | - |
| RunWorkflowOnAfterInsertGeneralJournalLineCode | () | Code[128] | public | 17-28 | - | - |
| RunWorkflowOnApproveApprovalRequestCode | () | Code[128] | public | 17-28 | - | - |
| RunWorkflowOnDelegateApprovalRequestCode | () | Code[128] | public | 17-28 | - | - |
| RunWorkflowOnRejectApprovalRequestCode | () | Code[128] | public | 17-28 | - | - |
| RunWorkflowOnSendOverdueNotificationsCode | () | Code[128] | public | 17-28 | - | - |
| RunWorkflowOnCustomerCreditLimitExceededCode | () | Code[128] | public | 17-28 | - | - |
| RunWorkflowOnCustomerCreditLimitNotExceededCode | () | Code[128] | public | 17-28 | - | - |
| RunWorkflowOnSendCustomerForApprovalCode | () | Code[128] | public | 17-28 | - | - |
| RunWorkflowOnSendVendorForApprovalCode | () | Code[128] | public | 17-28 | - | - |
| RunWorkflowOnSendItemForApprovalCode | () | Code[128] | public | 17-28 | - | - |
| RunWorkflowOnCancelCustomerApprovalRequestCode | () | Code[128] | public | 17-28 | - | - |
| RunWorkflowOnCancelVendorApprovalRequestCode | () | Code[128] | public | 17-28 | - | - |
| RunWorkflowOnCancelItemApprovalRequestCode | () | Code[128] | public | 17-28 | - | - |
| RunWorkflowOnSendGeneralJournalBatchForApprovalCode | () | Code[128] | public | 17-28 | - | - |
| RunWorkflowOnCancelGeneralJournalBatchApprovalRequestCode | () | Code[128] | public | 17-28 | - | - |
| RunWorkflowOnSendGeneralJournalLineForApprovalCode | () | Code[128] | public | 17-28 | - | - |
| RunWorkflowOnCancelGeneralJournalLineApprovalRequestCode | () | Code[128] | public | 17-28 | - | - |
| RunWorkflowOnGeneralJournalBatchBalancedCode | () | Code[128] | public | 17-28 | - | - |
| RunWorkflowOnGeneralJournalBatchNotBalancedCode | () | Code[128] | public | 17-28 | - | - |
| RunWorkflowOnBinaryFileAttachedCode | () | Code[128] | public | 17-28 | - | - |
| RunWorkflowOnCustomerChangedCode | () | Code[128] | public | 17-28 | - | - |
| RunWorkflowOnVendorChangedCode | () | Code[128] | public | 17-28 | - | - |
| RunWorkflowOnItemChangedCode | () | Code[128] | public | 17-28 | - | - |
| RunWorkflowOnAfterCreateGenJnlLineFromIncomingDocSuccessCode | () | Code[128] | public | 17-28 | - | - |
| RunWorkflowOnAfterCreateGenJnlLineFromIncomingDocFailCode | () | Code[128] | public | 17-28 | - | - |
| RunWorkflowOnAfterInsertIncomingDocument | (var Record Incoming Document, Boolean) | - | public | 17-28 | - | - |
| RunWorkflowOnSendPurchaseDocForApproval | (var Record Purchase Header) | - | public | 17-28 | - | - |
| RunWorkflowOnCancelPurchaseApprovalRequest | (var Record Purchase Header) | - | public | 17-28 | - | - |
| RunWorkflowOnSendIncomingDocForApproval | (var Record Incoming Document) | - | public | 17-28 | - | - |
| RunWorkflowOnCancelIncomingDocApprovalRequest | (var Record Incoming Document) | - | public | 17-28 | - | - |
| RunWorkflowOnAfterReleasePurchaseDoc | (var Record Purchase Header, Boolean) | - | public | 17-28 | - | - |
| RunWorkflowOnSendSalesDocForApproval | (var Record Sales Header) | - | public | 17-28 | - | - |
| RunWorkflowOnCancelSalesApprovalRequest | (var Record Sales Header) | - | public | 17-28 | - | - |
| RunWorkflowOnAfterReleaseSalesDoc | (var Record Sales Header, Boolean) | - | public | 17-28 | - | - |
| RunWorkflowOnAfterReleaseIncomingDoc | (var Record Incoming Document) | - | public | 17-28 | - | - |
| RunWorkflowOnAfterCreateDocFromIncomingDocSuccess | (var Record Incoming Document) | - | public | 17-28 | - | - |
| RunWorkflowOnAfterCreateDocFromIncomingDocFail | (var Record Incoming Document) | - | public | 17-28 | - | - |
| RunWorkflowOnAfterIncomingDocReadyForOCR | (var Record Incoming Document) | - | public | 17-28 | - | - |
| RunWorkflowOnAfterIncomingDocSentToOCR | (var Record Incoming Document) | - | public | 17-28 | - | - |
| RunWorkflowOnAfterIncomingDocReceivedFromOCR | (var Record Incoming Document) | - | public | 17-28 | - | - |
| RunWorkflowOnAfterIncomingDocReceivedFromDocExch | (var Record Incoming Document) | - | public | 17-28 | - | - |
| RunWorkflowOnAfterPostPurchaseDoc | (var Record Purchase Header, var Codeunit Gen. Jnl.-Post Line, Code[20], Code[20], Code[20], Code[20]) | - | public | 17-28 | - | - |
| RunWorkflowOnAfterInsertGeneralJournalLine | (var Record Gen. Journal Line, Boolean) | - | public | 17-28 | - | - |
| RunWorkflowOnApproveApprovalRequest | (var Record Approval Entry) | - | public | 17-28 | - | - |
| RunWorkflowOnDelegateApprovalRequest | (var Record Approval Entry) | - | public | 17-28 | - | - |
| RunWorkflowOnRejectApprovalRequest | (var Record Approval Entry) | - | public | 17-28 | - | - |
| RunWorkflowOnSendOverdueNotifications | () | - | public | 17-28 | - | - |
| RunWorkflowOnCustomerCreditLimitExceeded | (var Record Sales Header) | - | public | 17-28 | - | - |
| RunWorkflowOnCustomerCreditLimitNotExceeded | (var Record Sales Header) | - | public | 17-28 | - | - |
| RunWorkflowOnSendCustomerForApproval | (Record Customer) | - | public | 17-28 | - | - |
| RunWorkflowOnSendVendorForApproval | (Record Vendor) | - | public | 17-28 | - | - |
| RunWorkflowOnSendItemForApproval | (Record Item) | - | public | 17-28 | - | - |
| RunWorkflowOnCancelCustomerApprovalRequest | (Record Customer) | - | public | 17-28 | - | - |
| RunWorkflowOnCancelVendorApprovalRequest | (Record Vendor) | - | public | 17-28 | - | - |
| RunWorkflowOnCancelItemApprovalRequest | (Record Item) | - | public | 17-28 | - | - |
| RunWorkflowOnSendGeneralJournalBatchForApproval | (var Record Gen. Journal Batch) | - | public | 17-28 | - | - |
| RunWorkflowOnCancelGeneralJournalBatchApprovalRequest | (var Record Gen. Journal Batch) | - | public | 17-28 | - | - |
| RunWorkflowOnSendGeneralJournalLineForApproval | (var Record Gen. Journal Line) | - | public | 17-28 | - | - |
| RunWorkflowOnCancelGeneralJournalLineApprovalRequest | (var Record Gen. Journal Line) | - | public | 17-28 | - | - |
| RunWorkflowOnGeneralJournalBatchBalanced | (var Record Gen. Journal Batch) | - | public | 17-28 | - | - |
| RunWorkflowOnGeneralJournalBatchNotBalanced | (var Record Gen. Journal Batch) | - | public | 17-28 | - | - |
| RunWorkflowOnBinaryFileAttached | (var Record Incoming Document Attachment) | - | public | 17-28 | - | - |
| RunWorkflowOnCustomerChanged | (var Record Customer, var Record Customer, Boolean) | - | public | 17-28 | - | - |
| RunWorkflowOnVendorChanged | (var Record Vendor, var Record Vendor, Boolean) | - | public | 17-28 | - | - |
| RunWorkflowOnItemChanged | (var Record Item, var Record Item, Boolean) | - | public | 17-28 | - | - |
| RunWorkflowOnAfterCreateGenJnlLineFromIncomingDocSuccess | (var Record Incoming Document) | - | public | 17-28 | - | - |
| RunWorkflowOnAfterCreateGenJnlLineFromIncomingDocFail | (var Record Incoming Document) | - | public | 17-28 | - | - |
| RunWorkflowOnSendJobQueueEntryForApprovalCode | () | Code[128] | public | 22-28 | - | - |
| RunWorkflowOnCancelJobQueueEntryApprovalRequestCode | () | Code[128] | public | 22-28 | - | - |
| RunWorkflowOnSendItemJournalBatchForApprovalCode | () | Code[128] | public | 28 | - | - |
| RunWorkflowOnCancelItemJournalBatchApprovalRequestCode | () | Code[128] | public | 28 | - | - |
| RunWorkflowOnSendRequisitionWkshBatchForApprovalCode | () | Code[128] | public | 28 | - | - |
| RunWorkflowOnCancelRequisitionWkshBatchApprovalRequestCode | () | Code[128] | public | 28 | - | - |
| RunWorkflowOnSendItemJournalBatchForApproval | (var Record Item Journal Batch) | - | public | 28 | - | - |
| RunWorkflowOnCancelItemJournalBatchApprovalRequest | (var Record Item Journal Batch) | - | public | 28 | - | - |
| RunWorkflowOnSendRequisitionWkshBatchForApproval | (var Record Requisition Wksh. Name) | - | public | 28 | - | - |
| RunWorkflowOnCancelRequisitionWkshBatchApprovalRequest | (var Record Requisition Wksh. Name) | - | public | 28 | - | - |

## Events

| Kind | Name | Parameters | Versions | Obsolete | Reason |
| --- | --- | --- | --- | --- | --- |
| Integration event | OnAddWorkflowEventsToLibrary | () | 17-28 | - | - |
| Integration event | OnAddWorkflowEventPredecessorsToLibrary | (Code[128]) | 17-28 | - | - |
| Integration event | OnAddWorkflowTableRelationsToLibrary | () | 17-28 | - | - |
| Integration event | OnBeforeAddEventToLibrary | (Code[128], Text[250]) | 17-28 | - | - |
| Integration event | OnBeforeRunWorkflowOnSendPurchaseDocForApproval | (Record Purchase Header) | 17-18 | - | - |
| Integration event | OnBeforeRunWorkflowOnApproveApprovalRequest | (var Record Approval Entry) | 18-28 | - | - |
| Integration event | OnBeforeRunWorkflowOnSendPurchaseDocForApproval | (var Record Purchase Header) | 19-28 | - | - |

## Source

Symbols: Microsoft.BaseApplication.symbols.437dbf0e-84ff-417a-965d-ed2bb9650972, https://dynamicssmb2.pkgs.visualstudio.com/DynamicsBCPublicFeeds/_packaging/MSSymbols/nuget/v3/index.json, highest build per major on 2026-09-20.
AL source 29: https://github.com/microsoft/BCApps, MIT, releases/29.x at a66254c3b8b5bb1cea290dc8f9d097aec4381153.

Jonas Paprotka, 2026-09-20.
