Govern code, description and unit together
The IMPA code is optional; ISSA or a company code may also be used. Faromo does not itself provide licensed MSG data, and no code alone proves maker or part compatibility.
Faromo Vessel Inventory and Spare Parts Management brings the company item catalogue, vessel and shore stores, location balances, stock movements, transfers, stock-take variances and selected GRN receipts into one control surface. The PMS spare-parts register is currently a separate model and is not automatically reconciled.
The same part may sit in an engine store, deck store, shore warehouse or another vessel. When code, unit, physical location and movement reason drift apart, procurement decisions use the wrong balance and shore teams discover a maintenance shortage too late.
Faromo’s general inventory module uses an item–warehouse–stock-location structure, with movements changing balances atomically. The equipment-scoped spare-parts register inside PMS is a separate flow that can open a draft requisition after a low-stock crossing. This page shows where the two structures connect today and where manual reconciliation is still required.
IMPA provides common product identity, while maritime inventory products position item-to-component linkage, location, stock history, min/max, transfers and procurement linkage as the category backbone. The matrix below maps Faromo’s current implementation to that market language without expanding product scope to match competitor features.[1][2][3][4]
The IMPA code is optional; ISSA or a company code may also be used. Faromo does not itself provide licensed MSG data, and no code alone proves maker or part compatibility.
Each balance is the intersection of an item and a vessel or shore store; bin or rack, store type, responsible role and access restriction are defined alongside the physical-count plan.
Transaction type determines the delta, the system prevents a negative balance and stores the post-movement balance. A reason is mandatory for ADJUST and WRITE_OFF.
The PMS spare register can open a draft requisition when crossing below minimum; a procurement GRN writes RECEIVE to general inventory when a stock location is selected. These two stock registers are not automatically reconciled today.
Each control point shows which input changes a balance or alert and which verification remains with the user.
| Control point | Input | Faromo behavior | Resulting record | Scope boundary |
|---|---|---|---|---|
ITEM | Description; optional IMPA, ISSA or local code; maker, part number, specification, UOM and category. | Creates a company-scoped searchable item master and derives the section code from an IMPA code. | Active or inactive item, technical definition, classification and reference-price fields. | The code is not mandatory; catalogue licensing, data deduplication and equipment-fit decisions are not provided by the product. |
STOCK LEVEL | On hand, reserved, minimum, maximum and optional reorder quantity. | Calculates available = on hand − reserved; available ≤ 0 is critical, below minimum is low and on hand above maximum is over-stock. | Location RAG state and a suggested order quantity, either explicitly set or derived from thresholds. | Min/max is a company rule, not a consumption forecast. Lead time is stored but not used in the current calculation; there is no user action for reserved quantity yet. |
MOVEMENT | Stock location, transaction type, quantity, optional price/currency, reason and reference. | Produces a signed delta by transaction type, updates the location under row lock and rejects a negative balance. | Movement type, delta, balance after, user and optional PO or work-order linkage. | The movement ledger is append-only, but the stock-location create/update API can set quantity directly; opening and imported balances require separate reconciliation. |
TRANSFER | Source stock location, destination store, positive quantity and optional reason. | Locks source and destination in one database transaction and writes paired TRANSFER_OUT and TRANSFER_IN entries under one group ID. | Two linked movements and updated balances at both locations. | Physical shipment, receipt confirmation and transit damage are not part of this atomic stock transfer. |
STOCK-TAKE | Stock location, system quantity, physically counted quantity and note. | Calculates variance = counted − system; creates an ADJUST movement when non-zero and records the latest count date and variance. | Count result, variance percentage and adjustment movement when applicable. | Count approval, second-person verification, blind counting, count cycles and close-out workflow are outside the current scope. |
GRN → RECEIVE | GRN line ready for posting, accepted quantity and optional stockLocationId. | When a location is selected, writes accepted quantity as a PO-referenced RECEIVE; otherwise posts the GRN without creating an inventory movement. | Posted GRN, PO delivery state and conditional RECEIVE movement. | There is no automatic item-master code matching for the GRN line or automatic update to the PMS spare register. |
PMS SPARE | Vessel, optional equipment, part number, on-board quantity, min/max, critical flag and lead time. | On manual stock adjustment, opens a draft requisition on the first crossing from above to below minimum; suppresses a duplicate when the same open auto-requisition exists within seven days. | PMS spare balance and procurement draft-requisition ID when created. | It is separate from the general inventory item/location record; although an EquipmentItem/BOM bridge exists in the data model, it is not an end-to-end controller, service and web user workflow. |
SHELF-LIFE | Vessel, description, category, lot, quantity, expiry date, location and critical flag. | Classifies active items as warning, critical or expired using internal 90/30-day defaults and closes them as consumed or disposed. | Separate shelf-life register, fleet/vessel summary and disposal method. | The 90/30 days are not regulatory limits; the register is not linked to the stock ledger and does not implement batch genealogy or FEFO. |
Representations of the same physical part across item master, stock location, PMS spare and shelf-life registers must be mapped individually during pilot migration. A “single stock number” is reliable only after record ownership is defined.
The checklist combines catalogue cleanup, physical count and cross-module record ownership in one acceptance test.[1][2][3][4]
This list does not replace the vessel SMS procedure, critical-spares policy, customs/bonded, IMDG, medical, maker, class or accounting controls.
Manage description, IMPA/ISSA or local code, maker, part number, specification, unit, hazmat and safety-critical flag at company scope.
Track an item by location and responsible role across general, deck, engine, safety, provision, chemical, medical, bonded, slop-chest or shore stores.
Compare on-hand minus reserved balance with company-defined minimum and maximum thresholds; see low, critical or over-stock status and a suggested quantity.
Retain delta, balance after, user, reason and optional PO or work-order reference across RECEIVE, ISSUE, RETURN, TRANSFER, ADJUST, WRITE_OFF and SLOP_SALE movements.
Write inter-store outbound and inbound movements atomically under one transfer group; create a separate ADJUST movement and count variance when physical stock differs.
Link a posted GRN with a selected stock location to a RECEIVE movement; track shelf-life items in a separate register with category, lot, location and status.
Faromo tracks IMPA/ISSA- or locally coded items across vessel and shore stores, creates movement records with negative-balance protection and atomic transfers, writes stock-take variance as ADJUST, and converts a posted GRN with a selected stock location into a RECEIVE movement.
No. The item card can store an optional six-digit IMPA code, and a company may use its licensed data through a separate integration or import scope. Faromo does not itself provide the licensed MSG dataset.
A general inventory location produces a low or critical alert and suggested quantity but does not open a requisition automatically. A PMS spare can open a draft requisition when a manual adjustment crosses from above to below minimum, with a seven-day duplicate guard for the same open auto-requisition.
The general inventory movement API can carry workOrderId, but the current web movement form does not expose it and work-order closure does not automatically reconcile the two stock models. This linkage must be verified as an integration or additional user-flow scope during the pilot.
No. Accepted quantity becomes a PO-referenced RECEIVE movement only when the GRN line has a valid stock location. Without a location, the GRN is posted but the inventory balance does not change.
No. They are configurable internal planning defaults in Faromo. Actual replacement and disposal timing must be verified against product, maker, flag, company procedure and applicable rules; the shelf-life register is separate from the current stock-movement ledger.
The web client’s general IndexedDB outbox can queue some writes without connectivity, but prior availability of stock records, replay/deduplication, concurrent balance and count scenarios require action-level pilot acceptance. No blanket offline coverage is claimed for inventory.