Blog / Lookaheads & pull planning

Connecting Pull Plans Back to the Master Schedule

A pull planning session produces a sequence the trades built and believe. The master schedule holds the contract dates, the critical path, and the record you'll need if there's ever a delay dispute. If the two don't talk to each other, within a month you have two schedules and people pick whichever one suits the argument. This post covers how to bring a pull plan back into the CPM schedule: what to update, at what level of detail, and how to keep them reconciled week to week.

Decide the relationship up front

Before the first pull planning session, the project team should agree on one thing: the CPM schedule is the schedule of record, and pull plans are the detailed plan for a phase within it. The pull plan can and should change the CPM, but through a deliberate update, not by drifting.

There are three common ways to structure the link. Pick one per phase and be consistent.

ApproachHow it worksGood forWatch out for
Summary activityCPM keeps one or a few activities for the phase. Pull plan informs their durations and remaining durations.Phases with lots of short tasks; owners who want a lean master scheduleLogic inside the phase is invisible to CPM float calculations
Handoff milestonesCPM carries milestones at key handoffs from the pull plan (e.g., "L3 east duct mains complete").Phases where a few handoffs drive other workMilestones without activities between them can hide durations
Detailed fragmentPull plan tasks become CPM activities, replacing the summary.Critical phases where float inside the phase mattersActivity count grows; field updates get heavier

Most jobs end up using a mix: summary activities for phases with plenty of float, detailed fragments for the phases on or near the critical path.

A worked example

The master schedule has one activity for an above-ceiling phase:

A1200  L3 East Above-Ceiling MEP Rough-In   24d   TF 0 (critical)
A1210  L3 East Ceiling Close-In (milestone)       successor of A1200

The trades pull-plan the phase to the close-in milestone and produce this sequence (workdays, FS, zero lag):

IDTaskDurPredecessors
ASprinkler mains4none
BDuct mains4A
CBranch duct and VAV boxes5B
DAbove-ceiling conduit and boxes4B
ESprinkler branch lines and drops3C
FFire alarm devices2D
GAbove-ceiling punch walk1E, F
HAbove-ceiling inspection1G

Run the passes using the 0-based convention: ES of the first activity is 0, EF = ES + duration, and a successor's ES is the largest EF of its predecessors. The backward pass starts with LF of the last activity equal to its EF.

Forward pass                     Backward pass            Float
ID  Dur  ES  EF                  LS  LF                   TF   FF
A    4    0   4                   0   4                    0    0
B    4    4   8                   4   8                    0    0
C    5    8  13                   8  13                    0    0
D    4    8  12                  10  14                    2    0
E    3   13  16                  13  16                    0    0
F    2   12  14                  14  16                    2    2
G    1   16  17                  16  17                    0    0
H    1   17  18                  17  18                    0    0

Total float is LS minus ES (for D: 10 - 8 = 2). Free float is the earliest successor ES minus the activity's EF (for D: F's ES 12 - D's EF 12 = 0; for F: G's ES 16 - F's EF 14 = 2). The phase's driving path is A-B-C-E-G-H, 18 workdays. Electrical and fire alarm share 2 days of float. If you want the arithmetic in more depth, see forward and backward pass, worked by hand.

So the trades believe the phase takes 18 workdays, against 24 in the CPM. That's a significant finding on a critical activity, and it needs a decision.

What to bring back

Durations

If the pull plan's duration is credible, update the CPM. In the summary approach, change A1200's original duration (if you're still before the start and the baseline allows revisions) or its remaining duration (once it's underway). Write down why: "Revised per pull plan session, week 12, attended by FP, Mech, Elec, FA, GC."

Don't automatically take the shorter number. Ask whether the pull plan assumed anything the CPM didn't: a larger crew, overtime, a zone split, an inspection the AHJ hasn't agreed to. If the trades leave buffer at the end of the phase, decide whether that buffer stays in the CPM duration or becomes visible schedule contingency. Either is defensible. Hiding it is not.

Logic

Pull plans often reveal logic that the CPM got wrong. Maybe the CPM had electrical waiting on all duct, when the trades say electrical can start once mains are hung. If the phase is a summary activity, the change is internal and may not affect the CPM. If the phase touches other work (the ceiling grid installer, the fireproofing touch-up, a separate area's crew), update the relationships in the CPM. A date change without a logic change becomes out-of-sequence progress later; see out-of-sequence progress.

Float

The trades in a pull planning session usually can't see total float in the master schedule. Tell them. A phase on the critical path needs a different conversation than one with six weeks of slack. When you bring the pull plan back, check whether the change created new critical or near-critical paths elsewhere. Shortening a critical phase by six days often hands the critical path to another sequence that was sitting at four days of float.

Milestones

If the pull plan shows the milestone can't be met, that's a schedule problem, not a planning-session problem. Model it in the CPM, see what it does to downstream milestones and the contract completion, and take it to the project team. Many contracts require prompt notice of a projected delay, so check yours and don't sit on it.

Keeping them in sync week to week

The initial reconciliation is the easy part. The ongoing one is where it falls apart.

  1. Map every pull plan task to a CPM activity. Record the parent activity ID on each task, the same way you would in a three-week lookahead.
  2. Status the CPM from the pull plan, not from memory. At each update, use the state of the pull plan tasks under each CPM activity to set actual starts, remaining durations, and actual finishes. Remaining duration on a summary activity is the length of the longest remaining chain of its tasks, not an average.
  3. Re-pull when the plan breaks. If a phase is more than a few days off its pulled sequence, hold a short re-plan session rather than patching the old one.
  4. Push logic changes up. Any resequencing that crosses phase boundaries gets made in the CPM, not just on the board.
  5. Keep the conversation going both ways. When the CPM update shows a downstream slip, take it back to the trades in the next weekly meeting.

A note on detail

There's a temptation to make the CPM schedule carry every pull plan task, so nothing ever needs reconciling. On a small job that can work. On a large one it buries the master schedule in thousands of short tasks that the scheduler then has to status every month. Most teams do better with detailed fragments only where float is tight, and summary activities everywhere else. How many activities should a schedule have covers the tradeoff.

Tools can help with the mapping. In schedule.construction, the pull planning board and lookahead sit on the same project as the CPM schedule, so tasks can carry their parent activity. The reconciliation decisions are still yours.

Key takeaways

  • Agree up front: the CPM is the schedule of record, and pull plans update it deliberately.
  • Choose summary activities, handoff milestones, or detailed fragments per phase, and use detailed fragments where float is tight.
  • Bring back durations, logic, and milestone risk, with a note on why each changed. Check assumptions before taking a shorter duration.
  • After changing a critical phase, recheck the critical and near-critical paths.
  • Map every pull plan task to a CPM activity and status the CPM from the pull plan at every update.