Access to add and change pages is restricted. See: https://cwiki.apache.org/confluence/display/OFBIZ/Wiki+access

Table Of Contents

  • Executive Summary
  • Business Context
  • Fit With Apache OFBiz
  • Business Need
  • Actors
  • Process Flow Diagram
  • Business Process Story
  • Business Rules & Constraints
  • Edge Cases And Alternate Scenarios
  • Overarching Requirements
  • Future Scope

Executive Summary

This document defines the business requirements for a directed, system-guided Inventory Cycle Count capability for Apache OFBiz® Inventory Management. Many warehouse operations running Apache OFBiz still fall back on manual, spreadsheet-based inventory counts because the application has no built-in way to direct, track, and reconcile a count without pausing normal warehouse activity. This capability closes that gap: a Supervisor creates a Cycle Count by selecting SKU to verify (by Inventory Item, Location, LPN, or a combination, or via CSV import); a Worker counts each resulting Count Item individually; and any variance from the expected system quantity is routed to the Supervisor for review before inventory records change. The goal is to eliminate the inaccuracies introduced by manual counting, keep counting running alongside normal warehouse activity without disruption, and maintain a complete, auditable record of every count and adjustment.

Business Context

Inventory is commonly verified through full manual counts recorded in spreadsheets and then re-keyed into the system of record after the fact. Because this process is manual and disconnected from real-time inventory transactions, it produces recurring inaccuracies and data-entry errors, and it typically requires pausing or working around normal warehouse activity to complete. Businesses running Apache OFBiz's Inventory Management application need a controlled, auditable way to validate inventory and correct discrepancies continuously, in smaller segments, without stopping fulfillment operations.

Fit With Apache OFBiz

Apache OFBiz already provides a basic Physical Inventory capability in its Inventory Management application: a Physical Inventory record can be created together with an Inventory Item Variance in a single step, adjusting the on-hand quantity for one inventory item against a variance reason. This existing capability has no concept of grouping counts into a broader counting exercise, assigning or self-assigning individual count tasks, locking inventory while it is being counted, or routing a variance through a review and accept/reject/recount decision before it posts. It is a direct, one-step adjustment tool, not a directed, auditable counting workflow. This proposal is new, from-scratch functionality built on top of that existing data and does not replace or duplicate it; the existing variance-reason concept is reused (see BR-006) rather than reinvented.

For readers mapping this document's business terms to Apache OFBiz concepts: "SKU" refers to a Product; "Location" refers to a Facility Location within a Facility; "LPN" has no dedicated first-class entity in Apache OFBiz today and is used here as a business-facing term for a license-plate-style handling unit, most likely realized against the existing Container entity during solution design. These mappings are provided for orientation only; the concrete data model is a solution design concern, not a business requirement.

Business Need

Warehouse operations need a controlled, auditable way to replace manual, spreadsheet-based inventory counting with a directed, system-guided cycle counting capability that keeps counting running alongside normal warehouse activity, corrects on-hand inventory accurately, and gives the finance function a reliable basis for assessing the financial risk created by inventory inaccuracies.

Stakeholders

  • Workers and Supervisors: execute and review inventory counts and are the primary users of this capability.
  • Warehouse operations: affected broadly, since inaccurate on-hand inventory disrupts fulfillment reliability and inventory planning.
  • Finance and accounting stakeholders: have an interest in the outcome, since inventory adjustments produced by cycle counts affect inventory valuation and the ability to assess the financial risk created by inventory inaccuracy. This reflects an interest in the outcome, not a request to build financial reporting features in this initial capability.

Pain Points

  • User/operational pain: Workers compile counts in spreadsheets and re-key them into the system of record after the fact, disconnected from live inventory transactions.
  • Business pain: The gap between manual counting and system records produces recurring inaccuracies and errors that undermine inventory reliability.

Workflow Dependencies

  • Downstream dependencies: Order fulfillment, inventory planning, and the finance function depend on inventory records that reliably reflect physical stock, so fulfillment and planning decisions aren't based on stale or incorrect quantities, and finance can assess the real financial impact of inventory inaccuracies and related operational risk.

Actors

  • Supervisor is the person who directs the counting process and holds sole review and approval authority: deciding whether to accept, reject, or recount each submitted Count Item, and force-unlocking one when the warehouse needs that inventory urgently. The Supervisor is also the only actor who can manually complete a Cycle Count.

  • Worker is the person who executes counting tasks, either by self-assigning an open Count Item or receiving one directly from a Supervisor. The Worker holds no approval or adjustment authority; by default, a Worker who originally counted an item also receives its recount (BR-007), though the Supervisor may override this.

No other actors participate in this process; financial/reporting stakeholders are not process participants in this initial capability.

Process Flow Diagram


Business Process Story

BPS-001: Create Cycle Count

Supervisor creates a Cycle Count when inventory needs verification. Supervisor records the selected SKU, Location, and/or LPN combinations, directly or via CSV import, so that a Cycle Count is created containing one Count Item per selection (BR-001, BR-002).

BPS-002: Assign Count Item

Supervisor assigns an individual Count Item to a specific Worker when the Cycle Count has been created. Supervisor records the assignment, or leaves the item unassigned, so that different Count Items in the same Cycle Count can go to different Workers or sit in an open pool, each retaining its own assignment state independently of the others (BR-002).

Alternate or exception flow: Worker self-assigns an open Count Item instead of receiving a direct assignment (BPS-003).

BPS-003: Self-Assign Count Item

Worker self-assigns an open Count Item from the pool when the item is unassigned and the Worker has capacity. Worker records the self-assignment so that counting can begin without waiting for a Supervisor to assign it.

BPS-004: Start Count Item

Worker opens the assigned Count Item when ready to count. The inventory at that location/LPN remains unlocked until this point; it locks the moment the Worker opens the item, not earlier at creation, so that counting can proceed without interference (BR-003).

BPS-005: Record Count

Worker scans the location, scans the LPN, and verifies the SKU when physically present at the assigned location. Worker records the physically observed quantity so that it can be compared against the expected system quantity.

Alternate or exception flow: If the inventory is not found, Worker records it as not found (EC-001). If the inventory is reserved or otherwise unavailable, Worker skips the item (EC-002).

BPS-006: Review Submitted Count

Supervisor reviews a submitted Count Item when it carries any variance between counted and expected system quantity. Supervisor reviews the counted and expected quantities so that a decision, accept, reject, or recount, can be made immediately, without waiting for other Count Items in the same Cycle Count to finish; no inventory adjustment occurs until that decision is recorded (BR-005).

BPS-007: Accept Count

Supervisor accepts the submitted count when confirming it is accurate. Supervisor records the acceptance so that the inventory balance is adjusted using reason code "Cycle Count," the lock is released, and the Count Item is marked Completed (BR-006).

BPS-008: Reject Count

Supervisor rejects the submitted count when determining it is invalid. Supervisor records the rejection so that the Count Item is permanently closed as Rejected, the lock is released, and no inventory adjustment occurs.

BPS-009: Request Recount

Supervisor requests a recount when not confident in the submitted count. Supervisor records the recount request so that the original Count Item closes as superseded and a new Count Item is created in the same Cycle Count, defaulting to the original Worker (BR-007).

Alternate or exception flow: Supervisor overrides the default and assigns the recount to a different Worker. A recount may itself be recounted, with no limit (EC-004).

BPS-010: Force-Unlock Count Item

Supervisor force-unlocks a submitted, pending-review Count Item when the warehouse needs that inventory urgently, for example for an order, before review is complete. Supervisor records the force-unlock so that the lock releases for the new reservation and the Count Item automatically becomes Rejected (BR-008, EC-003).

Alternate or exception flow: Force-unlock is only available once the Count Item has been submitted, never while a Worker is still actively counting.

BPS-011: Complete Cycle Count

Supervisor manually completes a Cycle Count once every Count Item within it has reached a terminal state. Supervisor records this completion action explicitly; the Cycle Count does not complete on its own, even once every Count Item is Completed, Rejected, Cancelled, Discarded, or Recounted-and-resolved. Once recorded, the Cycle Count is marked complete (BR-009).

Business Rules & Constraints

BR-001: Manual Cycle Count Creation

Cycle Count and Count Item creation is manual: the Supervisor selects SKU, Location, and/or LPN combinations, or imports a CSV file. No rule-based or scheduled automatic generation exists in this initial capability, though it may be revisited later.

Related: BPS-001

BR-002: Multiple Count Items, Split Assignment

A single Cycle Count may contain multiple Count Items, and different Count Items within the same Cycle Count may be assigned to different Workers or left in an open pool.

Related: BPS-001, BPS-002, BPS-003

BR-003: Lock Begins On Start, Not Creation

The inventory lock for a Count Item begins only when a Worker opens that specific item, not at Cycle Count or Count Item creation, so lock timing ties to the Worker's action rather than the record's creation.

Related: BPS-004

BR-004: Lock Persists Through Review

Once a Count Item is submitted, its lock remains active until the Supervisor makes a decision (Accept, Reject, or Recount) or force-unlocks it; submission alone does not release the lock. Force-unlock (BR-008) is the only override.

Related: BPS-005, BPS-006

BR-005: Zero-Tolerance Variance

Any variance between counted and expected system quantity, regardless of size, requires Supervisor review; there is no auto-accept threshold.

Related: BPS-006

BR-006: Single Reason Code

Approved adjustments are recorded using a single generic reason code, "Cycle Count." This reuses Apache OFBiz's existing variance-reason concept with one new reason value; a richer reason-code breakdown is out of scope for this initial capability.

Related: BPS-007

BR-007: Recount Defaults And Limits

A Supervisor may request a recount an unlimited number of times. A recount defaults to the original Worker, but the Supervisor may override and assign a different Worker.

Related: BPS-009

BR-008: Force-Unlock Is Post-Submission Only

A Supervisor may force-unlock a Count Item only after it has been submitted, never while a Worker is actively counting. Force-unlocking automatically transitions the Count Item to Rejected.

Related: BPS-010

BR-009: Cycle Count Completion Is Manual

Every Count Item within a Cycle Count reaching a terminal state, Completed, Rejected, Cancelled, Discarded, or Recounted-and-resolved, makes the Cycle Count eligible for completion, but does not complete it. Completion requires an explicit, manual action by the Supervisor; the Cycle Count does not auto-complete once its items are all terminal.

Related: BPS-001 through BPS-011

Edge Cases And Alternate Scenarios

EC-001: Inventory Not Found At Location

When a Worker cannot find the expected inventory at the assigned location, the Count Item is discarded and removed from the Worker's active pool, but it remains visible in Supervisor history for investigation. This differs from a recount; the inventory is presumed genuinely missing, not merely miscounted, so Supervisor follow-up is the next action rather than a new count attempt.

Related: BPS-005

EC-002: Inventory Reserved Or Unavailable

When inventory at the assigned location or LPN is reserved or otherwise operationally unavailable, the Worker skips the item. It remains in that same Worker's pool for a later retry, rather than being released to the general open pool.

Related: BPS-005

EC-003: Urgent Order Needs Locked Inventory

When an urgent order needs inventory currently locked by a submitted, pending-review Count Item, the Supervisor force-unlocks it: the lock releases for the new reservation and the Count Item automatically becomes Rejected. This action is only available once the Count Item has been submitted, never while a Worker is still actively counting.

Related: BPS-010; BR-008

EC-004: Recount Also Results In A Variance

If a recount also results in a variance, the Supervisor may request another recount. There is no system-enforced limit on the number of iterations, so this can repeat as many times as the Supervisor judges necessary.

Related: BPS-009; BR-007

Overarching Requirements

FR-001: Multi-Facility Support

The capability supports multiple warehouses/facilities, since adopting businesses commonly operate more than one.

FR-002: Single Facility Context Per Session

A Worker or Supervisor operates within a single facility context per session, preventing cross-facility mixing of counts and inventory actions.

FR-003: Full Audit Trail

The capability maintains a complete audit trail of Cycle Count creation, assignment, submissions, Supervisor decisions, recounts, force-unlocks, and inventory adjustments, including user and timestamp, so investigations, audits, and financial controls have a complete record to draw on.

Future Scope

  • Rule-based or scheduled automatic Cycle Count generation: creation is manual only for this initial capability; automation is a future candidate if manual selection proves insufficient at scale.
  • No labels