bcquality/microsoft/knowledge/scm/cancel-reservations-through-reservation-management.md
Jesper Schulz-Wedde bec8890b7e
Add SCM functional knowledge domain (#192)
* Add SCM functional knowledge domain

Introduce nine source-backed rules with original AL sample pairs, bounded SCM review routing, and complete positive/clean evaluation coverage.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

* Normalize SCM knowledge and review ownership

Align article and AL sample conventions, keep BC facts separate from review mechanics, and clarify reciprocal Finance ownership without bespoke shared test assertions.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: Jesper Schulz-Wedde <jesper.schulzwedde@microsoft.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
2026-09-21 10:16:44 +02:00

2.8 KiB

bc-version domain keywords technologies countries application-area
all
scm
reservation-entry
cancelreservation
reservation-engine-mgt
reservation-status
order-tracking
disallow-cancellation
al
w1
all

Cancel reservations through reservation management

Description

Persistent "Reservation Entry" rows are not disposable allocation markers. Reservation and Tracking links use an entry-number pair with opposite Positive values, while Surplus and Prospect entries can legitimately be unpaired. Cancelling a binding reservation must handle its counterpart and any remaining item tracking or order tracking, not just remove a row.

Best Practice

Explicit cancellation of an existing binding reservation uses "Reservation Engine Mgt.".CancelReservation. It checks the reservation status and "Disallow Cancellation", handles the counterpart, and preserves or retracks the remaining source quantities as appropriate. Source-line quantity changes have their own source-specific reservation management path.

Not every Reservation Entry has a partner or identical lot/serial values on both sides: Surplus/Prospect entries and supported late-binding scenarios have different relationships. Temporary buffers, engine-owned updates, and supported publisher metadata are not independent cancellation. Cancelling a reservation is also different from intentionally removing an item-tracking assignment.

The samples retrieve the negative side of a persistent sales-line reservation and cancel only the binding. They do not delete the sales line or remove its tracking specifications.

See sample: cancel-reservations-through-reservation-management.good.al.

Anti Pattern

Delete(true), DeleteAll, or a status/source rewrite on persistent "Reservation Entry" records does not perform binding-reservation cancellation. Even deleting both sides can discard tracking that should survive and omit retracking.

Normal processing of temporary Prospect/Surplus buffers is outside that cancellation workflow, and an unpaired row is not intrinsically an orphan.

See sample: cancel-reservations-through-reservation-management.bad.al.

References