Ctrl+K

Bill of Quantities

The Bill of Quantities (BOQ) captures all client requirements as a priced hierarchy of deliverables. Each BOQ item specifies a quantity, unit of measure, and billing rate. BOQs are the foundation of project delivery — they drive scope linking, cost estimation, progress billing, and variation tracking.

How to Track BOQ Progress 0:37
BOQ lifecycle flowchart showing creation methods, states, and linking
BOQ lifecycle — from creation (manual or upload) through CREATED and CONTRACTED states, with optional stage-wise splitting and scope linking.

BOQ Structure

BOQs are organized in a group → item hierarchy. Groups act as folders that categorize related items (e.g., "Civil Works", "MEP", "Finishing"). Each item within a group represents a specific deliverable with its own code, description, unit, rate, and quantity.

LevelPurposeExample
Group Category container for related BOQ items "Civil Works", "Electrical", "Plumbing"
Item Individual deliverable with quantity and rate "Excavation — 500 CUM @ 120/CUM"

BOQ States

BOQ items progress through two lifecycle states controlled by the boq_status field:

StateStatus CodeDescriptionEditable?
CREATED 0 BOQ has been entered and can be freely modified Yes
CONTRACTED 1 BOQ is finalized under a contract — locked for editing No
Note: Once a BOQ is contracted, changes must go through the Variation Order process. You cannot directly edit contracted BOQ items.

BOQ Item Fields

Each BOQ item stores the following data (from omni_job_clientboq_master, 30 columns):

FieldDB ColumnTypeDescription
Item Code client_boq_code varchar(15) Unique code within the job (e.g., "G1/I1")
Description client_boq_description varchar(max) Full description of the deliverable
Unit of Measure uom_id int (FK) UOM lookup — BAG, CUM, SQM, NOS, etc.
Rate rate money Price per unit (billing rate to client)
Quantity quantity float Total contracted quantity
Value value float Auto-calculated: rate × quantity
BOQ Type BOQ_Type int Categorization of the BOQ item type
Invoice Type Invoice_Type_ID int Determines how this item is billed
Billable billable bit Whether this item can be invoiced to the client
Is Supply is_supply bit Flags supply-only items (no installation)
Stage-wise is_stagewise bit Whether billing is split across stages
Notes notes varchar(max) Free-text notes or specifications
Tax 1 boq_tax1_id / boq_tax1_amount int / money Primary tax applied to this BOQ item
Tax 2 boq_tax2_id / boq_tax2_amount int / money Secondary tax (if applicable)
Value with Tax BOQ_value_with_tax float Total value including all taxes
BOQ tab in JobNext showing item grid with codes, descriptions, quantities and rates
BOQ tab — contract value summary, item grid with type, code, status, description, UOM, quantity, and rate columns.

Method 1: Manual BOQ Entry

Add BOQ items one at a time through the user interface. Best for small BOQs or when adding individual items to an existing list.

Step 1: Navigate to BOQ

  1. Open the Operations module and click Jobs
  2. Select a job from the card grid
  3. Click BOQ in the horizontal menu tabs

Step 2: Create a Group

  1. Click Add Group
  2. Enter the group name (e.g., "Civil Works")
  3. Click Save

Step 3: Add Items to the Group

How to Add BOQ to a Job 0:37
  1. Click Add Item within the group row
  2. Fill in the BOQ item form:
    • Item Code — unique identifier (e.g., "CW/001")
    • Description — what is being delivered
    • Unit — select from UOM dropdown
    • Rate — client billing rate per unit
    • Quantity — contracted quantity
    • Billable — check if this item should appear on invoices
    • Notes — optional specifications
  3. Click Submit
Tip: The Value field is auto-calculated as Rate × Quantity. You do not need to enter it manually.

Method 2: Upload BOQ from Excel

For large jobs with many BOQ items, the Excel upload method is significantly faster. Use this when you have 20+ items or when migrating from another system.

How to Upload BOQ from Excel 0:36
  1. Navigate to Job → BOQ section
  2. Click Upload BOQ (top-right corner)
  3. Click Download Template to get the "BOQFormat.xlsx" file
  4. Fill in the template following the column structure:
    • Group Name, Item Code, Description, UOM, Rate, Quantity
    • Optional: Billable flag, Notes, Tax IDs
  5. Click Choose File and select your completed Excel file
  6. Click Upload File
  7. Verify the success message: "BOQ items uploaded successfully!"
Important: Always download the latest template before preparing your upload. The template ensures your data matches the expected column structure. Corrections after upload require manual editing of individual items.

Stage-wise BOQ

For phased projects, BOQ items can be split into stages. Each stage represents a milestone or phase of delivery with a percentage allocation of the total quantity.

FieldDB ColumnDescription
Stage Name stage_name Name of the delivery phase (e.g., "Foundation", "Superstructure")
Stage Percent stage_percent Percentage of the BOQ item allocated to this stage
Notes notes Stage-specific notes or conditions

To enable stage-wise billing:

  1. Open a BOQ item and set Stage-wise to Yes
  2. Click Manage Stages
  3. Add stages with their names and percentage allocations
  4. Ensure all stage percentages total 100%
Note: Stage-wise BOQ is stored in omni_job_clientboq_stage. Each stage links back to the parent BOQ item via boq_id.

Linking BOQ to Scopes

After creating BOQ items, link them to Job Scopes for estimation and execution tracking. Each scope item can reference one or more BOQ items via the boq_id column in omni_job_scope.

There are two approaches:

ApproachWhen to UseSee
Standard Complex projects where BOQ items map to multiple scopes with different resource requirements Scopes & WBS
Shortcut (BOQ → Scope) Simple projects where each BOQ item maps 1:1 to a scope BOQ to Scope Conversion
Warning: The BOQ-to-Scope shortcut creates a 1:1 mapping that cannot be easily changed later. For projects with complex scope hierarchies, use the standard approach.

BOQ in the Project Lifecycle

BOQ connects to multiple downstream processes:

Downstream ProcessHow BOQ is Used
Scope Linking BOQ items are mapped to job scopes for estimation
Estimation Resource estimates are built per scope (linked to BOQ)
Progress Billing Invoices reference BOQ items and their completed quantities
Variation Orders Changes to contracted BOQ items are tracked as variations
Job Dashboard BOQ completion percentages drive progress KPIs

Videos

The following videos demonstrate key features and workflows covered on this page.

How to Update Job Progress 0:36

How to Update Job Progress.