---
id: object/table/454
type: object
title: Table 454 "Approval Entry"
summary: Table 454 "Approval Entry" in Base Application (System.Automation). 31 fields, 9 public procedures, 7 events. Present since at least BC23, still in BC30, changed in BC24, BC26-28.
tier: official
language: en
tags:
  - table
  - base application
versions:
  introduced: null
  last_changed: "28"
  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: adf212c9fbcc1004907da4aa78783f3248531915ee1da9c2b4f061a1689a62e0
evidence:
  - kind: code
    url: https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Layers/W1/BaseApp/OtherCapabilities/Approvals/ApprovalEntry.Table.al
    title: src/Layers/W1/BaseApp/OtherCapabilities/Approvals/ApprovalEntry.Table.al (releases/29.x)
    date: null
    commit: ea08af5ef2d6a9b5c5af4a029288abbe2c883220
    t: null
    quote: null
links:
  learn:
    - https://learn.microsoft.com/dynamics365/business-central/dev-itpro/api-reference/v2.0/api/dynamics_approvalentry_get
    - https://learn.microsoft.com/dynamics365/business-central/dev-itpro/api-reference/v2.0/resources/dynamics_approvalentry
    - https://learn.microsoft.com/dynamics365/business-central/across-how-use-approval-workflows
  objects: []
  features: []
  topics:
    - topic/business-central/business-functionality/general-business-functionality/workflows/use-approval-workflows
  localizations: []
  videos: []
  posts: []
  guidelines: []
object_type: table
object_id: 454
name: Approval Entry
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"
  - "26"
  - "27"
  - "28"
source_major: "29"
obsolete: null
countries: []
ms_search_form_ids: []
counts:
  fields: 31
  procedures: 18
  events: 7
  subscribers: 0
relations:
  out: 7
  referenced_by: 12
  pages: 6
  extended_by: 0
  event_subscribers: 0
  calls: 2
  called_by: 0
  implements: 0
---

# Table 454 "Approval Entry"

> Table 454 "Approval Entry" in Base Application (System.Automation). 31 fields, 9 public procedures, 7 events. Present since at least BC23, still in BC30, changed in BC24, BC26-28.

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

Learn documents this table through its pages: [Page 30094 "APIV2 - Approval Entries"](../page/30094.md) (2 Learn pages), [Page 654 "Requests to Approve"](../page/654.md) (1), [Page 662 "Approval Request Entries"](../page/662.md) (1).

## Properties

| Property | Value |
|---|---|
| Caption | Approval Entry |
| 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 | Table ID | Integer | Specifies the ID of the table where the record that is subject to approval is stored. <small>via [Page 658 "Approval Entries"](../page/658.md)</small> |  |
| 2 | Document Type | Enum "Approval Document Type" | Specifies the type of document that an approval entry has been created for. Approval entries can be created for six different types of sales or purchase documents: <small>via [Page 658 "Approval Entries"](../page/658.md)</small> | enum [Enum 454 "Approval Document Type"](../enum/454.md) |
| 3 | Document No. | Code[20] | Specifies the document number copied from the relevant sales or purchase document, such as a purchase order or a sales quote. <small>via [Page 658 "Approval Entries"](../page/658.md)</small> |  |
| 4 | Sequence No. | Integer | Specifies the order of approvers when an approval workflow involves more than one approver. <small>via [Page 658 "Approval Entries"](../page/658.md)</small> |  |
| 5 | Approval Code | Code[20] | — |  |
| 6 | Sender ID | Code[50] | Specifies the ID of the user who sent the approval request for the document to be approved. <small>via [Page 654 "Requests to Approve"](../page/654.md)</small> | TableRelation User."User Name"; DataClassification EndUserIdentifiableInformation |
| 7 | Salespers./Purch. Code | Code[20] | Specifies the code for the salesperson or purchaser that was in the document to be approved. It is not a mandatory field, but is useful if a salesperson or a purchaser responsible for the customer/vendor needs to approve the document before it is processed. <small>via [Page 658 "Approval Entries"](../page/658.md)</small> |  |
| 8 | Approver ID | Code[50] | Specifies the ID of the user who must approve the document. <small>via [Page 658 "Approval Entries"](../page/658.md)</small> | TableRelation User."User Name"; DataClassification EndUserIdentifiableInformation |
| 9 | Status | Enum "Approval Status" | Specifies the approval status for the entry: <small>via [Page 654 "Requests to Approve"](../page/654.md)</small> | enum [Enum 455 "Approval Status"](../enum/455.md) |
| 10 | Date-Time Sent for Approval | DateTime | Specifies the date and the time that the document was sent for approval. <small>via [Page 658 "Approval Entries"](../page/658.md)</small> |  |
| 11 | Last Date-Time Modified | DateTime | Specifies the date when the approval entry was last modified. If, for example, the document approval is canceled, this field will be updated accordingly. <small>via [Page 658 "Approval Entries"](../page/658.md)</small> |  |
| 12 | Last Modified By User ID | Code[50] | Specifies the ID of the user who last modified the approval entry. If, for example, the document approval is canceled, this field will be updated accordingly. <small>via [Page 658 "Approval Entries"](../page/658.md)</small> | TableRelation User."User Name"; DataClassification EndUserIdentifiableInformation |
| 13 | Comment | Boolean | Specifies whether there are comments relating to the approval of the record. If you want to read the comments, choose the field to open the Approval Comment Sheet window. <small>via [Page 654 "Requests to Approve"](../page/654.md)</small> | FlowField: exist("Approval Comment Line" where("Table ID" = field("Table ID"), "Record ID to Approve" = field("Record ID to Approve"), "Workflow Step Instance ID" = field("Workflow Step Instance ID"))); not editable |
| 14 | Due Date | Date | Specifies when the record must be approved, by one or more approvers. <small>via [Page 654 "Requests to Approve"](../page/654.md)</small> |  |
| 15 | Amount | Decimal | Specifies the total amount (excl. VAT) on the document awaiting approval. <small>via [Page 654 "Requests to Approve"](../page/654.md)</small> |  |
| 16 | Amount (LCY) | Decimal | Specifies the total amount in LCY (excl. VAT) on the document awaiting approval. <small>via [Page 654 "Requests to Approve"](../page/654.md)</small> |  |
| 17 | Currency Code | Code[10] | Specifies the code of the currency of the amounts on the sales or purchase lines. <small>via [Page 654 "Requests to Approve"](../page/654.md)</small> | TableRelation [Table 4 "Currency"](../table/4.md) |
| 18 | Approval Type | Enum "Workflow Approval Type" | Specifies which approvers apply to this approval template: <small>via [Page 658 "Approval Entries"](../page/658.md)</small> | enum [Enum 458 "Workflow Approval Type"](../enum/458.md) |
| 19 | Limit Type | Enum "Workflow Approval Limit Type" | Specifies the type of limit that applies to the approval template: <small>via [Page 658 "Approval Entries"](../page/658.md)</small> | enum [Enum 457 "Workflow Approval Limit Type"](../enum/457.md) |
| 20 | Available Credit Limit (LCY) | Decimal | Specifies the remaining credit (in LCY) that exists for the customer. <small>via [Page 658 "Approval Entries"](../page/658.md)</small> |  |
| 21 | Pending Approvals | Integer | — | FlowField: count("Approval Entry" where("Record ID to Approve" = field("Record ID to Approve"), Status = filter(Created \| Open), "Workflow Step Instance ID" = field("Workflow Step Instance ID"))) |
| 22 | Record ID to Approve | RecordID | — |  |
| 23 | Delegation Date Formula | DateFormula | — |  |
| 26 | Number of Approved Requests | Integer | — | FlowField: count("Approval Entry" where("Record ID to Approve" = field("Record ID to Approve"), Status = filter(Approved), "Workflow Step Instance ID" = field("Workflow Step Instance ID"))) |
| 27 | Number of Rejected Requests | Integer | — | FlowField: count("Approval Entry" where("Record ID to Approve" = field("Record ID to Approve"), Status = filter(Rejected), "Workflow Step Instance ID" = field("Workflow Step Instance ID"))) |
| 29 | Entry No. | Integer | — | AutoIncrement |
| 30 | Workflow Step Instance ID | Guid | — |  |
| 31 | Related to Change | Boolean | — | FlowField: exist("Workflow - Record Change" where("Workflow Step Instance ID" = field("Workflow Step Instance ID"), "Record ID" = field("Record ID to Approve"))) |
| 32 | Approver Full Name | Text[80] | — | FlowField: lookup(User."Full Name" where("User Name" = field("Approver ID"))) |
| 33 | Sender Full Name | Text[80] | — | FlowField: lookup(User."Full Name" where("User Name" = field("Sender ID"))) |
| 34 | Salespers./Purch. Name | Text[80] | Salespers./Purch. Full Name <small>caption</small> | FlowField: lookup("Salesperson/Purchaser".Name where("Code" = field("Salespers./Purch. Code"))) |

## Keys

- Key1: Entry No. (clustered)
- Key2: Record ID to Approve, Workflow Step Instance ID, Sequence No.
- Key3: Table ID, Document Type, Document No., Sequence No., Record ID to Approve
- Key4: Approver ID, Status, Due Date, Date-Time Sent for Approval
- Key5: Sender ID
- Key6: Due Date
- Key7: Table ID, Record ID to Approve, Status, Workflow Step Instance ID, Sequence No.
- Key8: Table ID, Document Type, Document No., Date-Time Sent for Approval

## Events published

- `OnAfterGetRecordDetails(RecRef: RecordRef; ChangeRecordDetails: Text; var Details: Text)` (integration)
- `OnAfterGetRecordToApprove(ApprovalEntry: Record "Approval Entry"; var RecRef: RecordRef; var Result: Boolean)` (integration)
- `OnAfterGetCustVendorDetails(var ApprovalEntry: Record "Approval Entry"; var CustVendorNo: Code[20]; var CustVendorName: Text[100])` (integration)
- `OnBeforeMarkAllWhereUserisApproverOrSender(var ApprovalEntry: Record "Approval Entry"; var IsHandled: Boolean)` (integration)
- `OnBeforeShowRecord(var ApprovalEntry: Record "Approval Entry"; var IsHandled: Boolean)` (integration)
- `OnBeforeRecordDetails(var ApprovalEntry: Record "Approval Entry"; var Details: Text; var IsHandled: Boolean)` (integration)
- `OnBeforeRecordCaption(var ApprovalEntry: Record "Approval Entry"; var Result: Text; var IsHandled: Boolean)` (integration)

## Procedures

- `GetLastEntryNo(): Integer`
- `ShowRecord()`
- `RecordCaption(): Text`
- `RecordDetails(): Text`
- `IsOverdue(): Boolean`
- `GetCustVendorDetails(var CustVendorNo: Code[20]; var CustVendorName: Text[100])`
- `GetChangeRecordDetails(): Text`
- `CanCurrentUserEdit(): Boolean`
- `MarkAllWhereUserisApproverOrSender()`

Plus 2 local procedures.

## Triggers

OnDelete, OnModify

## Relations

- Salespers./Purch. Name: CalcFormula [Table 13 "Salesperson/Purchaser"](../table/13.md)
- Related to Change: CalcFormula [Table 1525 "Workflow - Record Change"](../table/1525.md)
- Currency Code: TableRelation [Table 4 "Currency"](../table/4.md)
- Number of Approved Requests: CalcFormula [Table 454 "Approval Entry"](../table/454.md)
- Number of Rejected Requests: CalcFormula [Table 454 "Approval Entry"](../table/454.md)
- Pending Approvals: CalcFormula [Table 454 "Approval Entry"](../table/454.md)
- Comment: CalcFormula [Table 455 "Approval Comment Line"](../table/455.md)

## Referenced by

12 fields in 6 objects relate to this table (TableRelation or CalcFormula).

- [Table 1572 "Approval Entry Buffer"](../table/1572.md): Number of Approved Requests, Number of Rejected Requests, Pending Approvals
- [Table 454 "Approval Entry"](../table/454.md): Number of Approved Requests, Number of Rejected Requests, Pending Approvals
- [Table 6220 "Sustainability Cue"](../table/6220.md): Requests Sent for Approval, Requests to Approve
- [Table 9144 "Approvals Activities Cue"](../table/9144.md): Requests Sent for Approval, Requests to Approve
- [Table 38 "Purchase Header"](../table/38.md): Pending Approvals
- [Table 9070 "Accounting Services Cue"](../table/9070.md): Requests to Approve

## Pages and codeunits on this table

- [Page 30094 "APIV2 - Approval Entries"](../page/30094.md) (source table)
- [Page 654 "Requests to Approve"](../page/654.md) (source table)
- [Page 658 "Approval Entries"](../page/658.md) (source table)
- [Page 662 "Approval Request Entries"](../page/662.md) (source table)
- [Page 9092 "Approval FactBox"](../page/9092.md) (source table)
- [Page 9103 "Pending Approval FactBox"](../page/9103.md) (source table)

## 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 700 "Page Management"](../codeunit/700.md) (2 calls: `RecordCaption → GetPageID`, `ShowRecord → PageRun`)
- [Codeunit 703 "Find Record Management"](../codeunit/703.md) (1 call: `GetLastEntryNo → GetLastEntryIntFieldValue`)

## Across versions

- Present in: BC23-30
- Changed (declaration) in: BC24, BC26-28

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