# Stock Reservation — User & Administration Guide

**Module:** Materials Management (MM)
**Version:** GB5 v1.0
**Date:** June 2026

---

## Table of Contents

1. [What Is Stock Reservation?](#1-what-is-stock-reservation)
2. [Key Concepts & Terminology](#2-key-concepts--terminology)
3. [Reservation Status Reference](#3-reservation-status-reference)
4. [End User Guide — Daily Operations](#4-end-user-guide--daily-operations)
   - 4.1 Reserve from Physical Stock
   - 4.2 Reserve from Pipeline (Incoming Document)
   - 4.3 Unreserve — Full
   - 4.4 Unreserve — Partial
   - 4.5 Free Track a Demand
   - 4.6 Reassign a Reservation
   - 4.7 Post-Production / Post-Purchase Assignment
   - 4.8 MRP Auto-Reserve and Confirm
   - 4.9 Lot/Batch-Level Reservation (Matrix)
   - 4.10 Subcontracting Material View
5. [Administration Guide](#5-administration-guide)
   - 5.1 Reservation Configuration
   - 5.2 Auto-Number Setup
   - 5.3 User Roles & Permissions
   - 5.4 Audit Trail
   - 5.5 Period-End Procedures
6. [Marketing & Sales Perspective](#6-marketing--sales-perspective)

---

## 1. What Is Stock Reservation?

In manufacturing and trading businesses, the same materials serve multiple demands simultaneously. Without a reservation system, two problems occur:

- **Over-promising:** Sales commits to a delivery date without knowing those materials are already earmarked for another order.
- **Priority conflicts:** On the production floor, whoever "grabs first" gets the material — regardless of which customer order matters most.

**Stock Reservation** solves both by formally linking a supply source to a specific demand, so that:
- The material is logically "spoken for" even before it physically moves.
- Every department sees the same committed picture.
- Priorities can be managed, changed, or re-routed in a controlled, auditable way.

### What Can Be Reserved?

| Material Type | Examples | Reserved Against |
|---|---|---|
| Raw Materials (RM) | Sheet metal, chemicals, fabric rolls | Production indents, work orders |
| Sub-assemblies / WIP | Partially machined parts, semi-finished frames | Next-stage production orders |
| Finished Goods (FG) | Packed, labelled product ready for dispatch | Sales orders, customer deliveries |

### Where Can Supply Come From?

| Source | Description |
|---|---|
| **Physical Stock** | Material already in the warehouse — confirmed, counted, available now |
| **Pipeline Document** | Material on a Purchase Order or Transfer — expected but not yet received |

---

## 2. Key Concepts & Terminology

| Term | Plain Language Meaning |
|---|---|
| **Demand** | Something that needs material — a Sales Order, Work Indent, Production Order |
| **Supply** | Something that provides material — stock in a store, or an incoming purchase/production |
| **Reserve** | Link a supply to a demand so the supply is "held" for that demand |
| **Unreserve** | Undo a reservation — the supply becomes free again |
| **Free Track** | Tell the system "this demand doesn't need a formal reservation" — material flows freely without reservation enforcement |
| **Reassign** | Move an existing reservation from one demand to another |
| **Tentative** | A planning-stage reservation created by MRP — not yet confirmed by a user |
| **Confirmed** | A reservation that is active and binding; material is committed |
| **Released** | A reservation that was explicitly unreserved; kept in history for audit |
| **Reservation Number** | Auto-generated unique reference. Format: `SR/YYYYMM/NNNNN` (e.g., `SR/202606/00042`). Free-Track numbers use prefix `FT/`. |
| **Balance Quantity** | ReservedQuantity − IssuedQuantity = the amount still available to be issued or released |
| **Pipeline** | Material on an incoming Purchase Order or Transfer Order — not yet physically received |

---

## 3. Reservation Status Reference

| Status | Label in System | What It Means |
|---|---|---|
| 1 | **Tentative** | Created by MRP auto-reserve. Awaits planner review and confirmation. |
| 2 | **Confirmed** | Active reservation. Supply is committed to this demand. |
| 3 | **Released** | Unreserved. Stock or pipeline returned to the available pool. Kept for audit. |
| 4 | **Reassigned** | Original reservation was moved to a new demand. Kept for audit chain. |
| 5 | **FreeTracked** | Demand was explicitly excluded from reservation enforcement. |
| 6 | **PartiallyFulfilled** | Some quantity issued; remainder still reserved. |
| 7 | **FullyFulfilled** | All reserved quantity has been issued. Reservation is closed. |
| 8 | **SubcontractingOut** | Reserved material is currently at an external subcontractor. |

---

## 4. End User Guide — Daily Operations

### 4.1 Reserve from Physical Stock

**When to use:** Material is already in the warehouse and you want to earmark it for a specific demand.

**Who performs this:** Planning Manager, Materials Controller

```
Step 1: Navigate to MM → Stock Reservation
        → Click "New Reservation"
        → Select Source: "Stock"

Step 2: Fill in the Reservation form:
        ┌────────────────────────────────────────────────────────────┐
        │ Reservation Date:    [Today's date — must be in open period]│
        │ Organizational Unit: [Select your OU]                       │
        │ For Document:        [e.g., Sales Order SO-2026-001]         │
        │ For Document Line:   [Select line item]                     │
        │ Item:                [Item code or name]                    │
        │ SKU:                 [Size / variant]                       │
        │ From Store:          [Select store]                         │
        │ Reserved Quantity:   [Enter quantity]                       │
        └────────────────────────────────────────────────────────────┘

Step 3: System validates available quantity in the selected store.
        If insufficient: "Insufficient available quantity." — choose a different
        store or reduce quantity.

Step 4: Click Save.
        → Reservation Number assigned automatically: SR/202606/00042
        → Status: Confirmed
        → Stock available quantity in that store decreases by the reserved amount
        → SO-2026-001 shows: Reserved ✓
```

**What changes in the system:**
- `TSTOCKPOSITION.RESERVEDQUANTITY` increases by reserved quantity
- New `TRESERVATION` row created, Status = Confirmed

---

### 4.2 Reserve from Pipeline (Incoming Document)

**When to use:** Material is not in stock yet, but is expected from a Purchase Order or Transfer. You want to earmark the incoming quantity for a specific demand.

**Who performs this:** Planning Manager, Materials Controller

```
Step 1: Navigate to MM → Stock Reservation → New Reservation
        → Select Source: "Document / Pipeline"

Step 2: Fill in the form:
        ┌────────────────────────────────────────────────────────────┐
        │ Reservation Date:     [Must be within open financial period]│
        │ For Document:         [Work Indent WI-2026-088]             │
        │ For Document Line:    [Select line]                         │
        │ Item / SKU:           [Steel Grade A]                       │
        │ From Document:        [PO-2026-055 — Supplier: ABC Steel]   │
        │ From Document Line:   [Select allocation line]              │
        │ Reserved Quantity:    [200 kg]                              │
        └────────────────────────────────────────────────────────────┘

Step 3: Click Save.
        → Reservation Number: SR/202606/00043
        → Status: Confirmed
        → PO-2026-055 pending allocation reduced by 200 kg
        → WI-2026-088 shows: Reserved 200 kg / Required 200 kg → Fully Reserved ✓
```

**What changes in the system:**
- `TPENDINGALLOCATION.PENDINGQUANTITY` decreases for the supply-side PO line
- New `TRESERVATION` row created, Source = Document

---

### 4.3 Unreserve — Full Release

**When to use:** An order is cancelled, or you need to return the material to the available pool entirely.

**Who performs this:** Planning Manager

```
Step 1: Open the reservation (via SO/WO screen or Reservation List)
Step 2: Click "Unreserve"
Step 3: Enter Reason (mandatory): e.g., "SO-2026-001 cancelled by customer"
Step 4: Click Confirm

Result:
  → Reservation Status: Released
  → Stock / pipeline quantity restored to available pool
  → Record retained in history for audit
```

**Restriction:** You cannot unreserve a quantity that has already been issued. The unreservable amount is the **Balance Quantity** (Reserved − Issued).

---

### 4.4 Unreserve — Partial

**When to use:** The customer reduced their order quantity; you only need to release a portion.

```
Step 1: Open the reservation (Status: Confirmed, e.g., 500 units reserved, 0 issued)
Step 2: Click "Partial Unreserve"
Step 3: Enter:
        Release Quantity: 200
        Reason: "Customer reduced order from 500 to 300 units"
Step 4: Click Confirm

Result:
  → Reservation quantity drops from 500 to 300 units
  → 200 units returned to available pool
  → Status remains Confirmed (still active for remaining 300)
```

**Validation:** Release Quantity must not exceed Balance Quantity.

---

### 4.5 Free Track a Demand

**When to use:** A demand does not need formal reservation tracking — for example, blanket/pull-based orders, internal R&D consumption, or ad-hoc trial batches.

**Who performs this:** Planning Manager (restricted — all free-track entries are visible in audit reports)

```
Step 1: Select the demand line (e.g., Internal Indent INT-2026-010)
Step 2: Click "Free Track"
Step 3: Fill in:
        ┌────────────────────────────────────────────────────────────┐
        │ For Document:  [INT-2026-010]                              │
        │ Item / SKU:    [Component Y]                               │
        │ Reason:        "Internal R&D sample — no stock commitment" │
        └────────────────────────────────────────────────────────────┘
Step 4: Click Save

Result:
  → Free-Track Number: FT/202606/00044
  → Status: FreeTracked
  → No stock quantities are blocked
  → Appears in reservation reports as "Free-Tracked" — distinguishable from
    "Not Reserved" (a deliberate, visible decision)
```

**Restriction:** If an active confirmed reservation already exists for this demand+item, the system blocks free-track: *"Unreserve the existing reservation before marking as Free-Tracked."*

---

### 4.6 Reassign a Reservation

**When to use:** A higher-priority demand needs the material currently reserved for a lower-priority demand.

**Who performs this:** Planning Manager, Senior Materials Controller

```
Scenario: 500 units reserved for SO-2026-001 (low priority).
          Urgent SO-2026-099 (export, fixed deadline) needs the same stock.

Step 1: Open reservation for SO-2026-001
Step 2: Click "Reassign"
Step 3: Fill in:
        ┌────────────────────────────────────────────────────────────┐
        │ New For Document:  [SO-2026-099]                           │
        │ Reassign Quantity: [500] (or partial amount)               │
        │ Reason:            "Priority escalation — SO-099 is export │
        │                     shipment with fixed deadline"          │
        └────────────────────────────────────────────────────────────┘
Step 4: Click Confirm

Result:
  → Original reservation SR/.../0042 (SO-2026-001) → Status: Reassigned
  → New reservation SR/.../0047 (SO-2026-099) → Status: Confirmed
  → Stock position unchanged — same supply, new demand
  → Full reassignment audit trail preserved in Reassignment Log
```

**Validations:**
- Only **Confirmed** reservations can be reassigned.
- Reassign quantity cannot exceed Balance Quantity.
- New demand must differ from original demand.

---

### 4.7 Post-Production / Post-Purchase Assignment

**When to use:** Material was produced or purchased without a prior reservation. Stock is now in the warehouse and needs to be linked to waiting demands.

```
Scenario: Production batch PROD-2026-300 completed — 1000 units of Product Y.
          Multiple SOs are waiting without reservations.

Step 1: Navigate to MM → Stock Reservation → New Reservation
        → Source: Stock
Step 2: Select From Store (where the batch is now stored)
Step 3: For each waiting SO, create individual reservations:
        SO-2026-200 → 300 units → Save
        SO-2026-210 → 250 units → Save
        SO-2026-220 → 450 units → Save (partial — only 450 of 600 available)

Result: 3 Confirmed reservations created (Mode: Standalone)
```

---

### 4.8 MRP Auto-Reserve and Confirm

**When to use:** After an MRP (Material Requirements Planning) run completes, the system automatically creates tentative reservations based on MRP demand pegging.

#### Auto-Reserve (Automated — triggered by MRP)

The MRP process calls AutoReserve, which:
1. Reads all demand lines from the MRP run.
2. For each demand, finds available stock across stores.
3. Creates **Tentative** reservations automatically.
4. Produces a shortage report for demands that could not be fully covered.

#### Post-Planning Review (Planner action)

```
After MRP Run completes, Planner opens Post-Planning Review:

  ┌─────────────────────────────────────────────────────────────────────────┐
  │ Item        │ For Demand  │ Source         │ Qty   │ Status    │ Short  │
  ├─────────────┼─────────────┼────────────────┼───────┼───────────┼────────┤
  │ Steel 2mm   │ WI-2026-088 │ PO-055 (15 Jun)│ 200kg │ Tentative │ None   │
  │ Paint Red   │ WI-2026-089 │ Store A        │ 50L   │ Tentative │ None   │
  │ Bearing 6205│ WI-2026-090 │ (None)         │ 80pcs │ —         │ 80 ⚠  │
  └─────────────────────────────────────────────────────────────────────────┘

Planner actions:
  → Click "Confirm All" to activate all valid tentative reservations
  OR
  → Select individual lines → "Confirm" or "Reject" per line
  → For shortages: create purchase request or source from alternative
```

---

### 4.9 Lot/Batch-Level Reservation (Matrix Context)

**When to use:** A production Matrix specifies that a particular input lot must be used. The reservation must lock that specific lot — no substitution allowed.

```
Scenario: Matrix M-001 requires 200 kg of Resin from Lot B-2026-010

When Matrix M-001 is activated:
  → System auto-creates lot-level reservation:
     From: Store A, Item: Resin, Lot: B-2026-010, Quantity: 200 kg
     For: Matrix M-001
     Lot Locked: YES ✓

Effect on Issue Screen:
  → Only Lot B-2026-010 is shown as an issuable source for this Matrix
  → Other lots of Resin are not available for this issue
  → Any attempt to issue a different lot is blocked:
     "Only Lot B-2026-010 is allowed for this lot-locked reservation"
```

---

### 4.10 Subcontracting Material View

When reserved material is sent to an external subcontractor for processing (heat treatment, powder coating, etc.), the reservation status changes to **SubcontractingOut**. The material is still linked to the original demand.

**Subcon Tracking Report** (MM → Subcon Tracking):

```
┌──────────────────────────────────────────────────────────────────────────────┐
│ Reservation  │ Item   │ Qty │ For Demand   │ Subcontractor  │ Sent   │ Due   │
├──────────────┼────────┼─────┼──────────────┼────────────────┼────────┼───────┤
│ SR/202606/042│ Part A │ 500 │ WO-2026-015  │ HeatTech Ltd   │ 01-Jun │ 08-Jun│
│ SR/202606/044│ Frame B│ 200 │ WO-2026-016  │ PowerCoat Inc  │ 03-Jun │ 10-Jun│
└──────────────────────────────────────────────────────────────────────────────┘
⚠ SR/202606/042 — past expected return date
```

**Key behaviour:**
- Material at subcontractor does NOT appear as "available stock" for any other reservation.
- On return, a quality check is performed. Accepted quantity becomes Confirmed again.
- Process loss (e.g., 500 sent, 490 returned) is recorded; reserved quantity adjusts to actual returned.

---

## 5. Administration Guide

### 5.1 Reservation Configuration

| Setting | Description | How to Configure |
|---|---|---|
| **BizTransactionType → Reservation Nature** | Mark a transaction type as Demand or Supply so it appears in reservation selection screens | MM Setup → BizTransactionType Master |
| **Financial Period** | Reservation date must fall within an open financial period — enforced automatically | Finance → Period Management |
| **Assignment Level Defaults** | Configure which assignment levels apply per module (Project / Document / FG / SubItem / RM) | MM Setup → Reservation Policy |
| **AutoLink on PO Creation** | For trade/BO items: auto-create pipeline reservation when a linked PO is confirmed | MM Setup → Procurement Linkage Policy |

---

### 5.2 Auto-Number Setup

Two auto-number series must be configured before go-live:

| Series Key | Format Suggestion | Used For |
|---|---|---|
| `STOCKRESERVATION` | `SR/YYYYMM/NNNNN` | All reservation documents (Regular, AutoLinked, MRP, Matrix) |
| `REASSIGNMENTLOG` | Sequential integer | Internal reassignment audit log entries |

**To configure:** Finance / Admin → Auto-Number Master → Add entry with key `STOCKRESERVATION` and set starting number.

---

### 5.3 User Roles & Permissions

| Action | Recommended Role |
|---|---|
| View reservation list | Planning Manager, Production Supervisor, Sales Coordinator |
| View single reservation details | Planning Manager, Production Supervisor, Sales Coordinator |
| Create standalone reservation | Planning Manager, Materials Controller |
| Partial or full unreserve | Planning Manager (reason mandatory) |
| Reassign reservation | Planning Manager, Senior Materials Controller |
| Free-Track a demand | Planning Manager (audit-visible — restricted) |
| Confirm tentative from MRP | Planner, Planning Manager |
| Run Auto-Reserve for MRP | Planning Manager, System (automated) |
| Mark subcon out / return | Production Supervisor, Materials Controller |
| View reassignment audit log | Management, Audit/Compliance |
| View subcon tracking report | Production Supervisor, Materials Controller, Management |

---

### 5.4 Audit Trail

Every reservation action is permanently logged with:
- **Who:** User ID and name
- **When:** Exact timestamp (UTC)
- **What changed:** Previous and new status
- **Why:** Reason (mandatory for unreserve and reassign)

**Reassignment chain:** `TREASSIGNMENTLOG` stores the complete chain — you can trace a piece of stock from its original reservation through every reassignment to its final issue.

**Event log entries** are created (via Dapr pub/sub) for every write operation, categorized under `StockReservation` event category. Retention: 365 days.

---

### 5.5 Period-End Procedures

At financial period close:

1. **Review Tentative reservations** — Confirm or reject all Tentative reservations before the period closes. Tentative reservations from MRP runs that are not confirmed remain unresolved.

2. **Reservation Aging Report** — Flag reservations older than a configured threshold with no issue activity. Take action: extend, reassign, or release.

3. **Free-Tracked demand review** — Confirm that no demand was incorrectly marked as Free-Tracked. Free-Track is a deliberate exception — it should not be a default.

4. **Reconciliation check** — Verify that `TSTOCKPOSITION.RESERVEDQUANTITY` for each item/store equals the sum of active stock-source reservations (Confirmed status, not deleted):
   ```sql
   SELECT ItemId, StoreId,
          SUM(RESERVEDQUANTITY) AS TotalActive
   FROM   TRESERVATION
   WHERE  RESERVATIONSTATUS  = 2   -- Confirmed
     AND  RESERVATIONSOURCE  = 0   -- Stock
     AND  ISDELETED          = 0
   GROUP  BY ItemId, StoreId
   ```
   Compare against `TSTOCKPOSITION.RESERVEDQUANTITY` for each row.

5. **Subcon overdue review** — Open the Subcon Tracking Report and follow up on all items past their expected return date.

---

## 6. Marketing & Sales Perspective

### Business Value — "Reserve with Confidence, Deliver with Certainty"

The Stock Reservation system gives your team the ability to:

1. **Commit to orders knowing materials are secured** — Reserve FG or RM for a specific customer order the moment it is confirmed. Every downstream team sees that commitment immediately.

2. **Manage priority customers** — When demand exceeds supply, shift reservations to higher-priority orders in seconds. Free the material from one order and re-assign it to another, with a full trail of why it was moved.

3. **Sell from incoming pipeline, not just shelves** — Reserve materials from a pending PO or an in-progress production run. A customer order placed today can be linked to a production batch completing next week.

4. **Avoid allocation conflicts** — Two salespeople can no longer independently promise the same stock. Once reserved, the material is off-limits for others unless explicitly released.

5. **"Free Track" for flexible accounts** — Some customers operate on pull-based delivery (blanket orders). Mark those demands as Free Track — they bypass reservation checks but still appear in reports as a deliberate decision.

### Key Scenarios Sales Cares About

| Scenario | What the System Does |
|---|---|
| Customer confirms order → materials in stock | Sales reserves FG instantly; dispatch team sees Confirmed reservation |
| Customer confirms order → materials in production | Sales reserves against the production batch; system tracks expected availability |
| Customer cancels order | Reservation Released; stock/pipeline becomes available for next demand |
| Priority customer needs same stock as lower-priority order | Reassign: release from low-priority SO, reserve for high-priority SO, log reason |
| High-volume key account — no per-order tracking needed | Free-track the demand; material flows without reservation enforcement |

### Reporting Visibility for Sales

- **Reservation Status Dashboard:** Which SOs are Fully Reserved / Partially Reserved / Not Reserved?
- **Shortage Report** (from MRP Auto-Reserve run): Which demands have insufficient stock or pipeline?
- **Reservation History:** Who reserved what, when, and for which order — fully auditable.
- **Subcon Tracking:** Which reserved materials are currently at external processors and when they're expected back.
