---
id: object/codeunit/5817
type: object
title: Codeunit 5817 "Undo Posting Management"
summary: Codeunit 5817 "Undo Posting Management" in Base Application (Microsoft.Inventory). 28 public procedures, 58 events. Present since at least BC23, still in BC30, changed in BC25-28.
tier: official
language: en
tags:
  - codeunit
  - 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: 3db3d4a87cc5f90abc5e0e3d4d31d531903261bccdeab65bb47f93d484a4d033
evidence:
  - kind: code
    url: https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Layers/W1/BaseApp/Inventory/UndoPostingManagement.Codeunit.al
    title: src/Layers/W1/BaseApp/Inventory/UndoPostingManagement.Codeunit.al (releases/29.x)
    date: null
    commit: ea08af5ef2d6a9b5c5af4a029288abbe2c883220
    t: null
    quote: null
links:
  learn: []
  objects: []
  features: []
  topics: []
  localizations: []
  videos: []
  posts: []
  guidelines: []
  changes:
    - change/bcapps/10254
object_type: codeunit
object_id: 5817
name: Undo Posting Management
namespace: Microsoft.Inventory
app: Base Application
extends: null
first_version: "23"
last_version: "30"
present_in:
  - "23"
  - "24"
  - "25"
  - "26"
  - "27"
  - "28"
  - "29"
  - "30"
changed_in:
  - "25"
  - "26"
  - "27"
  - "28"
source_major: "29"
obsolete: null
countries: []
ms_search_form_ids: []
counts:
  fields: 0
  procedures: 122
  events: 58
  subscribers: 0
relations:
  out: 0
  referenced_by: 0
  pages: 0
  extended_by: 0
  event_subscribers: 9
  calls: 10
  called_by: 11
  implements: 0
---

# Codeunit 5817 "Undo Posting Management"

> Codeunit 5817 "Undo Posting Management" in Base Application (Microsoft.Inventory). 28 public procedures, 58 events. Present since at least BC23, still in BC30, changed in BC25-28.

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

## Properties

| Property | Value |
|---|---|
| Permissions | TableData "Reservation Entry" = i |

## Events published

- `OnAfterRevertPostedItemTracking(var TempReservEntry: Record "Reservation Entry" temporary)` (integration)
- `OnAfterUpdateTransLine(var TransferLine: Record "Transfer Line")` (integration)
- `OnAfterUpdateSalesLine(var SalesLine: Record "Sales Line")` (integration)
- `OnAfterUpdatePurchline(var PurchLine: Record "Purchase Line")` (integration)
- `OnBeforeAdjustQuantityRounding(var ItemJnlLine: Record "Item Journal Line"; var NonDistrQuantity: Decimal; NonDistrQuantityBase: Decimal; var IsHandled: Boolean)` (integration)
- `OnBeforeCollectItemLedgEntries(var TempItemLedgEntry: Record "Item Ledger Entry" temporary; SourceType: Integer; DocumentNo: Code[20]; LineNo: Integer; BaseQty: Decimal; EntryReference: Integer; var IsHandled: Boolean)` (integration)
- `OnBeforeCheckMissingItemLedgers(var TempItemLedgEntry: Record "Item Ledger Entry" temporary; SourceType: Integer; DocumentNo: Code[20]; LineNo: Integer; BaseQty: Decimal; var IsHandled: Boolean)` (integration)
- `OnBeforeCheckItemLedgEntries(var TempItemLedgEntry: Record "Item Ledger Entry" temporary; LineRef: Integer; InvoicedEntry: Boolean; var IsHandled: Boolean)` (integration)
- `OnBeforeCheckValueEntries(var TempItemLedgEntry: Record "Item Ledger Entry" temporary; LineRef: Integer; InvoicedEntry: Boolean; var IsHandled: Boolean)` (integration)
- `OnBeforePostItemJnlLine(var ItemJournalLine: Record "Item Journal Line"; TempApplyToItemLedgEntry: Record "Item Ledger Entry" temporary)` (integration)
- `OnBeforePostItemJnlLineForJob(var ItemJournalLine: Record "Item Journal Line"; var IsHandled: Boolean)` (integration)
- `OnBeforePostItemJnlLineAppliedToList(ItemJnlLine: Record "Item Journal Line"; var TempApplyToItemLedgEntry: Record "Item Ledger Entry" temporary; UndoQty: Decimal; UndoQtyBase: Decimal; var TempItemLedgEntry: Record "Item Ledger Entry" temporary; var TempItemEntryRelation: Record "Item Entry Relation" temporary; InvoicedEntry: Boolean; var IsHandled: Boolean)` (integration)
- `OnBeforeReapplyJobConsumption(ItemRcptEntryNo: Integer; var IsHandled: Boolean)` (integration)
- `OnBeforeRevertPostedItemTracking(var TempItemLedgerEntry: Record "Item Ledger Entry" temporary; AvailabilityDate: Date; RevertInvoiced: Boolean; var IsHandled: Boolean)` (integration)
- `OnBeforeRevertPostedItemTrackingFromPurchLine(PurchLine: Record "Purchase Line"; var TempUndoneItemLedgEntry: Record "Item Ledger Entry" temporary; var IsHandled: Boolean)` (integration)
- `OnBeforePurchLineReserveVerifyQuantity(PurchLine: Record "Purchase Line"; xPurchLine: Record "Purchase Line"; var IsHandled: Boolean)` (integration)
- `OnBeforeRevertPostedItemTrackingFromSalesLine(SalesLine: Record "Sales Line"; var TempUndoneItemLedgEntry: Record "Item Ledger Entry" temporary; var IsHandled: Boolean)` (integration)
- `OnBeforeSalesLineReserveVerifyQuantity(SalesLine: Record "Sales Line"; xSalesLine: Record "Sales Line"; var IsHandled: Boolean)` (integration)
- `OnBeforeTestAllTransactions(UndoType: Integer; UndoID: Code[20]; UndoLineNo: Integer; SourceType: Integer; SourceSubtype: Integer; SourceID: Code[20]; SourceRefNo: Integer)` (integration)
- `OnBeforeTestTransferShptLine(var TransferShipmentLine: Record "Transfer Shipment Line"; var IsHandled: Boolean)` (integration)
- `OnBeforeTestPostedInvtPickLine(UndoLineNo: Integer; SourceType: Integer; SourceSubtype: Integer; SourceID: Code[20]; SourceRefNo: Integer; var IsHandled: Boolean; UndoType: Integer; UndoID: Code[20])` (integration)
- `OnBeforeTestPostedInvtPutAwayLine(UndoLineNo: Integer; SourceType: Integer; SourceSubtype: Integer; SourceID: Code[20]; SourceRefNo: Integer; var IsHandled: Boolean; UndoType: Integer; UndoID: Code[20])` (integration)
- `OnBeforeTestPostedWhseShipmentLine(UndoLineNo: Integer; SourceType: Integer; SourceSubtype: Integer; SourceID: Code[20]; SourceRefNo: Integer; var IsHandled: Boolean; UndoType: Integer; UndoID: Code[20])` (integration)
- `OnBeforeTestRgstrdWhseActivityLine(UndoLineNo: Integer; SourceType: Integer; SourceSubtype: Integer; SourceID: Code[20]; SourceRefNo: Integer; var IsHandled: Boolean)` (integration)
- `OnBeforeTestWarehouseActivityLine(UndoType: Option; UndoLineNo: Integer; SourceType: Integer; SourceSubtype: Integer; SourceID: Code[20]; SourceRefNo: Integer; var IsHandled: Boolean)` (integration)
- `OnBeforeTestWarehouseEntry(UndoLineNo: Integer; var PostedWhseReceiptLine: Record "Posted Whse. Receipt Line"; var IsHandled: Boolean)` (integration)
- `OnBeforeTestWarehouseReceiptLine(UndoLineNo: Integer; SourceType: Integer; SourceSubtype: Integer; SourceID: Code[20]; SourceRefNo: Integer; var IsHandled: Boolean)` (integration)
- `OnBeforeTestWarehouseShipmentLine(UndoLineNo: Integer; SourceType: Integer; SourceSubtype: Integer; SourceID: Code[20]; SourceRefNo: Integer; var IsHandled: Boolean)` (integration)
- `OnBeforeTestWhseWorksheetLine(UndoLineNo: Integer; SourceType: Integer; SourceSubtype: Integer; SourceID: Code[20]; SourceRefNo: Integer; var IsHandled: Boolean)` (integration)
- `OnBeforeUndoValuePostingFromJob(var ItemJournalLine: Record "Item Journal Line"; var IsHandled: Boolean)` (integration)
- `OnCheckItemLedgEntriesOnBeforeCheckTempItemLedgEntry(var TempItemLedgEntry: Record "Item Ledger Entry" temporary; var IsHandled: Boolean)` (integration)
- `OnPostItemJnlLineAppliedToListOnBeforeTempItemEntryRelationInsert(var TempItemEntryRelation: Record "Item Entry Relation" temporary; ItemJournalLine: Record "Item Journal Line")` (integration)
- `OnPostItemJnlLineAppliedToListOnAfterPostItemJnlLine(var ItemJournalLine: Record "Item Journal Line"; TempApplyToItemLedgEntry: Record "Item Ledger Entry" temporary)` (integration)
- `OnPostItemJnlLineAppliedToListOnAfterSetInvoicedQty(var ItemJournalLine: Record "Item Journal Line"; TempApplyToItemLedgEntry: Record "Item Ledger Entry" temporary)` (integration)
  - subscribers: [Codeunit 6225 "Sust. Purchase Subscriber"](../codeunit/6225.md) OnPostItemJnlLineAppliedToListOnAfterSetInvoicedQty, [Codeunit 6253 "Sust. Sales Subscriber"](../codeunit/6253.md) OnPostItemJnlLineAppliedToListOnAfterSetInvoicedQty, [Codeunit 6285 "Sust. Service Subscriber"](../codeunit/6285.md) OnPostItemJnlLineAppliedToListOnAfterSetInvoicedQty, [Codeunit 99000784 "Mfg. Undo Purch. Rcpt. Line"](../codeunit/99000784.md) OnPostItemJnlLineAppliedToListOnAfterSetInvoicedQty
- `OnUpdateSalesLineOnBeforeInitOustanding(var SalesLine: Record "Sales Line"; var UndoQty: Decimal; var UndoQtyBase: Decimal)` (integration)
  - subscribers: [Codeunit 8063 "Sales Documents"](../codeunit/8063.md) UpdateInvoicedQtyOnSalesLineAfterUndoShipment
- `OnPostItemJnlLineOnBeforePostJobConsumption(var ItemJnlLine2: Record "Item Journal Line"; var IsHandled: Boolean)` (integration)
- `OnPostItemJnlLineOnBeforePostItemJnlLineForJob(var ItemJnlLine2: Record "Item Journal Line"; var IsHandled: Boolean; var ItemJnlLine: Record "Item Journal Line"; var PostJobConsumptionBeforePurch: Boolean)` (integration)
- `OnBeforeTestWarehouseActivityLine2(var WarehouseActivityLine: Record "Warehouse Activity Line"; var IsHandled: Boolean)` (integration)
- `OnRevertPostedItemTrackingOnBeforeReservEntryInsert(var ReservationEntry: Record "Reservation Entry"; var TempItemLedgerEntry: Record "Item Ledger Entry" temporary)` (integration)
- `OnTestWarehouseEntryOnAfterSetFilters(var WarehouseEntry: Record "Warehouse Entry"; PostedWhseReceiptLine: Record "Posted Whse. Receipt Line")` (integration)
- `OnUpdatePurchLineOnAfterSetQtyToShip(var PurchLine: Record "Purchase Line")` (integration)
- `OnUpdatePurchLineOnAfterSetQtyToReceive(var PurchLine: Record "Purchase Line")` (integration)
- `OnUpdatePurchLineOnBeforePurchLineModify(var PurchLine: Record "Purchase Line")` (integration)
- `OnUpdateSalesLineOnBeforeSalesLineModify(var SalesLine: Record "Sales Line")` (integration)
  - subscribers: [Codeunit 8063 "Sales Documents"](../codeunit/8063.md) RevertInvoicedQuantityOnUpdateSalesLineOnBeforeSalesLineModify
- `OnBeforeUpdatePurchLine(PurchaseLine: Record "Purchase Line"; var UndoQty: Decimal; var UndoQtyBase: Decimal; var TempUndoneItemLedgEntry: Record "Item Ledger Entry" temporary; var IsHandled: Boolean)` (integration)
- `OnAfterTestAllTransactions(UndoType: Integer; UndoID: Code[20]; UndoLineNo: Integer; SourceType: Integer; SourceSubtype: Integer; SourceID: Code[20]; SourceRefNo: Integer)` (integration)
- `OnBeforeUpdateTransLine(TransLine: Record "Transfer Line"; var UndoQty: Decimal; var UndoQtyBase: Decimal; var TempUndoneItemLedgEntry: Record "Item Ledger Entry" temporary; var IsHandled: Boolean)` (integration)
- `OnBeforeUpdateSalesLine(SalesLine: Record "Sales Line"; var UndoQty: Decimal; var UndoQtyBase: Decimal; var TempUndoneItemLedgEntry: Record "Item Ledger Entry" temporary; var IsHandled: Boolean)` (integration)
- `OnRevertPostedItemTrackingOnBeforeUpdateReservEntry(var TempItemLedgEntry: Record "Item Ledger Entry" temporary; var TrackingSpecification: Record "Tracking Specification"; var IsHandled: Boolean)` (integration)
- `OnTestAllTransactionsOnBeforeTestWarehouseActivityLine(UndoType: Integer; UndoID: Code[20]; UndoLineNo: Integer; SourceType: Integer; SourceSubtype: Integer; SourceID: Code[20]; SourceRefNo: Integer; var IsHandled: Boolean)` (integration)
- `OnUpdateSalesLineOnAfterUpdateWithWarehouseShipForReturnOrder(var SalesLine: Record "Sales Line")` (integration)
- `OnBeforeTestRgstrdWhseActivityLine2(var PostedWhseReceiptLine: Record "Posted Whse. Receipt Line"; var IsHandled: Boolean)` (integration)
- `OnShouldRevertBaseQtySign(SourceType: Integer; var RevertSign: Boolean)` (integration)
  - subscribers: [Codeunit 6484 "Serv. Undo Posting Mgt."](../codeunit/6484.md) OnShouldCollectSourceType
- `OnSkipTestWarehouseShipmentLine(UndoType: Integer; var SkipTest: Boolean)` (integration)
  - subscribers: [Codeunit 6484 "Serv. Undo Posting Mgt."](../codeunit/6484.md) OnSkipTestWarehouseShipmentLine
- `OnRevertPostedItemTrackingOnBeforeGetTrackingSpecification(var TempItemLedgerEntry: Record "Item Ledger Entry" temporary; var IsHandled: Boolean)` (integration)
- `OnUpdateDerivedTransferLineOnAfterTransferTracking(var TransferLine: Record "Transfer Line"; var TransferShipmentLine: Record "Transfer Shipment Line"; var DerivedTransferLine: Record "Transfer Line")` (integration)
- `OnCollectOutputItemLedgEntriesForSubcontructingPurcReceiptLine(var TempItemLedgerEntry: Record "Item Ledger Entry" temporary; PurchRcptLine: Record "Purch. Rcpt. Line"; var Result: Boolean)` (integration)
  - subscribers: [Codeunit 99000784 "Mfg. Undo Purch. Rcpt. Line"](../codeunit/99000784.md) OnCollectOutputItemLedgEntriesForSubcontructingPurcReceiptLine
- `OnPostItemJnlLineAppliedToListOnAfterInsertTempItemLedgEntry(var ItemJournalLine: Record "Item Journal Line"; TempApplyToItemLedgerEntry: Record "Item Ledger Entry" temporary)` (integration)

## Procedures

- `TestTransferShptLine(TransferShptLine: Record "Transfer Shipment Line")`
- `TestSalesShptLine(SalesShptLine: Record "Sales Shipment Line")`
- `TestPurchRcptLine(PurchRcptLine: Record "Purch. Rcpt. Line")`
- `TestReturnShptLine(ReturnShptLine: Record "Return Shipment Line")`
- `TestReturnRcptLine(ReturnRcptLine: Record "Return Receipt Line")`
- `TestAsmHeader(PostedAsmHeader: Record "Posted Assembly Header")`
- `TestAsmLine(PostedAsmLine: Record "Posted Assembly Line")`
- `RunTestAllTransactions(UndoType: Integer; UndoID: Code[20]; UndoLineNo: Integer; SourceType: Integer; SourceSubtype: Integer; SourceID: Code[20]; SourceRefNo: Integer)`
- `TestAllTransactions(UndoType: Integer; UndoID: Code[20]; UndoLineNo: Integer; SourceType: Integer; SourceSubtype: Integer; SourceID: Code[20]; SourceRefNo: Integer)`
- `CheckItemLedgEntries(var TempItemLedgEntry: Record "Item Ledger Entry" temporary; LineRef: Integer)`
- `CheckItemLedgEntries(var TempItemLedgEntry: Record "Item Ledger Entry" temporary; LineRef: Integer; InvoicedEntry: Boolean)`
- `PostItemJnlLineAppliedToList(ItemJnlLine: Record "Item Journal Line"; var TempApplyToItemLedgEntry: Record "Item Ledger Entry" temporary; UndoQty: Decimal; UndoQtyBase: Decimal; var TempItemLedgEntry: Record "Item Ledger Entry" temporary; var TempItemEntryRelation: Record "Item Entry Relation" temporary)`
- `PostItemJnlLineAppliedToList(ItemJnlLine: Record "Item Journal Line"; var TempApplyToItemLedgEntry: Record "Item Ledger Entry" temporary; UndoQty: Decimal; UndoQtyBase: Decimal; var TempItemLedgEntry: Record "Item Ledger Entry" temporary; var TempItemEntryRelation: Record "Item Entry Relation" temporary; InvoicedEntry: Boolean)`
- `AreAllItemEntriesCompletelyInvoiced(var TempApplyToItemLedgEntry: Record "Item Ledger Entry" temporary): Boolean`
- `CollectItemLedgEntries(var TempItemLedgEntry: Record "Item Ledger Entry" temporary; SourceType: Integer; DocumentNo: Code[20]; LineNo: Integer; BaseQty: Decimal; EntryRef: Integer)`
- `CollectOutputItemLedgEntriesForSubcontructingPurcReceiptLine(var TempItemLedgEntry: Record "Item Ledger Entry" temporary; PurchRcptLine: Record "Purch. Rcpt. Line"): Boolean` (internal)
- `UpdatePurchLine(PurchLine: Record "Purchase Line"; UndoQty: Decimal; UndoQtyBase: Decimal; var TempUndoneItemLedgEntry: Record "Item Ledger Entry" temporary)`
- `UpdateSalesLine(SalesLine: Record "Sales Line"; UndoQty: Decimal; UndoQtyBase: Decimal; var TempUndoneItemLedgEntry: Record "Item Ledger Entry" temporary)`
- `UpdateDerivedTransferLine(var TransferLine: Record "Transfer Line"; var TransferShptLine: Record "Transfer Shipment Line")` (internal)
- `UpdateTransLine(TransferLine: Record "Transfer Line"; UndoQty: Decimal; UndoQtyBase: Decimal; var TempUndoneItemLedgEntry: Record "Item Ledger Entry" temporary)`
- `RevertPostedItemTracking(var TempItemLedgEntry: Record "Item Ledger Entry" temporary; AvailabilityDate: Date; RevertInvoiced: Boolean)`
- `PostItemJnlLine(var ItemJnlLine: Record "Item Journal Line")`
- `TransferSourceValues(var ItemJnlLine: Record "Item Journal Line"; EntryNo: Integer)`
- `ReapplyJobConsumption(ItemRcptEntryNo: Integer)`
- `FindItemReceiptApplication(var ItemApplnEntry: Record "Item Application Entry"; ItemRcptEntryNo: Integer)`
- `FindItemShipmentApplication(var ItemApplnEntry: Record "Item Application Entry"; ItemShipmentEntryNo: Integer)`
- `UpdatePurchaseLineOverRcptQty(PurchaseLine: Record "Purchase Line"; OverRcptQty: Decimal)`
- `UpdateWarehouseRequest(SourceType: Integer; SourceSubtype: Integer; SourceNo: Code[20]; LocationCode: Code[10])`

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 22 "Item Jnl.-Post Line"](../codeunit/22.md) (5 calls: `PostItemJnlLine → (object)`, `PostItemJnlLineForJob → (object)`, `ReapplyJobConsumption → ReApply`, …)
- [Codeunit 6500 "Item Tracking Management"](../codeunit/6500.md) (4 calls: `AdjustQuantityRounding → AdjustQuantityRounding`, `CheckMissingItemLedgers → CollectItemEntryRelation`, `TransferTracking → ComposeRowID`, …)
- [Codeunit 5775 "Whse. Management"](../codeunit/5775.md) (2 calls: `TestPostedWhseShipmentLine → SetSourceFilterForPostedWhseShptLine`, `TestWarehouseReceiptLine → SetSourceFilterForWhseRcptLine`)
- [Codeunit 99000836 "Transfer Line-Reserve"](../codeunit/99000836.md) (2 calls: `TransferLineReserveVerifyQuantity → VerifyQuantity`, `TransferTracking → FindReservEntrySet`)
- [Codeunit 5760 "Whse.-Post Receipt"](../codeunit/5760.md) (1 call: `TestWarehouseEntry → IsReceiptForJob`)
- [Codeunit 7320 "Whse. Undo Quantity"](../codeunit/7320.md) (1 call: `TestPostedWhseReceiptLine → FindPostedWhseRcptLine`)
- [Codeunit 99000830 "Create Reserv. Entry"](../codeunit/99000830.md) (1 call: `UpdateTransferQuantity → TransferReservEntry`)
- [Codeunit 99000831 "Reservation Engine Mgt."](../codeunit/99000831.md) (1 call: `RevertPostedItemTracking → UpdateOrderTracking`)
- [Codeunit 99000832 "Sales Line-Reserve"](../codeunit/99000832.md) (1 call: `SalesLineReserveVerifyQuantity → VerifyQuantity`)
- [Codeunit 99000834 "Purch. Line-Reserve"](../codeunit/99000834.md) (1 call: `PurchLineReserveVerifyQuantity → VerifyQuantity`)

## Called by

- [Codeunit 5813 "Undo Purchase Receipt Line"](../codeunit/5813.md) (14 calls: `CheckPurchRcptLine → CheckItemLedgEntries`, `CheckPurchRcptLine → CollectItemLedgEntries`, `CheckPurchRcptLine → CollectOutputItemLedgEntriesForSubcontructingPurcReceiptLine`, …)
- [Codeunit 5814 "Undo Return Shipment Line"](../codeunit/5814.md) (8 calls: `CheckReturnShptLine → CheckItemLedgEntries`, `CheckReturnShptLine → CollectItemLedgEntries`, `CheckReturnShptLine → TestReturnShptLine`, …)
- [Codeunit 5815 "Undo Sales Shipment Line"](../codeunit/5815.md) (7 calls: `CheckSalesShptLine → CheckItemLedgEntries`, `CheckSalesShptLine → CollectItemLedgEntries`, `CheckSalesShptLine → TestSalesShptLine`, …)
- [Codeunit 5816 "Undo Return Receipt Line"](../codeunit/5816.md) (6 calls: `CheckReturnRcptLine → CheckItemLedgEntries`, `CheckReturnRcptLine → CollectItemLedgEntries`, `CheckReturnRcptLine → TestReturnRcptLine`, …)
- [Codeunit 9030 "Undo Transfer Shipment"](../codeunit/9030.md) (6 calls: `CheckTransferShptLine → CheckItemLedgEntries`, `CheckTransferShptLine → CollectItemLedgEntries`, `CheckTransferShptLine → TestTransferShptLine`, …)
- [Codeunit 900 "Assembly-Post"](../codeunit/900.md) (5 calls: `CheckPossibleToUndo → CheckItemLedgEntries`, `CheckPossibleToUndo → CollectItemLedgEntries`, `CheckPossibleToUndo → TestAsmHeader`, …)
- [Codeunit 5818 "Undo Service Shipment Line"](../codeunit/5818.md) (4 calls: `CheckServShptLine → CheckItemLedgEntries`, `CheckServShptLine → CollectItemLedgEntries`, `PostItemJnlLine → CollectItemLedgEntries`, …)
- [Codeunit 5819 "Undo Service Consumption Line"](../codeunit/5819.md) (4 calls: `CheckServShptLine → CheckItemLedgEntries`, `CheckServShptLine → CollectItemLedgEntries`, `PostItemJnlLineWithIT → CollectItemLedgEntries`, …)
- [Codeunit 6484 "Serv. Undo Posting Mgt."](../codeunit/6484.md) (4 calls: `RevertPostedItemTrackingFromServiceLine → RevertPostedItemTracking`, `TestServShptLine → TestAllTransactions`, `UpdateServLine → UpdateWarehouseRequest`, …)
- [Codeunit 1303 "Correct Posted Sales Invoice"](../codeunit/1303.md) (2 calls: `UpdateSalesOrderLinesFromCancelledInvoice → RevertPostedItemTracking`, `UpdateSalesOrderLinesFromCreditMemo → RevertPostedItemTracking`)
- [Codeunit 1313 "Correct Posted Purch. Invoice"](../codeunit/1313.md) (2 calls: `UpdatePurchaseOrderLinesFromCancelledInvoice → RevertPostedItemTracking`, `UpdatePurchaseOrderLinesFromCreditMemo → RevertPostedItemTracking`)

## Recent changes

- 2026-08-20 [#10254 Fix 644744: Undo subcontracting receipt keys Item Entry Relation with Capacity Ledger Entry No.](../../changes/bcapps/10254.md) (main, BC30, fix)

## Across versions

- Present in: BC23-30
- Changed (declaration) in: BC25-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: "codeunit", object_name: "Undo Posting Management")`, then `bcatlas_get_procedure_body` or `bcatlas_get_neighbors` on the returned id.
