---
id: object/codeunit/99000831
type: object
title: Codeunit 99000831 "Reservation Engine Mgt."
summary: Codeunit 99000831 "Reservation Engine Mgt." in Base Application (Microsoft.Inventory.Tracking). 28 public procedures, 32 events. Present since at least BC23, still in BC30, changed in BC25-27.
tier: official
language: en
tags:
  - codeunit
  - base application
versions:
  introduced: null
  last_changed: "27"
  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: 371ddca5e427fc6a736d4074c5a0b66ed6d7fd3480ad90d5962cf6e3c8e1fb9f
evidence:
  - kind: code
    url: https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Layers/W1/BaseApp/Inventory/Tracking/ReservationEngineMgt.Codeunit.al
    title: src/Layers/W1/BaseApp/Inventory/Tracking/ReservationEngineMgt.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: 99000831
name: Reservation Engine Mgt.
namespace: Microsoft.Inventory.Tracking
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"
source_major: "29"
obsolete: null
countries: []
ms_search_form_ids: []
counts:
  fields: 0
  procedures: 76
  events: 32
  subscribers: 0
relations:
  out: 0
  referenced_by: 0
  pages: 0
  extended_by: 0
  event_subscribers: 40
  calls: 1
  called_by: 31
  implements: 0
---

# Codeunit 99000831 "Reservation Engine Mgt."

> Codeunit 99000831 "Reservation Engine Mgt." in Base Application (Microsoft.Inventory.Tracking). 28 public procedures, 32 events. Present since at least BC23, still in BC30, changed in BC25-27.

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

## Properties

| Property | Value |
|---|---|
| Permissions | TableData "Item Ledger Entry" = rm, TableData "Reservation Entry" = rimd, TableData "Action Message Entry" = rid |

## Events published

- `OnAfterCancelReservation(ReservationEntry3: Record "Reservation Entry"; ReservationEntry: Record "Reservation Entry")` (integration)
- `OnAfterCreateText(ReservationEntry: Record "Reservation Entry"; var SourceTypeText: Text)` (integration)
- `OnCreateText(ReservationEntry: Record "Reservation Entry"; var Description: Text[80])` (integration)
  - subscribers: [Codeunit 1032 "Job Planning Line-Reserve"](../codeunit/1032.md) OnAfterCreateText, [Codeunit 5854 "Invt. Doc. Line-Reserve"](../codeunit/5854.md) OnAfterCreateText, [Codeunit 925 "Assembly Header-Reserve"](../codeunit/925.md) OnAfterCreateText, [Codeunit 926 "Assembly Line-Reserve"](../codeunit/926.md) OnAfterCreateText, [Codeunit 99000832 "Sales Line-Reserve"](../codeunit/99000832.md) OnAfterCreateText, [Codeunit 99000833 "Req. Line-Reserve"](../codeunit/99000833.md) OnAfterCreateText, [Codeunit 99000834 "Purch. Line-Reserve"](../codeunit/99000834.md) OnAfterCreateText, [Codeunit 99000835 "Item Jnl. Line-Reserve"](../codeunit/99000835.md) OnAfterCreateText, [Codeunit 99000836 "Transfer Line-Reserve"](../codeunit/99000836.md) OnAfterCreateText, [Codeunit 99000837 "Prod. Order Line-Reserve"](../codeunit/99000837.md) OnAfterCreateText, [Codeunit 99000838 "Prod. Order Comp.-Reserve"](../codeunit/99000838.md) OnAfterCreateText, [Codeunit 99000840 "Plng. Component-Reserve"](../codeunit/99000840.md) OnAfterCreateText, [Codeunit 99000841 "Item Ledger Entry-Reserve"](../codeunit/99000841.md) OnAfterCreateText, [Codeunit 99000842 "Service Line-Reserve"](../codeunit/99000842.md) OnAfterCreateText, [Codeunit 99000844 "Job Jnl. Line-Reserve"](../codeunit/99000844.md) OnAfterCreateText
- `OnAfterItemTrackingMismatch(ReservationEntry: Record "Reservation Entry"; ItemTrackingSetup: Record "Item Tracking Setup"; var IsMismatch: Boolean)` (integration)
  - subscribers: [Codeunit 6516 "Package Management"](../codeunit/6516.md) ReservEngineMgtItemTrackingMismatch
- `OnAfterModifyExpectedReceiptDate(var ReservationEntry2: Record "Reservation Entry"; var ReservationEntry: Record "Reservation Entry")` (integration)
- `OnAfterModifyReservEntry(var ReservEntry: Record "Reservation Entry")` (integration)
- `OnAfterModifyShipmentDate(var ReservationEntry2: Record "Reservation Entry"; var ReservationEntry: Record "Reservation Entry")` (integration)
- `OnAfterSetItemTracking2(var TrackingSpecification: Record "Tracking Specification"; ReservationEntry: Record "Reservation Entry")` (integration)
- `OnBeforeCancelReservation(var ReservEntry: Record "Reservation Entry"; var IsHandled: Boolean)` (integration)
- `OnBeforeCloseReservEntry(var ReservEntry: Record "Reservation Entry"; var ReTrack: Boolean; DeleteAll: Boolean; var SkipDeleteReservEntry: Boolean)` (integration)
- `OnBeforeModifyReservEntry(ReservEntry: Record "Reservation Entry"; NewQuantity: Decimal; NewDescription: Text[100]; ModifyReserved: Boolean)` (integration)
- `OnBeforeUpdateItemTracking(var ReservEntry: Record "Reservation Entry"; var TrackingSpecification: Record "Tracking Specification")` (integration)
- `OnCancelReservationOnBeforeDoCancel(ReservationEntry3: Record "Reservation Entry"; ReservationEntry: Record "Reservation Entry"; var DoCancel: Boolean)` (integration)
- `OnInitRecordSetOnBeforeCheckItemTrackingExists(var CarriesItemTracking: Boolean; var TempSortRec1: Record "Reservation Entry" temporary; var IsHandled: Boolean)` (integration)
- `OnModifyReservEntryOnAfterExistingReservEntryModify(var ReservEntry: Record "Reservation Entry")` (integration)
- `OnModifyReservEntryOnBeforeExistingReservEntryModify(var ReservEntry: Record "Reservation Entry")` (integration)
- `OnNextRecordOnAfterFilterTempSortRec2(var TempSortReservEntry2: Record "Reservation Entry"; TempSortReservEntry1: Record "Reservation Entry")` (integration)
- `OnGetActivePointerFieldsOnBeforeAssignArrayValues(TableID: Integer; var PointerFieldIsActive: array[6] of Boolean; var IsHandled: Boolean)` (integration)
  - subscribers: [Codeunit 1032 "Job Planning Line-Reserve"](../codeunit/1032.md) OnGetActivePointerFieldsOnBeforeAssignArrayValues, [Codeunit 5854 "Invt. Doc. Line-Reserve"](../codeunit/5854.md) OnGetActivePointerFieldsOnBeforeAssignArrayValues, [Codeunit 925 "Assembly Header-Reserve"](../codeunit/925.md) OnGetActivePointerFieldsOnBeforeAssignArrayValues, [Codeunit 926 "Assembly Line-Reserve"](../codeunit/926.md) OnGetActivePointerFieldsOnBeforeAssignArrayValues, [Codeunit 99000832 "Sales Line-Reserve"](../codeunit/99000832.md) OnGetActivePointerFieldsOnBeforeAssignArrayValues, [Codeunit 99000833 "Req. Line-Reserve"](../codeunit/99000833.md) OnGetActivePointerFieldsOnBeforeAssignArrayValues, [Codeunit 99000834 "Purch. Line-Reserve"](../codeunit/99000834.md) OnGetActivePointerFieldsOnBeforeAssignArrayValues, [Codeunit 99000835 "Item Jnl. Line-Reserve"](../codeunit/99000835.md) OnGetActivePointerFieldsOnBeforeAssignArrayValues, [Codeunit 99000836 "Transfer Line-Reserve"](../codeunit/99000836.md) OnGetActivePointerFieldsOnBeforeAssignArrayValues, [Codeunit 99000837 "Prod. Order Line-Reserve"](../codeunit/99000837.md) OnGetActivePointerFieldsOnBeforeAssignArrayValues, [Codeunit 99000838 "Prod. Order Comp.-Reserve"](../codeunit/99000838.md) OnGetActivePointerFieldsOnBeforeAssignArrayValues, [Codeunit 99000840 "Plng. Component-Reserve"](../codeunit/99000840.md) OnGetActivePointerFieldsOnBeforeAssignArrayValues, [Codeunit 99000842 "Service Line-Reserve"](../codeunit/99000842.md) OnGetActivePointerFieldsOnBeforeAssignArrayValues, [Codeunit 99000844 "Job Jnl. Line-Reserve"](../codeunit/99000844.md) OnGetActivePointerFieldsOnBeforeAssignArrayValues
- `OnCancelReservationOnAfterDoCancel(ReservEntry: Record "Reservation Entry"; SurplusReservEntry: Record "Reservation Entry")` (integration)
- `OnModifyItemTrackingOnTempRecOnBeforeModifyReservEntry(var ReservEntry: Record "Reservation Entry")` (integration)
- `OnAfterCloseReservEntry(var ReservEntry: Record "Reservation Entry")` (integration)
- `OnCloseReservEntryOnAfterReservEntry2Get(var ReservEntry2: Record "Reservation Entry"; var ReservEntry: Record "Reservation Entry")` (integration)
- `OnCloseReservEntryOnAfterGetItem(var ReservationEntry: Record "Reservation Entry"; var Item: Record Item)` (integration)
- `OnCloseReservEntryOnBeforeDeleteReservEntry2(var ReservEntry2: Record "Reservation Entry"; OriginalReservEntry2: Record "Reservation Entry")` (integration)
- `OnCloseReservEntryOnBeforeModifyReservEntry2(var ReservEntry2: Record "Reservation Entry"; OriginalReservEntry2: Record "Reservation Entry")` (integration)
- `OnSetItemTracking2OnBeforeShouldRaiseCannotStateItemTrackingError(TempReservEntry2: Record "Reservation Entry"; var TrackingSpecification2: Record "Tracking Specification"; var ShouldRaiseError: Boolean)` (integration)
- `OnBeforeSetKeyAndFilters(var ReservationEntry: Record "Reservation Entry"; var IsHandled: Boolean)` (integration)
- `OnBeforeModifyReservEntryOnCheckNewQuantity(var ReservEntry: Record "Reservation Entry"; var NewQuantity: Decimal; NewDescription: Text[100]; var ModifyReserved: Boolean; var IsHandled: Boolean)` (integration)
- `OnBeforeModifyItemTrkgByReservStatus(var TempReservationEntry: Record "Reservation Entry" temporary; var TrackingSpecification: Record "Tracking Specification"; ReservStatus: Enum "Reservation Status"; var QtyToAdd: Decimal; var QtyToAddAsBlank: Decimal; ItemTrackingCode: Record "Item Tracking Code"; var IsHandled: Boolean)` (integration)
- `OnRevertDateToSourceDate(var ReservEntry: Record "Reservation Entry")` (integration)
  - subscribers: [Codeunit 99000832 "Sales Line-Reserve"](../codeunit/99000832.md) OnRevertDateToSourceDate, [Codeunit 99000834 "Purch. Line-Reserve"](../codeunit/99000834.md) OnRevertDateToSourceDate, [Codeunit 99000836 "Transfer Line-Reserve"](../codeunit/99000836.md) OnRevertDateToSourceDate, [Codeunit 99000837 "Prod. Order Line-Reserve"](../codeunit/99000837.md) OnRevertDateToSourceDate, [Codeunit 99000838 "Prod. Order Comp.-Reserve"](../codeunit/99000838.md) OnRevertDateToSourceDate, [Codeunit 99000840 "Plng. Component-Reserve"](../codeunit/99000840.md) OnRevertDateToSourceDate, [Codeunit 99000841 "Item Ledger Entry-Reserve"](../codeunit/99000841.md) OnRevertDateToSourceDate, [Codeunit 99000842 "Service Line-Reserve"](../codeunit/99000842.md) OnRevertDateToSourceDate
- `OnModifyActionMessageDatingOnGetDampenerPeriod(ReservEntry: Record "Reservation Entry"; var DampenerPeriod: Dateformula)` (integration)
  - subscribers: [Codeunit 99000891 "Mfg. Item Tracking Mgt."](../codeunit/99000891.md) OnModifyActionMessageDatingOnGetDampenerPeriod
- `OnAfterShouldModifyActionMessageDating(ReservationEntry: Record "Reservation Entry"; var Result: Boolean)` (integration)
  - subscribers: [Codeunit 99000891 "Mfg. Item Tracking Mgt."](../codeunit/99000891.md) OnAfterShouldModifyActionMessageDating

## Procedures

- `CancelReservation(ReservEntry: Record "Reservation Entry")`
- `ChangeDateFieldOnReservEntry(var ReservEntry: Record "Reservation Entry"; ExpectedReceiptDate: Date; ShipmentDate: Date)`
- `CloseReservEntry(ReservEntry: Record "Reservation Entry"; ReTrack: Boolean; DeleteAll: Boolean)`
- `CloseSurplusTrackingEntry(ReservEntry: Record "Reservation Entry")`
- `ModifyReservEntry(ReservEntry: Record "Reservation Entry"; NewQuantity: Decimal; NewDescription: Text[100]; ModifyReserved: Boolean)`
- `CreateForText(ReservEntry: Record "Reservation Entry"): Text[80]`
- `CreateFromText(ReservEntry: Record "Reservation Entry"): Text[80]`
- `CreateText(ReservEntry: Record "Reservation Entry"): Text[80]`
- `ModifyShipmentDate(var ReservEntry: Record "Reservation Entry"; NewShipmentDate: Date)`
- `ModifyExpectedReceiptDate(var ReservEntry: Record "Reservation Entry"; NewExpectedReceiptDate: Date)`
- `InitFilterAndSortingFor(var FilterReservEntry: Record "Reservation Entry"; SetFilters: Boolean)`
- `InitFilterAndSortingLookupFor(var FilterReservEntry: Record "Reservation Entry"; SetFilters: Boolean)`
- `ModifyUnitOfMeasure(var ReservEntry: Record "Reservation Entry"; NewQtyPerUnitOfMeasure: Decimal)`
- `ModifyActionMessageDating(var ReservEntry: Record "Reservation Entry")`
- `AddItemTrackingToTempRecSet(var TempReservEntry: Record "Reservation Entry" temporary; var TrackingSpecification: Record "Tracking Specification"; QtyToAdd: Decimal; var QtyToAddAsBlank: Decimal; ItemTrackingCode: Record "Item Tracking Code"): Decimal`
- `CollectAffectedSurplusEntries(var TempReservEntry: Record "Reservation Entry" temporary): Boolean`
- `UpdateOrderTracking(var TempReservEntry: Record "Reservation Entry" temporary)`
- `UpdateActionMessages(SurplusEntry: Record "Reservation Entry")`
- `InitRecordSet(var ReservEntry: Record "Reservation Entry"): Boolean`
- `InitRecordSet(var ReservEntry: Record "Reservation Entry"; CurrItemTrackingSetup: Record "Item Tracking Setup"): Boolean`
- `NEXTRecord(var ReservEntry: Record "Reservation Entry"): Integer`
- `RenamePointer(TableID: Integer; OldSubtype: Integer; OldID: Code[20]; OldBatchName: Code[10]; OldProdOrderLine: Integer; OldRefNo: Integer; NewSubtype: Integer; NewID: Code[20]; NewBatchName: Code[10]; NewProdOrderLine: Integer; NewRefNo: Integer)`
- `SplitTrackingConnection(ReservEntry2: Record "Reservation Entry"; NewDate: Date)`
- `RetrieveLostReservQty(var LostQuantity: Decimal): Boolean`
- `ResvExistsForSalesHeader(var SalesHeader: Record "Sales Header"): Boolean`
- `ResvExistsForPurchHeader(var PurchHeader: Record "Purchase Header"): Boolean`
- `ResvExistsForTransHeader(var TransHeader: Record "Transfer Header"): Boolean`
- `ResvExistsForHeader(var ReservEntry: Record "Reservation Entry"): Boolean`

Plus 16 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 99000845 "Reservation Management"](../codeunit/99000845.md) (14 calls: `CloseReservEntry → AutoTrack`, `CloseReservEntry → IssueActionMessage`, `CloseReservEntry → MatchSurplus`, …)

## Called by

- [Codeunit 22 "Item Jnl.-Post Line"](../codeunit/22.md) (5 calls: `ApplyItemLedgEntry → CloseReservEntry`, `ApplyItemLedgEntry → CloseSurplusTrackingEntry`, `ReservationPreventsApplication → CreateForText`, …)
- [Page 6510 "Item Tracking Lines"](../page/6510.md) (5 calls: `ProcessLateBinding → RetrieveLostReservQty`, `RegisterChange → AddItemTrackingToTempRecSet`, `RegisterChange → UpdateActionMessages`, …)
- [Codeunit 99000815 "Reservation-Check Date Confl."](../codeunit/99000815.md) (4 calls: `UpdateDate → CloseReservEntry`, `UpdateDate → ModifyExpectedReceiptDate`, `UpdateDate → ModifyShipmentDate`, …)
- [Codeunit 1032 "Job Planning Line-Reserve"](../codeunit/1032.md) (3 calls: `TransferJobLineToItemJnlLine → InitRecordSet`, `TransferJobLineToItemJnlLine → NEXTRecord`, `UpdateReservationsWhenPostingJobPlaningLineNegativeAdjFromPO → CloseReservEntry`)
- [Codeunit 5854 "Invt. Doc. Line-Reserve"](../codeunit/5854.md) (3 calls: `RenameLine → RenamePointer`, `TransferInvtDocToItemJnlLine → InitRecordSet`, `TransferInvtDocToItemJnlLine → NEXTRecord`)
- [Codeunit 99000838 "Prod. Order Comp.-Reserve"](../codeunit/99000838.md) (3 calls: `ReservEntryExist → InitFilterAndSortingLookupFor`, `TransferPOCompToItemJnlLineCheckILE → InitRecordSet`, `TransferPOCompToItemJnlLineCheckILE → NEXTRecord`)
- [Codeunit 6452 "Serv. Availability Mgt."](../codeunit/6452.md) (2 calls: `OnCancelReservations → CancelReservation`, `OnCancelReservations → InitFilterAndSortingFor`)
- [Codeunit 925 "Assembly Header-Reserve"](../codeunit/925.md) (2 calls: `TransferAsmHeaderToItemJnlLine → InitRecordSet`, `TransferAsmHeaderToItemJnlLine → NEXTRecord`)
- [Codeunit 926 "Assembly Line-Reserve"](../codeunit/926.md) (2 calls: `TransferAsmLineToItemJnlLine → InitRecordSet`, `TransferAsmLineToItemJnlLine → NEXTRecord`)
- [Codeunit 99000778 "OrderTrackingManagement"](../codeunit/99000778.md) (2 calls: `InsertOrderTrackingEntry → CreateForText`, `InsertOrderTrackingEntry → CreateFromText`)
- [Codeunit 99000832 "Sales Line-Reserve"](../codeunit/99000832.md) (2 calls: `TransferSalesLineToItemJnlLine → InitRecordSet`, `TransferSalesLineToItemJnlLine → NEXTRecord`)
- [Codeunit 99000834 "Purch. Line-Reserve"](../codeunit/99000834.md) (2 calls: `TransferPurchLineToItemJnlLine → InitRecordSet`, `TransferPurchLineToItemJnlLine → NEXTRecord`)
- [Codeunit 99000836 "Transfer Line-Reserve"](../codeunit/99000836.md) (2 calls: `TransferWhseShipmentToItemJnlLine → InitRecordSet`, `TransferWhseShipmentToItemJnlLine → NEXTRecord`)
- [Codeunit 99000837 "Prod. Order Line-Reserve"](../codeunit/99000837.md) (2 calls: `TransferPOLineToItemJnlLine → InitRecordSet`, `TransferPOLineToItemJnlLine → NEXTRecord`)
- [Codeunit 99000842 "Service Line-Reserve"](../codeunit/99000842.md) (2 calls: `TransServLineToItemJnlLine → InitRecordSet`, `TransServLineToItemJnlLine → NEXTRecord`)
- [Codeunit 99000845 "Reservation Management"](../codeunit/99000845.md) (2 calls: `ModifyUnitOfMeasure → ModifyUnitOfMeasure`, `UpdateDating → ModifyActionMessageDating`)
- [Codeunit 99000871 "Job Planning Availability Mgt."](../codeunit/99000871.md) (2 calls: `OnCancelReservations → CancelReservation`, `OnCancelReservations → InitFilterAndSortingFor`)
- [Codeunit 99000872 "Sales Availability Mgt."](../codeunit/99000872.md) (2 calls: `OnCancelReservations → CancelReservation`, `OnCancelReservations → InitFilterAndSortingFor`)
- [Codeunit 5817 "Undo Posting Management"](../codeunit/5817.md) (1 call: `RevertPostedItemTracking → UpdateOrderTracking`)
- [Codeunit 5819 "Undo Service Consumption Line"](../codeunit/5819.md) (1 call: `InsertNewReservationEntries → UpdateOrderTracking`)
- [Codeunit 6500 "Item Tracking Management"](../codeunit/6500.md) (1 call: `CopyItemLedgEntryTrkgToSalesLn → UpdateOrderTracking`)
- [Codeunit 6620 "Copy Document Mgt."](../codeunit/6620.md) (1 call: `SetTrackingOnAssemblyReservation → AddItemTrackingToTempRecSet`)
- [Codeunit 7307 "Whse.-Activity-Register"](../codeunit/7307.md) (1 call: `CheckAndRemoveOrderToOrderBinding → CancelReservation`)
- [Codeunit 99000835 "Item Jnl. Line-Reserve"](../codeunit/99000835.md) (1 call: `RenameLine → RenamePointer`)
- [Codeunit 99000844 "Job Jnl. Line-Reserve"](../codeunit/99000844.md) (1 call: `RenameLine → RenamePointer`)
- [Codeunit 99000854 "Inventory Profile Offsetting"](../codeunit/99000854.md) (1 call: `CloseTracking → CloseReservEntry`)
- [Page 497 "Reservation Entries"](../page/497.md) (1 call: `OnModifyRecord → ModifyReservEntry`)
- [Table 209 "Job Journal Template"](../table/209.md) (1 call: `OnRename → RenamePointer`)
- [Table 36 "Sales Header"](../table/36.md) (1 call: `ConfirmReservationDateConflict → ResvExistsForSalesHeader`)
- [Table 82 "Item Journal Template"](../table/82.md) (1 call: `OnRename → RenamePointer`)
- [Table 904 "Assemble-to-Order Link"](../table/904.md) (1 call: `RemoveTrackingFromReservation → AddItemTrackingToTempRecSet`)

## Across versions

- Present in: BC23-30
- Changed (declaration) in: BC25-27

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: "Reservation Engine Mgt.")`, then `bcatlas_get_procedure_body` or `bcatlas_get_neighbors` on the returned id.
