An Inward is the record of a container arriving at the depot. Registering one puts the container into stock, and it is the starting point for surveys, repair estimates, workshop work orders, and billing for that arrival.
Before you start
- Set up at least one Yard before registering an arrival — without one, OCTO Ops refuses to open the registration form.
- Have your MLOs, Vessels, and Transporters master data in place; the arrival form draws its option lists from them.
- If the container may already be expected, check Discharge Lists and Reservations — a matching discharge-list entry pre-fills the arrival form, and an active reservation is flagged as you register it.
Access to Inwards is controlled by the View, Create, Edit, and Delete permissions for Inwards. You need View to see the list and a profile, Create to register an arrival or import a batch, and Edit to change an existing record or add billables and payables. Some actions reached from an inward — creating a survey, approving estimate items, and releasing a work order — use their own permissions, described under those sections below.
The Inwards list
Open Container Depot > Inwards. The list only shows inwards you have permission to view.
| Column | Notes |
|---|---|
| ID | The inward's reference number. |
| Time stamp | When the arrival was recorded. |
| Container # | The container number. |
| MLO | The Main Line Operator. |
| Vehicle # | The vehicle that delivered the container. |
| Yard | The receiving yard. |
| Stack Location | Where the container was placed. |
| Condition | The recorded condition. |
| Vessel | The inward vessel. |
| Consignee | The consignee on the arrival. |
| ISO Type | The container's ISO type. |
| Vessel Date | The vessel's date for this arrival. |
| Business unit | Only when your organization uses business units: the inward's business unit. |
The list sorts by ID, newest first, by default. Use the table search to find an arrival by any of the displayed columns. Page size defaults to 25 rows, with a choice of 10, 25, 50, 100, 150, or All. Selecting the ID, Time stamp, or Vessel Date cell opens that inward's profile.
The toolbar shows a Create icon when you hold the Create permission for Inwards, and an Actions menu with Import inwards from excel and Create inward.
Register an arrival
- From the Inwards list, select Create inward (from the toolbar Create icon or the Actions menu).
- Type the Container number, then move out of the field. OCTO Ops checks it straight away (see below).
- Respond to whatever the check finds.
- Complete the remaining fields.
- Review the details and select Create container inward.
Container number checks
When you leave the Container number field, OCTO Ops upper-cases the number and checks it in this order:
- The number itself. A number that isn't a valid container number — the owner code, category, serial and check digit don't add up — is rejected with "Invalid container number" / "Please check the container number and reenter it.", and the field is cleared.
- Whether it's already in the yard. If the container exists and is already in stock, you're stopped with "Oops..." / "This container number is in stock. Please check again.", and the field is cleared.
- Whether it's on file. If no container with that number exists, you're asked "Container not found" / "Do you want to create a container for this number?". Yes, create it! registers it as a new container and lets you enter its size; No, cancel! shows "Cancelled" and clears the field.
- Its discharge list. If the container exists and is available, OCTO Ops pre-fills the form from its open discharge-list entry, where one exists: consignee, B/L number, voyage, gross weight, ISO type (and the derived length, width, and height), cargo type, MLO, vessel, and vessel date.
If the check can't be completed, you see "Error" / "Something went wrong. Please try again." and the field is cleared, so you can enter the number again.
If the container has an active reservation, two red panels appear beside the first fields: Reserved, with the date it was reserved on and its reserved-till date (or "Non releasable"), and Reservation remark, with the reservation's description. Check them before continuing — the form does not stop you from registering the arrival anyway.
Arrival details
The fields are laid out in the same order as in legacy OCTO Ops, with the yard moved up beside the inward ID:
| Field | Required | What to enter |
|---|---|---|
| Container number | Yes | See Container number checks. |
| Manufacture date | No | The container's manufacture year (1900 to the current year) and month (1 to 12). A year in the future or a month outside 1–12 is outlined in red with "Enter a year between 1900 and {current year}." or "Enter a month from 1 to 12.", and Create container inward stays disabled until it's corrected. |
| Inward ID | No | Leave Auto ticked for OCTO Ops to assign the ID, or untick it and enter your own. |
| Business unit | No | Only when your organization uses business units. See Business units. |
| Yard location | No | The receiving yard. Defaults to your team's default yard. |
| In cargo type | No | The cargo type carried in. |
| In date | No | Defaults to today. |
| In time | No | Defaults to now. |
| Vehicle number | No | The delivering vehicle's number. |
| Vehicle in time / Vehicle out time | No | When the vehicle arrived and left. |
| MLO | Yes | The Main Line Operator. |
| Inward vessel | Yes | The vessel the container arrived on. |
| Vessel in date | No | Defaults to today. |
| Voyage | No | The voyage reference. |
| B/L Number | No | The bill of lading number. |
| Consignee | No | The consignee. |
| Transporter | Marked required | The transporter that delivered it. It carries a red asterisk as in legacy OCTO Ops, but you can save without one. |
| ISO type | Yes | The container's ISO type; choosing it fills in the length, width, and height. |
| Size type (Length / Width / Height) | No | Only editable when the container is new; for an existing container these are already on its record. |
| Gross weight | No | The container's gross weight. |
| Ventilation | No | Yes by default. While it's Yes, choose V (2V, 4V, or Sp V); choosing No clears it. |
| Stack Location | No | Depends on the yard you chose; changing the yard clears and reloads the available locations. |
| Suitable cargo | No | Cargo the container is suitable for. |
| Status | No | Empty or Laden; defaults to Empty. |
| Condition | Yes | The container's condition on arrival. |
| Shipper return | No | Yes or No; defaults to No. |
| Surveyor ID | No | The surveyor for this arrival. |
| Description/Notes/Remarks | No | Free text. |
Create container inward stays disabled until the container number, MLO, vessel, ISO type, and condition are all filled in and the manufacture date is in range — while it's disabled you'll see "Please fill in all required fields to activate this button."
What happens when you save
- If the container is new, OCTO Ops creates it; either way, the container is put into stock with the condition, ISO type, MLO, ventilation, yard, and stack location you set, and its weight recorded.
- The inward record is created with the ID you specified or the next automatic one.
- A stock entry is created, marking the container as in stock from this arrival.
- If the arrival matched an open discharge-list entry, that entry is closed against this inward.
- Yard utilization figures are recalculated.
- You're returned to the inward's profile with the toast "Inward registered successfully".
If validation fails, the form shows the field errors and the toast "Check your records before submitting this form again." A server error shows "Something went wrong!" with the specific message. You may also see: "Container record already exists. Please check, refresh the page, and try again", "Container is already in stock", or "Container is already in stock during date and time".
If no yard has been set up yet, OCTO Ops returns you to the list with: "You have not setup any yards in your master data yet. Please setup yard and other master data before creating a container inward record."
Edit an inward
- Open the inward's profile and select the toolbar's Edit icon. The page heading reads Edit Container Inward: {container number}.
- The inward ID and container number are shown read-only at the top. Update any of the other fields, grouped as follows: manufacture date (year 1900 to the current year, month 1 to 12); cargo type, in date and time; vehicle number and vehicle in/out times; MLO, inward vessel, vessel in date, voyage, B/L number, consignee and transporter; ISO type (its length, width and height are shown for reference), gross weight, ventilation and V; yard location, status, condition, stack location, suitable cargo and shipper return; surveyor; and description. Every field starts with the inward's current value, and ISO type, ventilation and V start with the container's.
- MLO, Inward vessel, Transporter, ISO type and Condition are required; until they are filled in, the button stays disabled with the note "Please fill in all required fields to activate this button."
- Select Edit container inward.
Editing requires the Edit permission for Inwards. On success you see "Inward updated successfully" and return to the profile. A validation failure shows an inline error on the date field and the toast "Check your records before submitting this form again." A server error shows "Something went wrong!" / "Please retry."
Saving updates the inward's own details, and always writes the container's status, ISO type, condition, MLO, ventilation and V, yard and weight from what you entered — even when this is not the container's most recent arrival. Only the container's recorded last-arrival date is left alone unless this inward is its latest one. The inward's stock entry is updated with the new yard and arrival time, and yard utilization is recalculated.
The inward profile
Opening an inward from the list shows its profile. The page heading reads Container Inward: {container number}, and the breadcrumb ends in the inward's ID.
The left-hand card shows:
- The container number, which opens the container's own profile.
- Two labels beneath it: IN STOCK (green) while the container is still in the yard, or OUT (amber) once it has left or when there is no stock record; and the container's current condition code (* when none is set).
- The inward ID, then two figures: Tasks — the linked tasks you can see — and Estimates — the total of every estimate line on this inward that you can see.
- A table listing each field beside its value: In at, MLO, ISO, Condition, container status (labelled Status), Vessel, Voyage, Vessel arrival date, Consignee, vehicle number (labelled Vehicle, and reading Not in yet until one is recorded), Vehicle in time, Vehicle out time, Surveyor, Transporter, BL number, Yard, Stack location, Cargo type, the inward's own status (also labelled Status), Description, and Outward — a link to the outward that took the container out, or In stock if it hasn't left. Hover over a shortened or repeated label to see its full name. A dash marks any field left blank.
To the right are:
- Estimates — one row per estimate line: estimate ID (opens the estimate), item, location, memo, material rate and quantity, labour rate and quantity, total, whether it is approved and when, and the work order number and its completion date. The card's own Approve items and Create work order buttons lead to the approval and work-order screens described below. "No estimates yet" when there are none.
- Invoices — shows "Not yet available": invoices are not linked to inwards in this version.
- Reservations — each reservation of this container, with its number, reserved-at and reserved-till dates, seal, and whether it was utilized; "No reservations yet" when there are none.
- Work orders — each workshop work order raised from this inward: ID (opens the work order), number of tasks, status, created and completed dates, and a tick button that opens the work order's completion screen. "No work orders yet" when there are none.
- Uploads and images — files attached to this inward, with a thumbnail, the original and stored file names, and an eye button that opens the file in a new tab; "No uploads yet" when there are none.
- History — every record tied to this container, newest first: its inwards, outwards, repair estimates, reservations, discharge list entries, and the workshop work orders raised on its inwards. Each row shows the date, the kind of record, a short description (such as the estimate or reservation number), vessel, voyage, and status. The date opens that record where it has a page of its own; reservations and discharge list entries don't, so they aren't linked. The record you're viewing is highlighted and marked This record. You only see the kinds of record you have View permission for. Surveys aren't listed separately, because each one creates the estimate that is. "No history yet" when there is nothing to show.
- A linked-tasks panel showing any project tasks tied to this inward.
Each button only works if you hold the permission it needs. To create a survey, billable, or payable for this inward, open the toolbar's Actions menu and select Survey, Billables, or Payables. The toolbar also carries the Edit icon, and the Actions menu ends with a red Delete entry when you are allowed to delete this record (see below).
Import inwards from Excel
- From the Inwards list, open the Actions menu and select Import inwards from excel.
- Choose an Excel file (.xlsx, .xls, or .csv).
- Select Upload and preview.
The file needs a heading row with these columns: container, iso_code, in_date, time, out_date, mlo, status, condition, vent, vessel, voyage, arrival_date, vehicle, consignee, location, cargo_type, manufacture_year, manufacture_month, bl_number.
If the upload itself fails (missing or oversized file), you see the banner "The file could not be imported."
Preview and confirm
The preview page lists every row (BL Number, Container, DOM, ISO, In date, In time, Out date, MLO, Status, Condition, Vent, Vessel, Voyage, Arrival Date, Vehicle, Consignee, Location, Cargo Type), showing "No rows found in this import" if the file had none, plus up to three banners:
- Red "The following errors prevent this import from proceeding:" — rows with problems, for example a container already in stock, or a blank required cell.
- Yellow "The following missing master data prevents this import from proceeding…" — codes in the file that don't match existing master data (ISO type, MLO, condition, vessel, or yard location).
- Blue "The following masters or reference records will be automatically created during the import process:" — containers or cargo types that will be created because no match was found.
If the preview lists any errors or missing master data, Confirm and record isn't offered — the page says "Resolve the issues above and import the file again to continue." Fix the file (or create the missing master data) and import it again.
Only the person who uploaded the file can view or confirm its preview.
Selecting Confirm and record resolves each row's ISO type, condition, vessel, and yard by code, creates any cargo type or container the preview flagged as new, and registers an inward and stock entry for every row whose container is not already in stock. Rows for a container that's already in stock are skipped without a row-level message on this screen. You're returned to the Inwards list with "Successfully imported {n} containers."
Create a survey
A survey is how an inward leads to a repair estimate. Open the inward's profile, open the toolbar's Actions menu, and select Survey.
Creating a survey needs the Create permission for Repair Estimates, together with the View permission for Inwards to open the page and the Edit permission for Inwards to submit it.
Before the page opens, OCTO Ops checks whether another estimate can still be created for this container. It refuses — with "Cannot create any additional estimates for this container." and no page shown — when the container isn't in stock, or when your team's administrators have set a limit on repair estimates per container in Module settings and this container's current arrival has already reached it.
An Inward details panel at the top shows, read-only, the container, in date and time, MLO, ISO, consignee, B/L number, in condition, in cargo, suitable cargo, manufacture date, vehicle number and surveyor recorded on the inward.
- Confirm or update the driver name and driver ID number (pre-filled from the inward where known).
- Enter the survey date.
- Add repair estimate items, each with a liable party, material cost and quantity, and labour rate and hours.
- Upload condition photos as needed; each has its own delete control.
- Select Create survey and estimate.
On success you see "Survey and estimate created successfully" and return to the inward profile. An error shows the server's message, or "Please retry." if none is given.
Saving records the driver details on the inward, creates a survey, and creates a repair estimate with one unapproved line item per repair row you entered.
Approve estimate items
From the inward profile's Estimates card, select Approve items. This needs the Approve repair estimate items permission — a special permission that isn't scoped to particular records, so anyone who holds it can approve items on any inward, not only their own.
The page heading reads Approve Estimate Items: {container number}. One table lists every item still waiting for approval, across all of the inward's estimates: Estimate ID, Item, Location, Memo, Unit price, Qty, Total, and an Approved checkbox. Items that are already approved aren't listed. When nothing is waiting, the table shows "No estimate items are waiting for approval".
Enter Approval given by and the Approved date and time (left blank, the current date and time is used), tick the items to approve, and select Approve items — the button stays disabled until at least one item is ticked. On success you see "Estimate items approved successfully" and return to the profile; otherwise the server's error message, or "Please retry."
Approving marks each ticked item approved and records who gave the approval, who approved it, and when. Only ticked items are approved: an item you tick and then untick is left as it was.
Create a workshop work order
From the inward profile's Estimates card, select Create work order. This needs the Release approved estimates to the workshop permission, and also the Edit permission for Inwards on this record, since it creates a workshop record.
The page heading reads Create Work Order: {container number}. One table lists the approved items that aren't on a work order yet: Estimate ID, Item, Location, Memo, Unit price, Qty, Total, Approved (the approval date), and a Select checkbox. Items already on a work order aren't listed, so an item can't be ordered twice. When nothing is waiting, the table shows "No approved items are waiting for a work order".
Tick the items and select Create work order for selected items — the button stays disabled until at least one item is ticked. On success: "Work order created successfully", and you return to the profile.
Saving creates one workshop work order for the container, with one line for each item you ticked, copying its quantity and labour quantity.
Add billables and payables
Billables and payables record charges tied to this inward. Both need the Edit permission for Inwards, and are reached from the inward profile's toolbar Actions menu: Billables / Payables.
Create billable: enter a custom ID (or leave Auto checked), a bill date, add product line items, and a description. Below the lines, the Taxes row always reads 0.00 — billables carry no tax — so the Total equals the sum of the line totals. If you try to save with no line items, you're stopped with "Error" / "Products are not added to this billable. Please add products." Select Record billables for inward #{ID} to save. On success: "Your record has been saved successfully". If nothing was saved, you see "Check your records before submitting this form again."
Create payable: enter an invoice reference (or leave Auto checked), a bill date, choose the Vendor (required), a name or memo, and product line items — the total is calculated as you go. Saving with no line items shows "Error" / "Products are not added to this payable. Please add products."; saving with no vendor shows "Error" / "A vendor is required." Select Record payables for inward #{ID} to save. On success: "Your record has been saved successfully".
Both billables and payables are saved against this inward and appear in your billing records rather than on the inward's profile itself.
When your organization has business units, both forms have a Business unit, which starts with the inward's own business unit, or with the unit chosen in the header when the inward is on your main business (the form has a choice, so a main-business inward is not a default; check it before you save, because the unit decides the legal entity's number sequence and letterhead). The inward's survey, repair estimates, outward and gate pass, which have no choice, always follow the inward, main business included. Billables and payables of a unit that is, or sits under, a separate legal entity are numbered in that entity's own sequence. The breadcrumb and the save button show the inward's number with its legal entity's prefix (PH-12).
Delete an inward
Deleting needs the Delete permission for Inwards — either for all records or only your own — and team owners and administrators can always delete an inward regardless of that setting.
Open the inward's profile, open the toolbar's Actions menu and select the red Delete entry at the bottom (it only appears if you're allowed to delete this record). You're asked to confirm:
Delete this inward record? Its stock entry is removed and the container leaves stock. Records with estimates, surveys, work orders, a later outward, or reservation and discharge-list links cannot be deleted.
Deletion is refused if the inward still has any of the following, all checked together:
- a repair estimate
- repair estimate items
- a survey
- a workshop work order
- an outward record (a later departure of the same container)
- a discharge-list entry
- a reservation
The refusal appears as an error toast in the shape: "This inward record cannot be deleted: it has {reason, reason, ...}." — for example, "it has a repair estimate, an outward record."
When deletion succeeds:
- the inward record and its stock entry are removed;
- the container leaves stock — its condition, stack location, and yard are cleared, and its last-arrival details roll back to the previous stock entry if one exists;
- yard utilization figures are recalculated for the inward's date.
You see "Inward record deleted." and return to the Inwards list. The deletion is logged, and team owners and administrators receive a daily email digest at 7am listing the previous day's deletions, including this one.
Business units
Only when your organization uses business units:
- On the form. Business unit starts with the business unit of the container's open discharge-list entry, if it has one, otherwise with the one chosen in the header. You can change it before you save. The inward's survey, repair estimates, outward and gate pass all take the inward's business unit.
- Numbers. An inward on a business unit that is (or sits under) a separate legal entity is numbered in that legal entity's own sequence and shown with its prefix, for example PH-12. Other inwards keep your organization's sequence.
- Editing. You can move an inward to another business unit of the same legal entity; its stock record moves with it. Once a repair estimate or an outward is recorded against the inward, or a Container Depot invoice already bills this stay, its business unit can't be changed (an invoice bills only its own unit's stays, so moving the inward afterwards would bill the stay twice or not at all). Only the stay that was billed is locked, not the container's other stays, and because Container Depot invoices can't be voided, the lock is permanent. When your organization first turns business units on, stays that were already billed finish under your main business until the container leaves.
- The list. The Inwards list shows the business unit chosen in the header, with a Business unit column. To see another, select the funnel icon and choose a business unit (it includes its sub-units), {your organization} (main business) only, or All business units. Search for a prefixed number, for example PH-12, to find that legal entity's inward only; a number without a prefix finds every legal entity's.
- The profile. The details list shows the Business unit.
- Importing. Choose the Business unit on the upload page. Every inward in the file is saved on it, and the preview shows it.
Errors you may see
| Message | Why | What to do |
|---|---|---|
| "Invalid container number" / "Please check the container number and reenter it." | The container number failed format validation before OCTO Ops even checked the server. | Re-enter the correct container number. |
| "This container number is in stock. Please check again." | You entered a container that already has an open inward. The number is cleared. | Check whether an inward already exists for it, or confirm the number. |
| "The business unit chosen for this upload is no longer available. Upload the file again." | The business unit you chose on the upload page was deactivated or deleted, or business units were switched off, between the upload and Confirm and record. Nothing was saved. | Upload the file again and choose an active business unit. |
| "Error" / "Something went wrong. Please try again." | The container number check couldn't reach the server. The number is cleared. | Enter the number again. |
| "Container is already in stock" / "Container is already in stock during date and time" | The server found an overlapping stock record when you saved. | Refresh and check the container's current status before retrying. |
| "You have not setup any yards in your master data yet. Please setup yard and other master data before creating a container inward record." | No yard exists yet. | Set up a yard in Yards, then try again. |
| "Cannot create any additional estimates for this container." | The container isn't in stock, or this arrival has reached the repair-estimate limit your team's administrators set. | Check the container's stock status, or ask an administrator about the limit in Module settings. |
| "Repair estimates or an outward are already recorded against this inward, so its business unit can't be changed." | You tried to move an inward whose stay already has a repair estimate or an outward. | Keep the business unit. |
| "A Container Depot invoice already bills this stay, so its business unit can't be changed." | A Container Depot invoice already bills this stay of the container. | Keep the business unit. It can't be changed, because Container Depot invoices can't be voided. |
| "This document is numbered under {legal entity}. Its business unit can only be changed to one in the same legal entity." | The business unit you chose belongs to another legal entity. | Choose a business unit of the same legal entity. |
| "This inward record cannot be deleted: it has ..." | The inward still has dependent records. | Resolve or remove the listed records first, or leave the inward in place. |
Current limitations
- If someone else is saving a bill, payable or billable at the same moment, your save can briefly be refused with the pop-up "Another document in this series is being numbered right now. Try again in a moment." Nothing is saved, and saving again a moment later works.
- Payables recorded from an inward carry no tax: the total is the sub total. Legacy OCTO Ops showed a tax-model selector on this screen, but it never applied tax to the payable either.
- Four notification emails to shipping lines that legacy OCTO Ops sent automatically — three when an inward was registered, and one when the first work order was created against a container — are not sent in this version.
- Rows in a confirmed import whose container is already in stock are skipped without any row-level message on the confirm screen.
- The repair-estimate limit is checked only when you open the survey page; it is not re-checked when you submit the survey.
- On the inward profile, the Invoices card has no data yet, and the Work orders card's Assigned to, Progress, and Started columns are always blank — as they were in legacy OCTO Ops.
- Upload thumbnails and links point to where uploaded files are stored. Legacy OCTO Ops built these links from a different, fixed location, so a file that appeared under legacy may show a blank thumbnail here if it was stored somewhere other than the standard upload location.