Storage tanks are the fixed vertical tanks of a bulk-liquid storage terminal. This screen is the terminal's tank register and its operating console in one:...
Storage tanks
Storage tanks are the fixed vertical tanks of a bulk-liquid storage terminal. This screen is the terminal's tank register and its operating console in one: every tank on every site with its product, its book level, how full it is against its safe fill limit and which client rents it. From here the tank-farm operator books receipts, deliveries and tank-to-tank transfers (from road tankers with a weighbridge ticket or from ISO tanks on site), records dips and temperatures, and corrects the book level to the physical stock. Every one of those operations is one line in the movement ledger, which is also what the Throughput report and the monthly tank billing read.
Where to find it: Workspace → Logistics → Warehouse → Storage tanks. Each site also has a Storage tanks tab with the same list limited to that site. The menu entry only appears when the Terminal module (Terminal fixed storage tanks) is switched on in Warehouse settings.
Who can use it
What you want to do
Permission needed (as named on the role)
See the list and open a tank's card, its level chart and readings
Any Warehouse permission (View sites, the live yard, units, tanks and movements)
Product in / out (receive, deliver, transfer) and Record a dip
Fill, empty and transfer tanks, take readings, which is part of the group Gate in and out, move units, fill and empty tanks
Add, edit and delete tanks
Add and edit tanks, part of the group Add and edit units, tanks and products
Place a tank on the site's yard plan
Add and edit sites, zones and the yard plan, part of the group Add sites and edit their yard plan
A role can also carry the restrictions Cannot delete anything (the delete button disappears, editing stays allowed) and Cannot use bulk actions (no row selection). Administrators can do everything.
Where it sits in the operation
A tank terminal has three kinds of product movement and one kind of stock check. Product arrives in a road tanker (weighed over the weighbridge or metered) or in an ISO tank or flexitank that is already on the site, and goes into a tank: a receipt. It leaves the same two ways: a delivery. It moves between two tanks of the same site: a transfer. And at intervals the operator dips the tank and compares the physical stock with the book stock. The App keeps a book level per tank that only these four operations can change, and records each of them as one movement.
Figure 1 Every receipt, delivery, transfer and dip correction is one ledger line; the tank card, Throughput, the monthly bill and AI Reports all read that same ledger, so they cannot disagree.
The same operations can also be booked by Marvin, through the MCP tools (warehouse.tank_operation, warehouse.tank_reading) or the API. They all go through the same ledger with the same checks; the Movements list shows a badge with the source (MCP, MARVIN, API) when an operation was not booked on screen.
What you see
The header tile shows the Level: the total book stock of all your tanks together. The tab strip of the card holds Add a storage tank on the right.
Column
What it shows
Tank number
The tank's code, for example T-101 (stored in capital letters). Click it to open the tank's card.
Site
The terminal the tank stands on.
Product
The product the tank is assigned to. A tank keeps its product when it is pumped empty (see below).
Level
Book contents and capacity, for example "812.4 m³ / 942.5 m³". How volumes are shown follows Volume unit in settings: Automatic (m³ from 100 000 L), Always litres or Always m³.
Full
A bar in the product's colour and the fill percentage of the capacity. The bar turns amber within 5 percentage points of the safe fill limit and red at or above it.
Rented to (client)
The client who rents the tank. Used for throughput, tank rent and corrections.
Status
In service, Cleaning, Maintenance or Out of service.
Row buttons: open the card, Record a dip (any status), Product in / out (only for tanks In service), edit and delete. Tick several rows to delete them at once. The list exports to Excel and prints from the table menu. On a phone each tank becomes one line: tank number, product and fill percentage.
The tank's card
Header: tank number, site, product, client and status.
A wide level bar with a marker at the safe fill limit, the fill percentage and "level / capacity".
Facts: Room left (safe fill volume minus book level, with the limit percentage), Temperature (°C) and whether it is Heated, Diameter (m) / Height (m), and the product's UN number.
Level chart over 30 days, 90 days (default) or 365 days, a stepped line with the safe fill limit as a dashed red line. The history is rebuilt backwards from today's book level through the ledger, so it always matches the movements.
Readings: the last 8 dips and temperatures, each with its difference against the book (green "corrected" when the book was set to the dip, amber when it was not).
Movements: the last 8 operations on the tank, with the unit number or truck plate.
Buttons: Edit storage tank, Record a dip and Product in / out (in service only).
Tank geometry, safe fill and the alarm
The App works with one figure for the size of a tank, Capacity (litres), and one safety figure, Safe fill limit (%). Everything else is derived from them.
Figure 2 The safe fill limit blocks overfills, the alarm warns before it, and Room left is what a receipt may still put in. The App records contents as volume only: it has no strapping table, so innage and ullage are taken from your dip and calibration chart.
Capacity. Type the calibrated volume from the tank's strapping (calibration) certificate. Left empty, the App calculates a plain cylinder: π × (diameter ÷ 2)² × height × 1000 litres. A 10 m × 12 m tank gives 942,478 L. That ignores the floor, roof and dead stock, so the calibrated figure is always better.
Safe fill limit (%), 95 by default, accepted between 50 and 100. It is your maximum working level: the App refuses any receipt or transfer that would take the book level above capacity × limit.
High-level alarm. When a tank's level reaches the safe fill limit minus the Tank alarm margin (Warehouse settings → Yard and safety; 3 points by default, 0 to 20), the App sends one notification: "Tank T-101 at Ghent terminal is 93% full; its safe limit is 95%. Product: Ethanol." It goes to administrators and to staff whose role holds the group Gate in and out, move units, fill and empty tanks or one of Fill, empty and transfer tanks, take readings, service orders or inventory operations, plus any team members or teams set for this event in the notification settings. Clicking it opens the site's Storage tanks tab. The alarm is checked after every receipt, transfer and dip correction, sent only once, and re-armed when the level drops back below the threshold.
It is a book-level alarm, raised from what was booked. It does not replace an independent high-level or high-high switch on the tank.
Add a storage tank
Click Add a storage tank (on this screen, or on a site's Storage tanks tab, where the site is preselected).
Type the Tank number (up to 30 characters, stored in capitals) and choose the Site.
Type the Diameter (m) (1 to 120, default 10) and Height (m) (1 to 60, default 12), and the Safe fill limit (%).
Optional: Capacity (litres). Leave it empty for the cylinder calculation (π × r² × h).
Optional: Current contents (litres), the opening stock. It can only be typed when you add the tank. After that the level changes only through receipts, deliveries, transfers and dip corrections.
Optional: Product, Rented to (client), Temperature (°C) and Heated. Choose the Status.
Click Save the tank.
Place it on the plan: open the site, go to Yard plan, click the tank under Place a storage tank, then click where it stands. A tank placed inside a tank-farm zone belongs to that zone. The live view then draws it in the product's colour, with a glow when it is heated.
When you edit a tank you can change everything except the level. The product cannot be changed while the tank holds product ("Tank T-101 holds another product."). Moving a tank to another site removes it from the old yard plan. Leaving Capacity (litres) empty on an edit recalculates the cylinder volume.
Receive product into a tank
Click Product in / out (on the site page, on the tank's row or on its card).
Under What happened leave Receive into the tank selected.
Choose the Storage tank. Only tanks of that site that are In service are listed, each with its product and level.
From an ISO tank: choose it under From unit (optional). Only ISO tanks and flexitanks that are on this site are listed, with their product and quantity. The road tanker fields are hidden.
From a road tanker: leave the unit empty. If the tank has never had a product, choose the Product.
Type the Quantity (L), or leave it empty and type the weighbridge ticket under Road tanker: Gross weight (kg) and Tare (kg). The net weight is gross − tare and the litres are net ÷ the product's density (kg/L).
Optional, for a road tanker: Truck plate, Driver, Haulier, Client and Seal.
Optional: Reference (bill of lading, CMR or order number) and Note. Click Record it. The answer reads "812,000 L received into tank T-101."
What the App does:
The tank's book level goes up; the movement is a Tank received line.
From a unit: the litres are taken out of the unit. When it is emptied it becomes empty and dirty, and the product is added to its last cargoes (the last three are kept).
For a road tanker with a plate, driver or haulier, a truck visit is recorded with the reference and the seal, so the movement shows who brought the product.
When you type both the litres and the weights, the litres you typed are booked and the net kilograms are kept next to them. Throughput then shows both, which is a quick check of the meter against the weighbridge.
The client of the movement is the Client you chose, otherwise the tank's Rented to (client). Throughput and billing use it.
Deliver product from a tank
Open Product in / out and choose Deliver from the tank.
Choose the Storage tank.
Into an ISO tank on site: choose it under Into unit (optional). Otherwise fill in the road tanker block as for a receipt.
Type the Quantity (L) or the gross and tare weights, add a reference, and click Record it.
The book level goes down; the movement is a Tank delivered line.
Filling a unit marks it loaded and dirty with the tank's product and puts the product at the top of its last cargoes. Before it fills, the App checks the unit's 2.5-year, 5-year and CSC dates, its current product, its last cargo when it is dirty, and its capacity (see Controls and exceptions).
A tank pumped down to zero keeps its product. That keeps the tank dedicated to the product until you change it on purpose (edit the tank once it is empty).
Transfer between two tanks
Open Product in / out and choose Transfer to another tank.
Choose the source Storage tank and the To tank. Both must be on the same site and in service.
Type the Quantity (L) and click Record it.
The target must be empty or hold the same product. An empty target takes the source's product.
The target's safe fill limit is checked like a receipt.
A transfer is one Tank transfer line. It stays inside the terminal, so it is not throughput and is not billed.
Record a dip and correct the book
The book level is what was booked. The physical level is what the dip (or the gauge) says. They drift apart through meter tolerance, temperature, line fill, evaporation and missed bookings. A reading records the physical figure and, if you want, sets the book to it.
Click Record a dip on the row or the card. Readings are allowed in every status, including Cleaning and Maintenance.
The tank is preselected; the list offers the other tanks of the same site.
Type the Measured contents (litres), the Temperature (°C), or both. While you type, the line under the field shows the Book level and the difference. It turns red when the difference is more than 0.5 % of the book and more than 50 L.
Set the book level to what I measured is ticked by default. Untick it to record the reading only.
Optional: a Note (who dipped, gauge used). Click Save the reading.
Figure 3 A correction is an ordinary signed ledger line, so the book stays explained litre by litre and the variance shows up in Throughput under Dip corrections.
The answer says what happened: "Tank T-101 set to 810,950 L (−1,450 L against the book)." or, unticked, "Tank T-101 measured at 810,950 L (−1,450 L against the book). The book level was not changed." A temperature alone answers "Tank T-101: 42 °C recorded." A correction belongs to the client renting the tank and carries the reference "dip".
Controls and exceptions
All operations run in one database transaction that locks the tank (and the unit). If any check fails nothing is booked and the form shows the reason.
Situation
Message
Receipt or transfer would pass the safe fill limit
"Tank T-101 would go over its safe fill limit. Room left: 12,500 L."
Delivery or transfer of more than the book level
"Tank T-101 holds only 8,000 L."
Unit into a tank with another product, transfer into a tank holding another product, or product change on a tank that holds product
"Tank T-102 holds another product."
Tank not in service (Cleaning, Maintenance, Out of service)
"Tank T-101 is not in service."
Target tank missing, the same tank, or on another site
"Tank not found on this site."
Unit not on the tank's site, or already gated out
"HOYU 123456-7 is not on this site."
Unit empty, or holds less than the quantity to receive
"HOYU 123456-7 holds only 20,000 L."
Filling a unit whose 2.5-year, 5-year or CSC date has passed
"HOYU 123456-7 cannot be filled: its test was due on …"
Filling a loaded unit with another product
"HOYU 123456-7 already holds another product."
Filling an empty dirty unit whose last cargo was another product
"HOYU 123456-7 is dirty from another product. Clean it first."
More than the unit's capacity
"HOYU 123456-7 only has room for 4,000 L."
Weights given but the product has no density
"To work out litres from a weight, the product needs a density. Add it to the product, or type the litres."
No quantity and no weights
"Type a quantity above zero."
A dip above the tank's capacity
"Tank T-101 only holds 942.5 m³."
A reading with neither level nor temperature
"Type a level, a temperature or both."
Deleting a tank that still holds product
"Tank T-101 still holds 8,000 L. Empty it before deleting it."
No double bookings. Each form carries a one-time key. A double click, a resubmit after a network drop or a retried API call books nothing twice and answers "This was already recorded."
The product of a receipt. A tank that already has a product keeps it: on a road-tanker receipt the Product field is only used when the tank has no product at all, and the density for a weighbridge ticket is taken from the product you chose, otherwise the tank's product. To put a different product into an emptied tank, edit the tank and change its product first.
Mistakes are corrected forward. A movement cannot be edited or deleted. A wrong receipt is undone with a delivery of the same quantity (or a dip correction), with a note saying why. The ledger keeps both lines and who booked them.
Deleting a tank moves it to the trash and can be undone from the message. Its movements and readings stay.
Status as a lock. Setting a tank to Cleaning or Maintenance blocks every receipt, delivery and transfer on it; dips stay possible.
Dedicated-equipment and food-grade marks on a product are not checked when filling; see Products.
For the manager
Daily: the Full column and the alarm notifications; tanks in red or amber before the next receipt is scheduled. The dashboard widget Warehouse · Tank farm shows the first ten tanks with their fill and an alarm count.
Per dip round: the variances on each card. A pattern of small negative variances on one tank points at a meter, a valve or evaporation; a single large one usually is a missed or double booking. Decide before ticking the correction whether you are correcting the book or hiding a booking error.
Monthly:Throughput per client and product before you bill. Tank throughput (m³ received + delivered) and Tank rent (one line per tank rented to the client, per month the billing period touches) are priced from Rates by Bill a month on the client's Equipment & stock tab. Fill in Rented to (client) on every rented tank, or neither throughput without a chosen client nor rent will land on anybody.
Utilisation: AI Reports → "All business data" has Storage tanks (Warehouse) (tanks, litres stored, capacity, fill %, by site, product, client, status, heated) and Yard and tank movements (Warehouse) (litres received, delivered and dip correction litres over time). Marvin answers "how full is tank T-101?".
Glossary
Book level
The contents according to the ledger: opening stock plus receipts, minus deliveries, plus or minus transfers and corrections.
Physical (measured) level
What a dip or gauge shows in the tank, typed under Measured contents (litres).
Dip / innage
The height of liquid measured from the tank bottom, converted to litres with the tank's calibration chart before you type it.
Ullage
The empty space above the liquid. The App does not store it; Room left is the usable part of it up to the safe fill limit.
Safe fill limit
The maximum working level as a percentage of capacity. Receipts and transfers that would pass it are refused.
High-level alarm
One notification when the book level reaches the safe fill limit minus the Tank alarm margin.
Correction
The signed ledger line (kind "Correction", reference "dip") that sets the book level to a dip.
Variance
Measured minus book, in litres, kept with every reading.
Weighbridge ticket
Gross weight of the loaded truck and tare of the empty one; net = gross − tare, litres = net ÷ density.
Density
Mass per litre (kg/L) of the product, from the product record.
Strapping / calibration chart
The certified table of volume per height for one tank. Its total goes into Capacity (litres).
VCF
Volume correction factor to a standard temperature. Not applied: litres are recorded as observed.
Throughput
Product received into and delivered from tanks; transfers excluded. Billed per m³.
Related screens
Throughput: product in and out per month, client and product.
Products: density, colour and dangerous goods data.
Units: the ISO tanks you fill from and into tanks.
Sites: the Storage tanks tab and placing tanks on the yard plan.
Live 3D: tanks in their product colour on the live view.
Movements: every receipt, delivery, transfer and correction.