What a bin location is in B1.

A bin location is the smallest addressable place in a warehouse: a shelf, a pallet place, a spot on the floor. In B1 it is switched on per warehouse. In Administration > Setup > Inventory > Warehouses, on the General tab, tick Enable Bin Locations. From that moment every receipt and every issue in that warehouse needs a bin, and a Bin Locations tab appears with the settings below. Warehouses without bins keep working as before, and the bin menus (Inventory > Bin Locations, and Administration > Setup > Inventory > Bin Locations) only appear once at least one warehouse has bins.

B1 immediately creates one system bin location per warehouse, the warehouse code followed by SYSTEM-BIN-LOCATION, and makes it the default bin. That lets you keep working on the day you switch on. The system bin cannot be changed, deactivated or deleted.

How bin codes are built.

A bin code is not typed freely. It is composed of the warehouse code and up to four warehouse sublevels, joined by a separator. You name the sublevels in Administration > Setup > Inventory > Bin Locations > Bin Location Field Activation, for example Aisle, Rack, Level and Position, and define the codes for each one in Warehouse Sublevel Codes. The separator (Bin Loc. Code Separator, up to five characters, a hyphen by default) is set per warehouse. Warehouse 01, aisle A, rack 03, level 2 then becomes 01-A-03-2.

The same window activates up to ten bin location attributes, such as zone, temperature or fragile, with their values in Bin Location Attribute Codes. Bins are then created one by one in Inventory > Bin Locations > Bin Location Master Data, or in bulk with Bin Location Management, which generates every combination of the codes you choose and shows a preview first. Keep the codes short and in the order someone walks: several allocation methods below sort on them.

What you can set per bin.

Each bin in Bin Location Master Data has properties beyond its code:

  • Receiving Bin Location: marks the bin as an inbound area, such as an inspection zone.
  • Bar Code (up to 100 characters) and Alternative Sort Code (up to 50), which allocation can sort on instead of the code.
  • Minimum Qty, Maximum Qty and Maximum Weight. The minimum does not block issues; it drives replenishment from the Bin Location List and Bin Location Content List reports.
  • Item Restrictions: a specific item, a single item only, a specific item group or a single item group only.
  • UoM Restrictions: the same four forms for unit of measure and UoM group.
  • Batch Restrictions: Single Batch, one batch per bin; items without batches are then not allowed there.
  • Transaction Restrictions: block all transactions, inbound, outbound, or everything except inventory transfer and counting, always with a reason.
  • Exclude from Auto. Alloc. On Issue and Inactive; a bin can only be deactivated when it is empty.

Restrictions are where bin locations get strict: a document that breaks them is refused, whether it comes from the B1 client or from an app through the Service Layer.

Default bins, receiving bins and allocation on receipt.

Where does received stock go? B1 has three levels of default bin: the warehouse (Bin Locations tab), the item group (Item Groups - Setup) and the item (Item Master Data, Inventory Data tab). The item wins, then the item group, then the warehouse. With Enforce Default Bin Loc. the warehouse default becomes mandatory, unless the item or its group has a default of its own.

Tick Enable Receiving Bin Locations on the Bin Locations tab, and goods from suppliers and customer returns go to the receiving bins instead, in the order set by Receive Items By, optionally only to empty ones and up to their maximum quantity or weight. Internal receipts, such as transfers and receipts from production, still go to the default bin. From the receiving bin someone puts the goods away with an inventory transfer; the Clear Bin Locations option in the bin location reports prepares that transfer.

Without receiving bins, Auto Alloc. On Receipt decides: the default bin, the last bin that received the item, the item's current bins, or its current and historical bins. A maximum only limits automatic allocation when Receive Up to Max. Qty or Receive Up To Max. Weight is ticked; a manual allocation beyond it just gets a warning. For batch and serial items under On Every Transaction the allocation happens once the batch or serial number is entered.

Allocation on issue, transfers and counting.

On a delivery or goods issue, B1 fills in the bin by Auto Alloc. on Issue: Single Choice (only when there is just one way to do it), Bin Location Code Order, Alternative Sort Code Order, Descending Quantity, Ascending Quantity, Ascending Quantity – Single Bin Preferred, FIFO or LIFO. The method can be overridden per document in the Form Settings, and per row in the Bin Location Allocation - Issue window. A row whose quantity is not fully allocated to bins is marked red, and the document cannot be added.

For batch and serial items, Issue Primarily By on the item decides whether you choose the batch first and then the bin, or the bin first and then the batches in it; see the guide on batch and serial numbers.

Moving stock between bins is an inventory transfer (Inventory > Inventory Transactions > Inventory Transfer), also within one warehouse. Each row has From Bin Locations and To Bin Locations, and both must add up to the row quantity. Counting works per bin as well: the inventory counting document selects items by bin location and each row is one item in one bin, so a count per aisle is a selection of bins; see the guide on inventory counting.

Common mistakes.

  • Switching on bins without a plan. From the first day every receipt and issue needs a bin; with only the system bin, everything ends up there and the bins tell you nothing.
  • Codes that do not follow the walking route. Allocation by code order then sends pickers back and forth. Bin Location Code Modification can rename bins in bulk, but getting it right first is easier.
  • Restrictions nobody remembers: a single-item bin that refuses a second item at the dock, and nobody knows why.
  • Expecting Maximum Qty to stop receipts. It only limits automatic allocation when the matching checkbox is on; otherwise it warns or does nothing.
  • A full receiving bin. Goods received but not put away are in stock, but not where anyone looks.
  • No labels on the bins. A bin nobody can scan or read is typed from memory, and typed wrong.

Before you start.

  • Draw the warehouse: aisles, racks, levels, and which places are for receiving, picking and bulk.
  • Choose the sublevels and the separator, and test the codes on paper: short, readable, in walking order.
  • Decide on default bins per item or item group, and whether you want receiving bins.
  • Choose the allocation methods on receipt and issue per warehouse.
  • Set only the restrictions you will really keep up.
  • Print a barcode label for every bin, with the bin code or the Bar Code from B1, and put it where a scanner can reach it.

How KoonScan works with bin locations.

KoonScan, our scanner app, reads the bins from B1 and posts in them through the Service Layer, in the standard documents. Scanning a bin label opens that bin, by its code or by the Bar Code stored in B1. Receiving suggests a bin per line and accepts another one if you scan it. Transfer moves loose items, a whole bin or a whole batch as an inventory transfer, and processes inventory transfer requests from B1. Put away lists what is on the receiving bin with a suggested destination; Replenish lists pick faces below their minimum; with one bin attribute set as the zone, suggestions stay in the item's zone. Counting goes bin by bin, blind by default, and finishing a bin sets what was not counted there to zero. You can block a bin with a reason, which sets its transaction restriction in B1, and print bin labels.

The limits: KoonScan itself checks the specific-item, single-item and single-batch restrictions; item group, UoM and weight restrictions and the maximum per bin are checked only by B1 when posting. Stock per bin and per batch is read with saved queries in the Service Layer; if the administrator removes those tables from the Service Layer's allowlist, only stock per warehouse works. All about KoonScan.

Sources: SAP Business One 10.0 help documentation (Working with Bin Locations: enabling and creating bin locations, Bin Location Master Data, Bin Location Field Activation, Warehouses - Setup: Bin Locations Tab, receipts to and issues from bin locations, Inventory Transfer, Inventory Counting); the SAP Business One 10.0 database reference (OBIN, OBSL, OBAT, OIBQ, OBBQ); the Service Layer $metadata of SAP Business One 10.0 FP 2608 (BinLocations, BinLocationAttributes, WarehouseSublevelCodes, StockTransfers, InventoryCountings).