FR EN DE ES IT

Presentation Guide — WMS Module
Products, stock, warehouses, locations, movement orders, stock counts, lots and expiry dates: the core of GSE-Web

Everything you need to understand and show, explained simply, with real examples from the demo database (12 warehouses, 222 products, 36 movement orders, 82 lots — Efferalgan, Doliprane, Coca-Cola, FACOM tool case, movement order P100-2026-00009 and its backorder…).

Prepared on 05/09/2026 · Demo environment: https://app.gse-web.online → organisation demo → account demo@gse-web.online · password gse-web.online (public credentials, the ones on the website's "Demo access" page)
📢 This guide may be freely reused Preparing an internal presentation of the module for your teams? Help yourself: the demo walkthrough, the worked examples and the answers to frequently asked questions in this guide are at your disposal, without restriction. The demo environment (account demo@gse-web.online, password gse-web.online) is public — you can replay every example there.

1The WMS in 2 minutes

WMS = Warehouse Management System. It is the module that knows, at any moment, what is in stock, where (warehouse, location), in what quantity, in which lot and until what date, and at what cost — and that traces every receipt, issue, transfer, count and preparation in a journal that is never rewritten. It is the foundation: the procurement module (PMS) brings goods into it, the customer orders module (OMS) hands it movement orders to prepare, the SRM gives it its entry prices.

The simple analogy A notary's ledger: no line is ever erased. A mistake is corrected by adding a line that offsets it, and the balance is nothing but the sum of the lines. In GSE-Web, a product's stock is not a number you edit: it is the sum of its stock lines (warehouse × location × lot), and every change is a movement, dated, signed, kept.

❌ Before (without WMS)

  • The spreadsheet says 20, the shelf says 11, and nobody knows where the other 9 went.
  • The picker leaves with a paper list; two colleagues serve the same order without knowing it.
  • The expiry date sits in a corner of the spreadsheet: the expired product is discovered when someone tries to issue it.
  • The annual stocktake shuts the warehouse for two days and ends with "adjustments" nobody can explain.

✅ After (with WMS)

  • Every stock line carries its warehouse, location, lot and expiry date; the total is nothing but the sum, and the journal explains every discrepancy.
  • A movement order is claimed by one person at a time; preparation writes the stock, delivery records the handover.
  • Issues go out FEFO (what expires first goes out first); expiry monitoring and a daily digest warn before expiry.
  • Counts are campaigns per warehouse or per zone; the variance is computed by the server as of the count date, and the adjustment creates a traced movement.
Where to find it in the application In the side menu, the WMS section groups the essentials:
📋 Product list 📥 Receipts 🗂️ Projects and movement orders 🔄 Movements 🔁 Synchronisation 🧪 Lots 👥 Partners 🏬 Warehouses 📦 Stock counts ⏳ Expiry monitoring 📤 Exports 🖼️ Bulk images
Several entries unfold: Projects and movement orders (Projects, Create a movement order, Waves, Process a movement order, Movement order management, Shipments, Movement order duplication), Movements (Receipts, Issues — the two journals), Lots (Lot management, Products by lot, Lot tracking), Warehouses (Warehouse list, Locations, Transfers), Stock counts (Create a count, List counts), Partners (Suppliers, Customers). Outside the section but inseparable: the Dashboard, Stock Analytics AI, and in the ADMIN section the Audit log, Label printing and Stock data import. The section title carries, when collapsed, an orange "n movement orders to process" badge; the Expiry monitoring entry a red (expired) or orange (approaching) badge.

The section appears as soon as the user holds a permission of the domain, for instance EDIT_PRODUCTS (product editing), EDIT_RECEIPTS / EDIT_ISSUES (receipts / issues), EDIT_WAREHOUSES (warehouses), EDIT_INVENTORIES (stock counts), EDIT_REPORTS (reports and exports), VIEW_ALL_MOVEMENT_ORDERS / EDIT_ALL_MOVEMENT_ORDERS (all movement orders) or their "my projects only" variants, EDIT_MOVEMENT_ORDER_STATUS, PLAN_MOVEMENT_ORDERS (waves and pickers), PRINT_MOVEMENT_ORDERS, LOT_QUALITY_CONTROL and LOT_REINTEGRATION (lots), WAREHOUSES_RESTRICTED (warehouse scope), RESOLVE_OFFLINE_HOLDS (offline holds). The permissions screen shows the full label of each.

Availability: the WMS is the core of the product — products and stock are present in every organisation and every plan; movement orders, projects and lot quality control are modules enabled for the organisation.

2Glossary for newcomers

The terms in the order you will meet them, each illustrated with real data from the demo database (collected on 05/09/2026 — the database is shared, another visitor may have changed it).

Product / reference
The catalogue record: a unique reference, one or more barcodes, a unit, a classification on three independent axes (category, subcategory, family), attributes (size, colour, volume, weight…), photos, a price history. 222 active products, 36 categories: [MEDIC] Efferalgan Paracétamol 1 g (ref. EFFERALGAN-1G, barcode 3400935291783), [ACC] FACOM 22-piece mechanic's tool case.
Locked flags (perishable, quality control)
"Perishable" and "Quality control" can no longer be changed once the product carries a stock line — even at zero, even for an administrator. The record shows the boxes padlocked with the reason: changing the nature of a product that has already lived would falsify its whole history. Every record in the demo has stock: the padlocks are visible everywhere, EFFERALGAN-1G included.
Stock line
The real grain of stock: product × warehouse × location × lot. What creates a new line: another warehouse, another location, another lot (hence another expiry date). The "total stock" is nothing but the sum of the lines. DOLIPRANE 1G: 81 units = 4 lines (Réserve Médicale 5 + Cross-Dock 10 + Allée A 43 + Réserve Médicale 23), across 2 warehouses and 4 expiry dates.
Warehouse
A physical storage space, attached to at most one project (site). It holds locations, possibly zones, and can be put "in stocktake" (no movement during the count). 12 warehouses: Magasin PRINCIPAL (MAG-2), [MEDICAMENTS] - P8, [ALIMENTATION] - P2, [STOCK PIÈCES] - P10, [INFORMATIQUE] - P5, [TÉLÉPHONIE] - P11
Location
A real entity in v3 (the previous version only had free text): a code unique within the warehouse, a name, notes, dimensions, and storage quotas per product that feed an occupancy gauge. A location can only be archived when empty. 61 locations: Armoire Pharmacie and Réserve Médicale ([MEDICAMENTS]), Réserve Froide, Zone Alimentaire, Allée A - Rack 1, Bac B01 ([ALIMENTATION]), Rack Accessoires 1 / 2, Cross-Dock. No quota is set yet: the gauges show "not configured".
Storage zone
A grouping of locations within the same warehouse, used to read occupancy by zone and for cycle-count campaigns. No zone in the demo database: create one ("Cold zone" = Réserve Froide + Zone Alimentaire) if you want to show cycle counting.
Movement (the journal)
A dated, signed event: receipt, issue, transfer (two linked events), adjustment, count. A movement is neither edited nor deleted — a mistake is corrected by an offsetting movement, which stays linked to the original. Every movement can carry an attachment (image or PDF, 10 MB). 861 movements: all receipts from the data takeover of 19/08/2026. No issue, no transfer, no correction: it is up to you to make the first ones live.
Weighted average cost
The organisation's valuation method (FIFO possible as a setting). Recomputed server-side on every receipt, never on issues; the value of a line = quantity × cost. Demo setting: weighted average cost. FACOM tool case: 141 units at €103.90 = €14,650.01. Doliprane: €57.16 at PRINCIPAL, €67.07 at MEDICAMENTS — two costs, because two purchasing histories.
Lot
A number unique within the organisation, attached to a single product, carrying the expiry date and a status: To check, Released, Rejected, with the history of its changes. Dated stock taken over from the previous version was given a DLC-<date>-<reference> lot. 82 lots, all released: DLC-2026-11-05-EFFERALGAN-1G (22 units), DLC-2026-04-10-EFFERALGAN-1G (1 unit, expired).
Expiry date / FEFO
The expiry date is carried by the lot. On issue, the lot that expires first goes out first (First Expired, First Out); a lot that is not released is never served. The "close to expiry" threshold is an organisation setting. Demo threshold: 30 days. 33 expired lots, 7 approaching, 42 fine. COCA-COLA-33-P24: 3 lots (06/04/2026, 01/05/2026, 13/10/2026).
Reservation and available
When a movement order is confirmed, existing stock is reserved for it; available = physical − reserved. Confirmation never blocks on a shortage: it reserves what exists. Reservations are released on cancellation or closure. Create a movement order on the FACOM tool case (141 in stock) and confirm it: the record shows "Reserved" and "Available".
Movement order
The order to prepare (outbound), receive (inbound) or transfer, attached to a project, a warehouse and a partner. In v3 the number is BM-YYYY-NNNNN, drawn from an atomic sequence per year; movement orders taken over from the previous version keep their P<project>-YYYY-NNNNN number. 36 movement orders: P110-2026-00011 (to process, Nice), P100-2026-00009 (in progress, Paris), P50-2025-00011 (partially delivered, Lyon), P110-2025-00036 (delivered, Nice).
The statuses of a movement order
To processIn progressPrepared / Partially preparedDelivered / Partially deliveredClosed (and Cancelled before any preparation). Labels can be customised per organisation; the codes, for their part, are stable. 6 to process, 13 in progress, 4 partially delivered, 6 delivered, 7 cancelled.
The 3 actions: prepare, deliver, close
Prepare writes the stock (one issue per served line), the Prepared / Partially prepared status is computed. Deliver records a proof of handover ("Collected by", mandatory) and writes no stock. Close is terminal and releases the remaining reservations. P50-2025-00011: collected by "M. Pierre MORVAN - DSI Rhône" on 10/10/2025.
Claim
A movement order (or a receipt) is prepared by one person at a time. The holder's name is shown; taking over an order held by someone else is possible, explicit and traced; there is no automatic expiry. Open P110-2026-00011 in two browsers: the second one sees who holds it.
Backorder -R1, -R2
After a partial preparation, a child order carries the unserved quantities (requested − served). The rank always restarts from the original order: never a -R1-R1. P100-2026-00009 (Kaeser: 25 requested, 10 served) → P100-2026-00009-R1 (15 + 1).
Return from site
A quantity that came back from a delivered order, re-entered into stock at the line's cost; served and returned stay separate, the net delivered is computed. The order goes back to "Partially delivered" if needed. To do live on P110-2025-00036 (delivered).
Count campaign, cycle counting
A count per warehouse (or per zone), which goes through OpenUnder analysisClosed. The variance is computed by the server as of the count date; the adjustment is done "to actual" (movements created) or "in base" (no movement). Cycle counting schedules the zones to count according to a frequency. T1 - 2026 (closed, [ALIMENTATION], 42 lines counted) and T2 - 2026 (open, [LOCATION] - P7, nothing counted yet).
Thresholds and shortage status
Three thresholds per product (order limit per warehouse, overall stock limit, maximum order limit) and a status recomputed on every read: Out of stock, To order, Taken into account, In stock. This is the entry point of the procurement module (see the PMS guide). EFFERALGAN-1G: order limit 12, overall stock limit 15. 2 products out of stock, 22 to order.

3How the data fits together

From top to bottom: the organisation, its projects, their warehouses, zones and locations, and finally the stock line. The product and the lot are the two threads that run through everything.

🏢 OrganisationStock settings: valuation method (weighted average cost in the demo), expiry alert lead time (30 days), lot quality control
🏗️ Project (site)P20 — groups warehouses; a warehouse belongs to a single project; open or closed
🏬 WarehouseWarehouse [ALIMENTATION] - P2 — code MAG-5, "in stocktake" indicator
🗺️ Storage zoneOptional: "Cold zone" (to create in the demo) — cycle-count frequency, occupancy reading
📍 LocationRéserve Froide — code, notes, dimensions, quotas per product, gauge = average of fill rates, last product issued if empty
📦 Stock lineCOCA-COLA-33-P24 × lot DLC-2026-05-01 × 12 units at €18.13 — the real grain of stock

And around this tree, 7 satellites

  • Product — the record, its thresholds, its locked flags, its linked suppliers, its historised prices, its photos and attributes.
  • Lot — expiry date, status, change history, quality inspections when the Quality module is active.
  • Movement journal — every event, its attachment, its author, its link to the movement order, purchase order or count that produced it.
  • Movement orders, reservations, shipments, backorders — the Movement orders module, which writes into stock through preparation.
  • Count campaigns — dated lines, variances, adjustments.
  • Alerts — shortages, expiries, movement orders to process, offline holds; deduplicated by episode (an alert only repeats if its cause disappears then returns).
  • Audit log — who did what, when, through which channel (application, API, AI assistant, scheduled task).
The sentence to remember A project contains warehouses, a warehouse contains zones and locations, a location contains stock lines; the product and the lot run through everything — and nothing moves without a dated, signed movement.

4Guided tour, screen by screen

In teaching order: the product and its stock, the physical layout, what comes in and goes out, movement orders, counts, lots, then the cross-cutting screens. For each screen: what it is for, how it works, the subtlety to mention, and the demo data to lean on.

4.1 — "Product list" and the product record (the front door)

What it is for: finding a product (reference, label, barcode or scan), seeing its total stock and its lines, its thresholds, its shortage status, and entering a simple receipt or issue.

How it works:

  1. Search or scan; filters by category, warehouse, "in stock only".
  2. The record: total stock and per warehouse, then the lines (warehouse, location, lot, expiry date, quantity, cost), the order thresholds, the barcodes, the linked suppliers (one by default), the photos, the attributes, the price history.
  3. Receipt / Issue buttons: quantity and warehouse required, location, purchase price, expiry date required if perishable, supplier lot number, delivery note number, note, photo. The batch entry mode (chain scanning) stacks up to 200 lines and sends them at once.
Anti-mistake subtlety to mention Stock never goes negative (the database refuses it). A product under quality control requires a lot on receipt. And the "perishable" / "quality control" boxes are padlocked as soon as there is stock — the application shows the reason rather than ignoring the click.

With the demo data: EFFERALGAN-1G — 23 units at warehouse [MEDICAMENTS] - P8, two lines: 1 unit in Armoire Pharmacie (lot of 10/04/2026, expired) and 22 in Réserve Médicale (lot of 05/11/2026). DOLIPRANE 1G — 81 units, 4 lines across 2 warehouses, 4 expiry dates, 2 different costs.

4.2 — "Warehouses": Warehouse list, Locations, zones (the physical layout)

What it is for: describing the warehouse as it is — warehouses, zones, locations — and knowing which bin is overflowing and which is free.

How it works:

  1. Warehouse list: one card per warehouse with quantity, value, number of references, photo, project, "in stocktake" indicator.
  2. Locations ("Location management"): search by code or by product (reference, label, barcode, scan), "empty only" filter, "fullest first" / "emptiest first" sorts, grouping by zone, Manage zones button.
  3. Per location: the occupancy gauge (or "Gauge not configured"), the products under quota and their rate, "Overflow" where applicable, the products outside quota, and for an empty location "Last product issued: …".
  4. Assign a product opens "Storage quota — {product}": the maximum quantity of this product at this location (with, for information, the product's maximum order threshold).
  5. New location, edit, delete (= archive, refused if stock remains).
Anti-mistake subtlety to mention The gauge is the average of the fill rates of the assigned products (screws 450/500 and nuts 130/200 → 77.5%), never a sum of incomparable units — "a screw is not a 20-litre drum". And a quota is a storage guide, not a lock: a movement that exceeds it is not blocked, the overflow is visible.

With the demo data: 61 locations, no quota set. Set one live on Réserve Froide ([ALIMENTATION] - P2) for the Coca-Cola (quota 20, stock 12 → 60%): the gauge appears immediately. Cross-Dock exists in several warehouses.

4.3 — "Receipts" and "Movements" (what comes in, what goes out)

What it is for: receiving a purchase order, and reviewing everything that came in or went out, with who, when, why.

How it works:

  1. Receipts → Receive goods opens the Goods receipt screen (touch or PDA depending on the mode): the receipt of a purchase order from the procurement module, described in the PMS guide. Its WMS effect: one receipt per line and per lot, at the line price, hence in the weighted average cost. Receipt list gives the follow-up.
  2. Movements → Receipts / Issues: the two journals, filterable by period, warehouse, product, author; each line shows its attachment, its link to the originating movement order, purchase order or count, and offers the offsetting correction.
  3. The reintegration of an issue made for quality control is a dedicated action, capped at the issued quantity.
The rule to state during the demo The correction never modifies the original: it adds a linked movement in the opposite direction. The journal stays intact, the history stays readable, and the stock is right.

With the demo data: 861 movements, all receipts from the takeover of 19/08/2026. Issue 2 FACOM tool cases from the record, then correct it: both lines appear in the journal, linked.

4.4 — "Transfers" (moving without consuming)

What it is for: moving stock from one warehouse to another, or from one location to another within the same warehouse, without going through an issue and a receipt.

  1. Source warehouse, destination warehouse (the same is allowed: location reorganisation), lines, confirmation.
  2. The server writes two linked events (transfer out, transfer in) in the same transaction; the Transfer list groups them with source, destination, author, product, period.
Anti-mistake subtlety to mention A "To check" or "Rejected" lot cannot be issued, but it can be transferred: its status travels with it (a blocked lot is moved to a scrap zone without releasing it). A warehouse in stocktake refuses any transfer.

With the demo data: no transfer in the database; transfer 5 Doliprane from PRINCIPAL's Cross-Dock to Allée A, then show the Transfer list.

4.5 — "Projects and movement orders" (the operational core)

Projects

A project (site) carries a number, a project manager, a count frequency, and its warehouses (one warehouse = one project). It opens, closes, duplicates; it cannot be deleted while a warehouse is attached to it. Demo database: 7 open projects, P20 to P110.

Create a movement order

Three tabs. Info: project (required — it is what allows issues to be valued per site), warehouse, customer / partner, type of work, delivery address, collection date. Products: per line "Stock / Reserved / Available", alert if the available quantity does not cover the request. Summary. The movement order is born as a draft ("To process"), then gets confirmed.

In the complete logistics flow, the movement order is not always entered by hand: the validation of a customer order from the portal (OMS module) generates one automatically, in the same transaction as the validation. Its naming is that of every movement order — a BM-YYYY-NNNNN number drawn from the same sequence —, with the customer's record, the catalogue's project and warehouse, the address and requested date taken over from the order, and an OMS CMD-YYYY-NNNNN note recalling the originating order; the "OMS" column of Movement order management shows that order number. It is prepared, delivered and closed exactly like an entered movement order (see the OMS guide).

Confirm: reserve what exists

Confirmation reserves the stock actually present and never blocks on a shortage; the movement order moves to "To process", the subscribers to the "movement order to process" alert and the planned picker are notified.

Waves

Schedule a date and assign a picker, in bulk; "unscheduled" and "no picker" counters. Scheduling is not claiming: the claim happens when the movement order is opened.

Process a movement order (F1 → F6)

  1. F1 — the list: "To process" filter by default, availability indicator (green: covered; red: insufficient), holder's name if a colleague already holds the order. Opening an order = claiming it; if it is held, the application offers to take it over — explicitly.
  2. F2 — the information: customer, address, date, preparation warehouse, requested / served / remaining quantities.
  3. F3 — the locations: products grouped by location, prepared / requested badges, pallets P1, P2, P3.
  4. F4 — a location's products: photo, reference, requested, available, pallet.
  5. F5 — the quantity: "quantity to prepare" capped at the available quantity, local save, pre-selected pallet.
  6. F6 — validation: the server writes the issues, computes Prepared or Partially prepared, and creates the backorder automatically if a line is incomplete. A partial remains re-servable without unblocking.

From F1: Mark as delivered opens "Collected by" (mandatory) → Delivered / Partially delivered, without writing stock. Then Close.

Movement order management, Shipments, Duplication

Movement order management: the full table (number, OMS, issuer, town, date, "Claimed by", status), filters by project, status, period; duplicate; Record return from site on a delivered order; deletion refused for a backorder or an order that produced one. Shipments: group prepared orders into a shipment EXP-YYYY-NNNNN (Draft → Ready → Departed); on departure, a box unticked by default offers to move the attached orders to Delivered, "Collected by" = shipment number; printable labels. Documents (print permission): Preparation sheet, Shipping sheet, Pallet document.

The rule to state during the demo Preparation is what writes the stock. Delivering and shipping create no movement: they record a proof of handover, named and dated. And a partial status is not a dead end: you re-serve the order, or its backorder, without unblocking anything.

With the demo data: 36 movement orders. To process: P110-2026-00011 (Nice, Samsung S9 × 12, Huawei Watch × 5). In progress: P100-2026-00009 (Paris, Kaeser 25 requested / 10 served, Sigma block 15/15, Excellence 5/4) and its backorder P100-2026-00009-R1; P20-2025-00005 (Pessac, fully served: to deliver then close). Partially delivered: P50-2025-00011 (Lyon, collected by M. Pierre MORVAN - DSI Rhône on 10/10/2025). Delivered: P110-2025-00036 (Nice, Mme Lucia FERRARI, 13/09/2025). No grouped shipment yet.

4.6 — "Stock counts": Create, List, Analyse, Cycle counting

What it is for: counting without shutting the warehouse for two days: a campaign per warehouse or per zone, variances computed by the server, a traced adjustment.

  1. Create a count: name, warehouse, optional scope (zone) → Open. Entry by scan (touch or PDA); every line is dated.
  2. "Count analysis": system quantity, actual quantity, variance; filters (with or without expiry date), "variances first" sort.
  3. Adjust to actual creates the variance receipts and issues (irreversible, preceded by an explicit warning for full validation); Adjust in base corrects without a movement. Then Close; reopening possible; Excel export.
  4. "Cycle counting": the zones to count according to their frequency — up to date, due soon, overdue, in progress — and a tile on the dashboard.
Anti-mistake subtlety to mention The variance is computed against the stock as of the count date, not the stock at the time you look: a movement entered in between does not skew the analysis. A warehouse in stocktake refuses movements; a campaign can only be deleted while open.

With the demo data: T1 - 2026 ([ALIMENTATION], closed, 42 lines counted, variances visible in analysis) and T2 - 2026 ([LOCATION] - P7, open, nothing counted: scan two products to show the variance appear).

4.7 — "Lots": Lot management, products by lot, Tracking & ageing

A feature to enable Lot quality control is not active by default: it is enabled in Settings → Advanced quality and lot management, with the Enable quality and lot management switch. While it is disabled, the Lots section does not appear in the menu; once active, every product flagged "subject to quality control" requires a lot number on every receipt, and existing lots are kept if you disable it later.

What it is for: knowing where each lot came from, where it is, in what state, and where it went — the traceability an auditor or a recall demands.

  1. Lot management: create a lot, change its status (To check / Released / Rejected, under a dedicated permission), read its history.
  2. "Products by lot": GSE lot, supplier lot, receipt lots, status, supplier, expiry date, warehouse, location, quantity — with receipt / issue from the line.
  3. "Lot tracking & ageing": indicators (active lots, to check, approaching expiry, tied-up value — an unknown cost is excluded from the total, never counted as zero).
  4. A lot's life sheet (upstream, checks, statuses, stock, downstream) and the lot recall: "where did the goods go", exportable.
The rule to state during the demo A rejected lot never goes out; a lot to check only goes out as an "issue for control", under a dedicated permission and with an automatic note. Both can be transferred and received.

With the demo data: 82 lots, all released (dated stock taken over was given a DLC-<date>-<reference> lot). Move DLC-2026-04-10-EFFERALGAN-1G (1 unit, expired) to "Rejected" and show that it is no longer offered for issue.

4.8 — "Expiry monitoring"

Three statuses: Expired, Approaching (organisation threshold, 30 days in the demo), Fine; filters by status and warehouse, sorts, an Issue button that opens the withdrawal, Excel export. Every morning, between 7 and 8 a.m. in the organisation's time zone, subscribers receive a single digest of approaching or expired lots (one line per product and expiry date); in-app notifications remain per lot, hence clickable. Demo database: 33 expired lots, 7 approaching — the menu badge is red.

4.9 — "Exports"

"Stock data export": the stock snapshot (filters by quality status and shortage status, expired products included or not, columns of your choice), the receipts and issues over a period. CSV or XLSX, generated in the application from the data served by the server. Permission EDIT_REPORTS.

4.10 — "Synchronisation" (offline)

The principle: take online (exclusive claim and download), execute offline, confirm online. In the field, every entry — receipt, issue, transfer, count line, creation of a lot, a location, a product or a partner — is put in a queue on the device, isolated per account, with a local projected stock ("stock known as of…", "last local entry at…"). The FEFO issue is computed offline; a receipt or a movement order claimed before leaving is executed offline and confirmed on return.

The screen: four tabs — To send (the device's queue), For the team (the entries the server could not apply: insufficient stock, product archived in the meantime… they are held and visible to the whole team, never lost, never forced), Conflicts, History. Settling a hold (apply, convert to a count, abandon with a reason) requires the "Resolve offline holds" permission. Nothing is invisible to the team.

What stays online: confirming a movement order, validating a customer order, anything that commits a third party. The old "offline mode" in the settings becomes "Local stock, no account": a browsing cache, not deferred entry.

4.11 — Outside the WMS section, but indispensable

  • Audit log (ADMIN section): every write and every refusal, with the actor, the time, the channel (application, API, AI assistant, scheduled task); filters, export; kept for 400 days; sealed every day. What you have just done in the demo is already in it.
  • Label printing: product and location labels (barcode, QR), A4 sheets or thermal roll, bulk printing; the location label can be read with a phone.
  • Stock data import: published template, dry run by default, cell-by-cell preview with one colour per cell, automatic creations announced before writing.
  • Bulk images: attach photos to products in batches.
  • Partners: suppliers and customers in a unified directory (14 suppliers, 11 customers in the demo, plus the technical customer records created by the OMS portal, hidden).
  • Dashboard and Stock Analytics AI: stock and value indicators, shortages, expiry dates, movement orders to process, cycle counts, trends. Two cards ("Returns from site", "Shipping lead time") show "—" until they have a data source: do not present them as indicators.

5Reserve, prepare, deliver, close: step by step

The WMS's core mechanism is the path of a movement order down to the stock lines. Four actions, three worked examples drawn from the demo database.

1. Confirm
Reserve
what exists, without blocking
2. Prepare
Write the stock
one issue per served line
3. Deliver
Prove the handover
"Collected by", no stock
4. Close
Release
the remaining reservations

Example 1 — partial preparation and backorder (P100-2026-00009)

Outbound order of project P100, warehouse [STOCK PIÈCES] - P10, delivery to Paris. Three lines: KAESER-REFROIDISSEUR-AIR 25 requested, KAESER-BLOC-COMMANDE-SIGMA-2 15, EXCELLENCE 5.

  1. Confirmation: reservations are placed on what exists; the available quantity of these three products drops accordingly for other orders.
  2. Preparation (F5 → F6): 10 coolers, 15 blocks, 4 Excellence. The server writes three issues, computes Partially prepared (two incomplete lines) and creates the backorder P100-2026-00009-R1 with 15 coolers and 1 Excellence — exactly requested − served.
  3. Next: the original order remains re-servable if goods arrive; the backorder is prepared like any other order. A backorder of a backorder would be called -R2, never -R1-R1.

Figures to give: "3 lines, 1 preparation session, 3 movements, 1 backorder, 0 manual calculation".

Example 2 — FEFO on a perishable (DOLIPRANE 1G, Magasin PRINCIPAL)

At PRINCIPAL, the Doliprane has two lines: lot of 30/09/2026, 10 units at Cross-Dock; lot of 07/12/2026, 43 units in Allée A. Issue of 15 units:

Example 3 — delivery, return from site, closure (P20-2025-00005)

Order of project P20, warehouse [ALIMENTATION] - P2, delivery to Pessac: Saint-Émilion 8/8, Badoit 12/12, burger buns 3/3 — fully served, still "In progress".

  1. Mark as delivered, "Collected by: M. Jean-Pierre VIGNEAU" → Delivered. No stock movement: the issues were written at preparation.
  2. Record return from site: 2 packs of Badoit come back → a receipt at the line's cost; served stays 12, returned 2, net delivered 10; the order goes back to Partially delivered.
  3. Close: terminal; the remaining reservations are released, the order can no longer be edited.
The 2 golden rules to remember (classic trick questions) 1️⃣ Preparation writes the stock; delivery and shipment only record a proof of handover. (An old FAQ on the website said the opposite: no longer say it.)
2️⃣ The journal is never rewritten and stock never goes negative: a mistake is corrected by an offsetting movement, a shortage is visible, it does not hide.

6Which stock line goes out first? The FEFO rule

Nearest expiry date first  then, at equal expiry or without one,  largest quantity first

"Usable" scope: lines without a lot, or whose lot is Released. To check and Rejected are excluded from issues, never from transfers. A lot specified by the user restricts the plan to that lot. What is not covered is refused, never truncated.

The same computation serves availability (confirming a movement order) and allocation (preparation): same scope, same answer.

Illustrations with the demo data

SituationCandidate linesOrder retainedResult
Doliprane, PRINCIPAL, issue of 1530/09/2026 × 10 · 07/12/2026 × 43ascending expiry date10 + 5
Doliprane, PRINCIPAL, 30/09 lot "To check", issue of 1507/12/2026 × 43 onlyblocked lot excluded15 from the 07/12
FACOM tool case (no lot), issue of 20Rack Accessoires 2 × 87 · Rack Accessoires 1 × 52 · Cross-Dock × 2largest quantity20 from Rack Accessoires 2
Efferalgan, 05/11 lot explicitly requested, issue of 3005/11 lot × 22imposed lotrefusal: 22 < 30, no top-up from another lot
Transfer of the Efferalgan 10/04 lot (rejected) to a "Scrap" locationtransfer allowedthe status travels with the lot
Movement order: 20 requested, 8 availablepartial preparation8 served, Partially prepared, backorder 12
How to sell it in one sentence "Your warehouse workers no longer choose which lot to issue: the application serves what expires first, never touches a blocked lot, and tells you frankly when something is missing — without ever inventing stock."

7How it ties into the neighbouring modules

The WMS is the foundation: the other modules write to it through movements or read it — never the other way round. The procurement module never writes stock itself; the customer orders module creates movement orders, it does not prepare.

StepModuleWhat the WMS doesDemo example
Receipt of a purchase orderPMS → WMSOne receipt per line and per lot, at the line price → weighted average cost; shortage status recomputed.CF-2026-001 (1664, Thé Vert) to receive
Thresholds and shortagesWMS → PMSHolds the product × warehouse thresholds and serves the shortage board to the procurement module.Efferalgan: limits 12 / 15
Validated customer orderOMS → WMSAn outbound movement order is created in the same transaction as the validation, on the catalogue's project and warehouse; "OMS" column in Movement order management."alimentation" catalogue (OMS guide)
Negotiated priceSRM → WMSThe net price of the purchase order line becomes the entry cost; the invoice never revalues stock.Doliprane: two costs, two purchasing histories
Quality controlQuality ↔ WMSLot required on receipt of a controlled product; inspection = quarantine; the verdict releases or rejects.Efferalgan 10/04 lot moved to Rejected
AlertsWMS → NotificationsShortages (within minutes), expiries (daily digest), movement orders to process, offline holds; deduplicated by episode.Red badge of Expiry monitoring
TraceabilityWMS → AuditEvery write and every refusal logged, AI assistant included.Audit log after the demo
Training (schools)Training → WMSOne exercise warehouse per session, deletable in bulk — outside the scope of this guide.

8The complete workflow in 12 steps

From setup to daily operation. A small customer in a hurry only does steps 1, 4, 5 and 7.

  1. Create the master dataProduct records, or bulk import with dry run and cell-by-cell preview.
  2. Describe the warehouseProject, warehouses, zones, locations, quotas per product.
  3. Print the labelsProducts and locations (barcode, QR readable with a phone).
  4. ReceiveSimple receipt from the record, or receipt of a purchase order — lot and expiry date for a perishable.
  5. Create a movement order and confirm itExisting stock is reserved, never blocking.
  6. SchedulePreparation wave, picker assigned.
  7. Claim and prepare (F1 → F6)FEFO, partial possible, automatic backorder — this is where stock is written.
  8. Deliver or ship"Collected by", or grouping into a shipment and departure.
  9. Record returns from siteRe-entry at the line's cost, net delivered recomputed.
  10. CloseReservations released, order frozen.
  11. CountCampaign per warehouse or zone, variances as of the date, adjustment to actual or in base; monitor expiry dates.
  12. Export and reviewCSV / XLSX exports, movement journal, audit log.

9Suggested demo walkthrough (~15 min)

Before you start Open https://app.gse-web.online, log in with demo@gse-web.online, password gse-web.online (organisation demo) and unfold the WMS section. The landmarks below were collected on 05/09/2026: the demo database is shared, another visitor may have changed them — check that P110-2026-00011 is still "To process" and that no colleague holds it. On mobile or PDA, preparation shows even better.
Step 1 · Product list → EFFERALGAN-1G record — stock is a list of lines (2 min)

Menu WMS → Product list, search for Efferalgan. Show the two lines: 1 unit in Armoire Pharmacie (lot of 10/04/2026, expired) and 22 in Réserve Médicale (lot of 05/11/2026); the total 23 is nothing but the sum. Show the padlocked "perishable" and "quality control" boxes. Then Doliprane 1 g: 4 lines, 2 warehouses, 2 costs.

"Your stock is not a number, it is a list of dated lines: warehouse, location, lot, expiry date. The total is added up by the application — and nobody can change it by hand."
Step 2 · Warehouses → Locations — which bin is overflowing? (2 min)

Menu WMS → Warehouses → Locations, warehouse [ALIMENTATION] - P2. Search for the Coca-Cola: it is in Zone Alimentaire and Réserve Froide. On Réserve Froide, Assign a product → Coca-Cola, quota 20: the gauge goes to 60%. Sort "fullest first".

"You know which bin is overflowing and which has been free for a fortnight, without walking round the warehouse. And the quota is a guide, not a lock: nothing blocks, everything is visible."
Step 3 · Process movement order P110-2026-00011 — two pickers, one order (4 min)

Menu WMS → Projects and movement orders → Process a movement order. In F1, show the availability indicator and the holder's name when an order is held. Open P110-2026-00011 (Nice): claim. F3: the products grouped by location. F5: on SAMSUNG-S9-64, prepare 8 out of 12; complete the other lines. F6: confirm → Partially prepared and the backorder P110-2026-00011-R1 appears in the list.

"Two pickers cannot serve the same order: the application claims it for one person at a time. And what is missing is not forgotten: the backorder carries the number of the original order."
Step 4 · Deliver, return from site, Movement order management — the proof of handover (2 min)

From F1, Mark as delivered on P20-2025-00005 (Pessac, fully served): the "Collected by" dialog is mandatory. Then Movement order management: the "Claimed by" column, the OMS column, and Record return from site on this order: 2 packs of Badoit → the order goes back to "Partially delivered", a receipt appears in the journal.

"Delivering does not write the stock: preparation did that. Delivering is a proof of handover, named and dated — and a return from site comes back at the line's cost, not at the latest purchase price."
Step 5 · Stock counts → T2 - 2026 — counting without shutting the warehouse (3 min)

Menu WMS → Stock counts → List counts. Open T2 - 2026 ([LOCATION] - P7, open): scan or enter two products with a quantity different from the system, then "Count analysis": system quantity, actual, variance, "variances first" sort. Show Adjust to actual on one line (a movement is created) and the full-validation warning; open the closed T1 - 2026 for the history; finish with "Cycle counting".

"A count is a campaign: per warehouse or per zone, as of a date, with the variance computed by the server and the adjustment traced in the journal. No more annual stocktake that shuts everything down."
Step 6 · Expiry monitoring → Lot tracking → Audit log — everything is traced (2 min)

The red badge in the menu: Expiry monitoring, "Expired" filter, Issue button on the Efferalgan 10/04 lot. Then Lots → Lot tracking: indicators and tied-up value. Finally, ADMIN section, Audit log: the preparation from step 3 is there, with your name, the time and the channel.

"Everything you have just seen me do is already in the audit log, with my name, the time and the device — and nobody can modify that log, not even me."
Plan B in a minute If time is short: steps 1, 3 and 5 only — "a stock line, a prepared order, an adjusted count" — in 9 minutes. Offline (§4.10) can be told in one sentence.

10FAQ — tricky questions and ready answers

"Can stock go negative, for instance during a synchronisation?"

No, never: the database itself refuses it. An entry made offline that the server cannot apply is neither forced nor lost: it is held, visible to the whole team, and settled by someone who has the permission.

"Why does the order go to 'Partially prepared' and not straight to 'Partially delivered'?"

Because preparing and delivering are two distinct actions. Preparation writes the stock and computes Prepared or Partially prepared; delivery is a manual action that requires "Collected by" and writes no stock. That gives a named proof of handover for every order.

"What happens if two warehouse workers open the same order?"

The second sees the first one's name and must explicitly choose to take over the order; the takeover is traced. There is no automatic expiry of the claim: it is a human choice, never a timer that decides.

"Can an issue entered by mistake be corrected?"

Yes, by an offsetting movement: the original stays in the journal, the correction is linked to it, the stock is right. A movement is never edited or deleted.

"Is the expiry date on the product, on the stock line or on the lot?"

On the lot, exclusively. A perishable product requires a lot on receipt; dated stock taken over from the previous version was given a DLC-<date>-<reference> lot so that the rule holds everywhere.

"Can two products carry the same lot number?"

No: the lot number is unique within the organisation, and a lot belongs to a single product. That is what makes a lot recall unambiguous.

"Does a quarantined lot block everything?"

It cannot be issued (except as an "issue for control", under a dedicated permission), but it can be received and transferred: you can move it to a scrap or control zone without releasing it. Its status travels with it.

"Does a full location refuse a receipt?"

No. The quota is a storage guide, not a lock: the overflow shows on the gauge, the receipt is not blocked. The gauge is an average of per-product rates, not a sum of units.

"Does a grouped shipment empty the stock?"

No: the shipment writes no movement. On departure, on explicit request (box unticked by default), it can move the prepared orders to Delivered, with "Collected by" = shipment number. The stock, for its part, was written at preparation.

"Does the application work without a network?"

Yes (see §4.10): a per-account queue on the device, local projected stock, FEFO issue offline, claimed receipt and movement order executed offline, and above all a server-side hold of any inapplicable entry, visible to the whole team — nothing is lost, nothing is forced. Anything that commits a third party (confirming a movement order, validating a customer order) stays online.