Blog / Building a schedule

How to Build a WBS for a Construction Schedule

A work breakdown structure is the outline your schedule hangs on. Get it right and every report, filter, and summary bar falls out of it for free. Get it wrong and you spend the whole job fighting your own outline. This post covers what a construction WBS is for, the three common ways to organize one, how deep to go, and a worked example for a mid-size commercial building.

What the WBS is actually for

The WBS is a hierarchy of the work, broken into pieces small enough to plan, assign, and track. In a schedule it shows up as the indented summary rows above your activities. Those summary rows do three jobs:

  • Roll-up. A summary bar spans its children, so you can collapse 600 activities into 15 bars for an owner meeting.
  • Organization. When someone asks "where is the third floor rough-in?" they should be able to find it in two clicks.
  • Accountability. Each leaf of the WBS should be something one party can own.

What the WBS is not: logic. Summary rows do not drive dates. Activities and relationships do. If you find yourself wanting to link a WBS node to something, link the activities underneath it instead. Linking to summaries is one of the faster ways to create logic nobody can trace later.

Three ways to organize it

Most construction schedules use one of three primary breakdowns at the top level. None is universally correct. Pick the one that matches how the job will be managed, then use activity codes for the others.

Primary breakdownTop-level exampleGood forWeak at
By phasePreconstruction, Sitework, Structure, Envelope, Interiors, CloseoutOwner reporting, early-stage schedulesMulti-building or multi-floor work, where every phase repeats
By area/locationBuilding A, Building B, Parking Deck, SiteMulti-building jobs, phased occupancySeeing all of one trade across the project
By trade/CSI division03 Concrete, 05 Metals, 09 Finishes, 23 HVACProcurement, sub coordinationShowing how the building actually goes up

For most vertical buildings, a hybrid works best: phase at the top, location in the middle, and activities at the bottom, with trade carried as an activity code rather than a WBS level. The reason is simple. A superintendent thinks "level 3 is ready for drywall," not "Division 09 is 40% complete." The WBS should read the way the job is walked.

If you need to see everything by trade, filter or group by a responsibility code. That is what codes are for. See Activity Codes, Filters, and Layouts That People Use for how to set those up so they get used.

How deep to go

Three to five levels is typical for a building schedule. Past five, people stop expanding the tree and start searching instead, which defeats the purpose.

A useful test for each level: does collapsing to this level produce a view someone actually wants? If level 2 is "Structure" and level 3 is "Level 1 / Level 2 / Level 3 / Roof," collapsing to level 3 gives you a floor-by-floor structural summary. That is a real view people ask for. If level 4 under "Level 2" is "Columns" and "Beams" with two activities each, that level is not earning its keep. Fold it back up.

Leaves of the WBS should hold a handful to a few dozen activities. A WBS node with one activity is usually a sign of over-structuring. A node with 150 activities is usually a sign you need another split, typically by area. For more on how granular the activities themselves should be, see How Many Activities Should a Schedule Have?.

A worked example

Here is a WBS for a four-story office building with a podium parking level, structural steel frame, and curtain wall. It uses phase at level 1, area at level 2, and activities below.

1  Project Milestones
2  Preconstruction
   2.1  Permits and Approvals
   2.2  Submittals and Procurement
        2.2.1  Long-Lead Equipment (switchgear, elevators, AHUs)
        2.2.2  Structural Steel
        2.2.3  Curtain Wall
3  Sitework
   3.1  Demolition and Clearing
   3.2  Earthwork and Utilities
   3.3  Paving and Landscape
4  Structure
   4.1  Foundations (footings, grade beams, slab on grade)
   4.2  Podium Level
   4.3  Steel Frame, Levels 2-4
   4.4  Roof Structure
5  Envelope
   5.1  Roofing
   5.2  Curtain Wall, North/East
   5.3  Curtain Wall, South/West
   5.4  Building Dry-In
6  Interiors
   6.1  Level 1
   6.2  Level 2
   6.3  Level 3
   6.4  Level 4
7  Building Systems
   7.1  Elevators
   7.2  Electrical Service and Permanent Power
   7.3  Fire Alarm and Life Safety
   7.4  Testing, Adjusting, and Balancing
8  Closeout
   8.1  Inspections and TCO
   8.2  Punch List
   8.3  Commissioning and Turnover

A few things worth noticing:

  • Milestones get their own node at the top. That way the owner's view starts with the dates they care about. Milestones can still be linked into the logic wherever they belong.
  • Procurement is in the schedule. Long-lead items like switchgear and elevators drive more building schedules than concrete does. If they are not in the WBS, they tend not to be in the schedule at all.
  • Interiors breaks by floor, not trade. Under 6.2 Level 2 you would find framing, MEP rough-in, in-wall inspections, drywall hang/tape/finish, ceiling grid, and so on. Trade is a code.
  • Building systems that span floors get their own node. Elevators and TCO-critical life safety work do not belong to any one floor, and burying them in Level 1 hides them.

Codes for the WBS

Use a numbering scheme that sorts correctly. 1, 2, ... 10 will sort as 1, 10, 2 in some tools. Zero-pad if you expect more than nine children at a level (01, 02, ... 12), or use a dot hierarchy as above and make sure your tool sorts by outline position rather than text.

Keep WBS codes stable once the baseline is approved. Renumbering mid-job breaks every comparison between the baseline and later updates, because the tools match on IDs and codes. If you need a new node, add it at the end of its parent.

Mistakes that show up on almost every job

  • Mirroring the estimate exactly. The estimate is organized for pricing, often by CSI division. The schedule is organized for building. Map between them with a cost code, but do not force the schedule into estimate shape.
  • Using the WBS to encode sequence. Summary rows ordered top to bottom look like a sequence, but they are not. A reader will assume Envelope follows Structure because it sits under it in the outline. Make sure the logic agrees with what the outline implies, or the outline will lie.
  • Too many "General" or "Misc" buckets. If a node is called Miscellaneous, nobody owns it and nobody looks at it. Those activities slip quietly.
  • Leaving out owner and design activities. Submittal reviews, owner-furnished equipment, and permit approvals are work. They have durations and they drive dates. Give them a home.
  • Building the WBS after the activities. It is much easier to slot 400 activities into a tree than to retrofit a tree onto 400 activities. Sketch the WBS first, even on a whiteboard.

When the owner specifies the WBS

Some contracts require a WBS that matches the owner's cost structure or a program-level standard. Read the schedule spec, usually Section 01 32 16, before you build anything. If the required WBS does not match how you will run the job, you have two options: build to the spec and carry your preferred breakdown as an activity code, or ask for an approved deviation before the baseline submittal. The first is usually less painful. Reading a Schedule Spec: Section 01 32 16 covers what else to look for.

If you are importing a schedule from Primavera P6 or MS Project, the WBS should come across with it. In schedule.construction, an imported .xer or MS Project XML file keeps its WBS hierarchy, and you can add activity codes alongside it for the other breakdowns.

Key takeaways

  • The WBS organizes and rolls up the work. Logic drives dates. Do not confuse the two.
  • For buildings, phase then location then activities usually reads best. Carry trade and cost as activity codes.
  • Three to five levels is plenty. Every level should produce a view someone wants.
  • Put procurement, permits, owner work, and milestones in the WBS so they end up in the schedule.
  • Lock WBS codes at baseline so later comparisons still line up.