How to Make Actual Cost & Units Match Earned Cost & Units in Primavera P6 (Safely!)
when you update the schedule specilay the physucal progress, the actual unit will not be uupdated by defult .
whey this important :
while you can use the eard cost earned units to calculate the cusrrent performnace , the forecast number will not be accurate becasue it been caluclated from the remanining units therefore we have to make sure the actual units and Cost equal to the earned units and Cost, and there is some setting you have to check
One of the common methods is to use Excel for this task. However, in one of my mega projects we were working with EPPM, where importing from Excel was not allowed and our ability to adjust P6 settings was very limited. Therefore, I had to rely fully on EPPM to accomplish this task. In our video, we explore different options and methods to achieve this, highlighting the pros and cons of each approach.
Imortant P6 settings
From project screen setting you must keep Calculate Costs from Units
Why this matters
P6 fundamentally calculates cost = units × price/unit when Calculate Costs from Units is checked.
If you override cost directly, you can look “okay” at cost level but break Actual Units, Remaining Units, and EAC (At Completion).
Many PMOs require progress by units (labor / non-labor / material). Your S-Curves, EV, and dashboards will only be trustworthy if Actual = Earned and EAC = Budget (unless you intentionally change forecast).
Pre-checks (do this first)
Resource Assignments → Columns: add these:
Calculate Costs from Units (must be checked)
Budgeted Units, Actual Units, Remaining Units, At Completion Units
Actual Cost, Earned Value Cost, At Completion Cost
Project Calculations (Defaults):
Subtract Actual from At Completion ✅
Baseline: make sure a baseline is assigned (for later variance checks).
Progress Type: know whether activities use Physical %, Duration %, or Units %.
Method 1 (Cost-only): Force Actual Regular Cost = Earned Value Cost
Use sparingly. Looks fine on cost columns but keeps Actual Units = 0 and silently unchecks Calculate Costs from Units on those assignments.
Global Change (Resource Assignments):
Set: Actual Regular Cost = Earned Value Cost
Symptom: Actual Units stay zero; re-checking Calculate Costs from Units drops the cost back to 0.
When it’s acceptable: Very high-level L1/L2 cost schedules where units are not governed.
Method 2 (Activity-level Units % = Performance %)
Not recommended. Works once, then EAC Units drifts because the recalculation uses the new EAC base next cycle.
Global Change (Activities):
Units % Complete = Performance % Complete
Symptom: After subsequent updates (e.g., 30% → 40%), Earned ≠ Actual and EAC ≠ Budget. Labor might align but Material/Non-Labor won’t (no “earned units” fields for them).
Method 3 (Recommended): UDF-Driven Units & Costs
Robust, repeatable, and works for Labor, Non-Labor, and Material—while keeping Calculate Costs from Units intact.
Step A — Create the UDF
Enterprise → User Defined Fields → Activities
Name:
Pct_A(any name)Type: Number
We’ll store the activity performance as a fraction (0.30, not 30).
Step B — Global Change #1: Store Performance in UDF (÷100)
Scope: Activities
If: Activity Status ≠ Not Started (optional but useful)
Then Set:
Pct_A = Performance % Complete / 100
If your project uses Physical %, map Performance % to your chosen %-complete.
Step C — Global Change #2: Apply % to Actual Units (by resource type)
Scope: Resource Assignments (filtered to your in-progress activities via codes/filters if needed)
Then Set (pick what you actually measure):
**Actual Labor Units = Budgeted Labor Units × **
Pct_A**Actual Non-Labor Units = Budgeted Non-Labor Units × **
Pct_A**Actual Material Units = Budgeted Material Units × **
Pct_A
If material is measured manually on site, skip just that line.
Step D — Global Change #3: Fix Remaining Units so EAC = Budget
Scope: Resource Assignments
Then Set:
Remaining Labor Units = Budgeted Labor Units − Actual Labor Units
Remaining Non-Labor Units = Budgeted Non-Labor Units − Actual Non-Labor Units
Remaining Material Units = Budgeted Material Units − Actual Material Units
With Calculate Costs from Units ✅, Actual Cost and At Completion Cost will follow correctly.
Validation checklist (after each cycle)
Resources view:
Actual Units show your progress (e.g., 40% of Budgeted Units).
Remaining Units = Budgeted Units − Actual Units.
At Completion Units = Budgeted Units (unless you are forecasting changes).
Costs view:
Actual Cost aligns with Earned Value Cost for the same progress.
At Completion Cost = Budgeted Cost (unless changed intentionally).
Key flag: Calculate Costs from Units must remain checked on all updated assignments.
Typical pitfalls & how to avoid them
Pitfall: Manually typing Actual Cost.
Fix: Never do this when you care about units integrity—update Actual Units and let cost calculate.Pitfall: Running Method 2 repeatedly.
Fix: Use the UDF pattern so each cycle is based on Budgeted Units, not drifting EAC.Pitfall: Mixed rules for Material.
Fix: If your contract requires measured material actuals, exclude Material from GC #2 and update it from site take-offs, but still run GC #3 to keep EAC = Budget (or adjust if you truly forecast different).
Copy-paste: Global Change rule texts (for your library)
GC#1 — Store % in UDF (Activities)
If:
Activity Status <> Not StartedThen:
Pct_A = Performance % Complete / 100
GC#2 — Set Actual Units (Resource Assignments)
Then (choose needed lines):
Actual Labor Units = Budgeted Labor Units * Pct_AActual Non-Labor Units = Budgeted Non-Labor Units * Pct_AActual Material Units = Budgeted Material Units * Pct_A
GC#3 — Fix Remaining Units (Resource Assignments)
Then:
Remaining Labor Units = Budgeted Labor Units - Actual Labor UnitsRemaining Non-Labor Units = Budgeted Non-Labor Units - Actual Non-Labor UnitsRemaining Material Units = Budgeted Material Units - Actual Material Units
Download
Fill the below form to dowload the globale change files
Users can Import → Global Change and run per your steps.

