P6 Global Change

Last reviewed 16 September 20268 min read

The most dangerous button, used safely β€” one rule, one report, one comparison, then commit

🟩 In one line: Global Change applies an If/Then/Else rule to every activity, assignment or expense in the project in one pass, cannot be undone, and is the right tool for exactly four jobs β€” assigning codes, correcting settings, populating UDFs and clearing fields by rule β€” provided it is run on a Reflection first, its report is read, and a Schedule Comparison proves it changed only what it was meant to.

πŸ‘€ Who this is for: J/M. Prerequisites: p6-reflections-and-what-if, p6-schedule-comparison, activity-coding-structure.

e / c

First, let's be honest about why this page exists

Global Change saves hours: 3,000 Area codes assigned from the WBS in ten seconds, 400 calendars corrected in one pass, every Expected Finish cleared where an Actual Finish exists. It also destroys schedules: an Else clause nobody noticed sets remaining duration to zero on everything that didn't match the If, and there is no Undo.

The second danger is quieter. Global Change is how the proportional remaining-duration cut gets done β€” "RD = OD Γ— 0.8" on the critical path β€” and that is the fiction forecasting-honestly and building-a-recovery-plan exist to prevent. The tool is not the problem; the arithmetic is.

🟨 The standard β€” what "good" looks like

SourceWhat it asks for (paraphrased)Consequence
AACE RP 38R-06Every duration has a documented basisNo Global Change ever writes a duration by formula on production work
GAO Schedule Assessment Guide, BP 9 and 10Changes documented; baseline traceabilitySpecification saved, report archived, comparison archived
PMI Practice Standard for Scheduling, 2nd ed.Schedule changes controlled and recordedEvery bulk edit appears in the change table
SCL Protocol 2nd ed., Guidance Part BContemporaneous record of programme changesReport + comparison = the record
Convention (redundant-relationships, logic-density-and-quality)Clean-ups proven neutral with Schedule ComparisonSame sequence here

🟒 Rule: Global Change touches codes, settings, UDFs and cleared fields β€” never durations, dates or logic on production work; it is run on a Reflection, its report is read line by line, Schedule Comparison proves the footprint, and only then is it run on the live project with the specification and both reports archived.

How it actually works

1. The dialog

ElementPath / contentNote
OpenTools β†’ Global Change β†’ New (or select a saved spec)Specs saved per user; "Available To" User / All Users / Another User
Subject AreaActivities / Activity Resource Assignments / Project ExpensesChoose before writing conditions β€” fields differ
IfOne or more conditions, ANDed; "Any of the following" for ORUse codes, WBS path, activity type, status, names
ThenField = value, or field = field Β± / Γ— valueThe action
ElseApplies to everything that fails the IfLeave empty unless you mean it β€” the single most destructive line in P6
Apply ChangeProduces a report of every proposed changeRead before Commit
Commit Changes / CancelWrites or discardsNo Undo after Commit

Filters: the change applies to the activities currently visible under the active filter/layout β€” a stacked filter narrows the footprint, which is useful and also a trap. Show All Activities before a project-wide change; apply a deliberate filter when the change is meant to be local.

2. The four legitimate jobs

JobExample specWhy it's safe
Assign codes from structureIf WBS code contains ".L05." Then Level = L05No date effect; provable by comparison (codes section)
Correct settings by typeIf Activity Type = Task Dependent Then Duration Type = Fixed Duration & Units; % Complete Type = PhysicalSetting change; run in a baseline draft, prove zero date change
Populate UDFsIf Discipline = BLK Then Unit = mΒ²Data only
Clear fields by ruleIf Actual Finish is not null Then Expected Finish = (blank)Removes stale overrides; date effect is intended and visible

Also acceptable, with the same discipline: calendar assignment by rule (If name contains "cure" Then Calendar = 7d 24h), where the resulting date changes are expected, listed and explained in the change table.

3. What it never does

NeverWhy
Remaining Duration = Original Γ— factorFiction with a formula; every RD comes from quantity Γ· achieved rate
Original Duration Β± days on production workDurations have a basis per activity, not per rule
Actual Start / Actual Finish by formulaActuals come from records
Physical % by formulaProgress comes from the quantity sheet
Constraint = value across a setConstraints are per document reference, one at a time
Delete or add relationshipsLogic is reasoned, not batched
Anything with an Else you didn't write deliberatelySee above

The exception for durations: copying Original Duration to Remaining Duration on not-started activities in a baseline draft after a duration correction is a settings tidy, not a forecast, and is acceptable with the proof.

4. The procedure

StepAction
1Create Reflection of the live project (p6-reflections-and-what-if)
2View β†’ Filters β†’ All Activities (or the deliberate filter, named in the record)
3Write the spec; Else empty; save as user spec with a descriptive name ("Assign Level from WBS – JED-H")
4Apply Change β†’ read the report: count of activities, every field written; look for rows you did not expect
5Commit on the Reflection; F9
6Schedule Comparison Reflection vs live: only the intended section shows differences (codes / UDFs / settings); dates empty unless expected
7Run the same saved spec on the live project; Apply β†’ report β†’ Commit
8Archive: spec name, both reports, comparison, one line in the change table
9Delete the Reflection or keep it until the update is issued

For a spec that will repeat every month (clear Expected Finish on completed activities), steps 1–6 happen once; afterwards step 4's report is read every time and step 6 runs quarterly.

5. Reading the Apply Change report

It lists every activity the change will touch and the old and new value of each field. Read the count first: 412 when you expected 26 means the If is too loose or a filter is off. Then scan for a field you did not name β€” that is the Else, or a Then line left from a previous spec. Cancel costs nothing; Commit costs the afternoon.

πŸŸ₯ Where people go wrong

  1. An Else clause left from the template. "Else Remaining Duration = 0" on everything that didn't match. Committed on the live project, no Undo. Else empty unless written on purpose, and the report read.
  1. Straight onto the live project. No Reflection, no comparison, and the first sign of trouble is the client's review. Reflection first, every time β€” it costs three minutes.
  1. RD Γ— 0.8 to hit a date. The recovery reaches the date in P6 and nowhere else. Durations are never written by Global Change on production work.
  1. A filter left on. Half the project changed, the other half didn't, and the two halves now have different code values. All Activities before a project-wide change.
  1. Report not read. Apply Change shows 3,000 rows; Commit clicked. The one field you didn't mean was on every row.
  1. Spec not saved, nothing archived. Next month the same change is rebuilt from scratch and slightly differently; in month 14 nobody can say what ran. Saved spec, two reports, comparison, change-table line.

βš–οΈ When you're challenged

"You changed 3,100 activities at once. How do I know the dates are the same?" The change wrote the Level code only. Schedule Comparison of the Reflection against the live project shows 3,100 rows in the activity-codes section and nothing in dates, durations, constraints or relationships. Both reports are in the archive folder.

"Just run a Global Change to cut the remaining durations by 20% on the critical path. It's a recovery." That reaches the date on screen and nothing on site changes, so the first weekly update is behind it. Recovery durations come from the measures β€” second crew, re-sequence, longer day β€” each with a basis note. That's a day's work in a Reflection, not a formula.

πŸ“„ Related pages

✏️ Worked example

Baseline draft for a hospital in Jeddah, 3,410 activities, template inherited with Duration % and Fixed Units/Time on 1,900 of them:

StepSpecReport countComparison result
Reflection created"JED-H BL Draft – GC test"β€”β€”
GC 1If Activity Type = Task Dependent Then % Complete Type = Physical3,102Settings only; dates empty
GC 2If Activity Type = Task Dependent Then Duration Type = Fixed Duration & Units3,102Settings only; dates empty (no resources loaded yet)
GC 3If Activity Type = Level of Effort Then % Complete Type = Duration; Duration Type = Fixed Duration & Units/Time61Settings only
GC 4If WBS code contains "TWR" Then Area = TWR (and 4 siblings for POD, EXT, INF, MIL)3,410 across five runsCodes only
GC 5If name contains "cure" Then Calendar = "JED-H Cure 7d 24h"8484 calendar changes; 84 finish dates earlier by 1–2 days; 6 downstream date changes β€” listed in the change table as intended
GC 6 (rejected in review)If TF ≀ 0 Then Remaining Duration = Remaining Duration Γ— 0.85β€”Not run. Recorded as requested and declined

Live project: specs 1–5 re-run, reports and comparisons archived, five lines in the SBM change log. Elapsed: 50 minutes including the Reflection and comparisons.

πŸ“– References

  • AACE International RP 38R-06, Documenting the Schedule Basis
  • GAO Schedule Assessment Guide (GAO-16-89G), Best Practices 9, 10
  • PMI Practice Standard for Scheduling, 2nd ed.
  • SCL Delay and Disruption Protocol, 2nd ed. (2017), Guidance Part B
  • Oracle Primavera P6 Professional User Guide β€” Global Change (field labels as in P6 Professional v20; earlier versions differ)

From the field

Notes, corrections and additions from people who've done this on a real job. Everything is checked before it appears here.

Loading notes…

Checked before it appears. No client, project or employer names. Your name is shown; your email never is. Terms.