P6
SmartEPMO AcademyPrimavera P6 Mastery
Course homeby Mohamed Abdalmonem, P.Eng
Led by an industry expert

Mohamed Abdalmonem, P.Eng

Riyadh, Saudi Arabia

Strategic Portfolio Management & Digital Project Controls | Enterprise Transformation | P6 EPPM, Primavera Unifier, Power BI & Apps specialist

PfMP®PMP®SP®RMP®ACP®P3O®PMOCP
Section 1 of 10

1 · Introduction

Get comfortable with the P6 environment and the enterprise structure every project lives inside.

1.1 Interface

Goal: recognise every part of the P6 Professional window and know where to click.

Oracle Primavera P6 Professional is the desktop client used by planners to build and control schedules. Before doing anything, you need a mental map of the screen so menu paths in later lessons make sense.

The main areas of the window

Open a project and load a layout

  1. Open the EPS/Projects view: Enterprise ▸ Projects (or the Projects toolbar button).
  2. Double-click a project to open it, then switch to activities with Project ▸ Activities.
  3. Load a saved screen arrangement with View ▸ Layout ▸ Open; save your own with View ▸ Layout ▸ Save As.
Tip

A Layout is just a saved combination of columns, bars, grouping, sorting, filters and timescale. You can have many layouts and switch instantly, none of them change the data, only how it is displayed.

Common mistake

Confusing opening the application with opening a project. P6 can be running with no project open, the Activities view will be empty until you open one from Enterprise ▸ Projects.

1.2 OBS, Organizational Breakdown Structure

Goal: understand who is responsible for what, and why OBS controls security.

The OBS is a hierarchy of the people / roles responsible for the work, for example Company → Project Director → Project Manager → Planner. In P6 the OBS does two jobs: it records responsibility (which manager owns a node of the EPS or WBS) and it drives security (which users can see or edit which projects).

Create / edit the OBS

  1. Open Enterprise ▸ OBS.
  2. Select the parent under which the new element belongs.
  3. Click Add, type the OBS name, and use the arrow buttons (▶ ◀ ▲ ▼) to position and indent it in the hierarchy.
  4. On the General tab add a description; on the Users tab see which user accounts are linked to this OBS element.
  5. On the Responsibility tab review which EPS/WBS nodes this element owns.
Tip

You assign an OBS element to each EPS node and project. A user only sees the projects whose OBS they are granted access to, so a clean OBS is the foundation of a clean security model.

Common mistake

Building the OBS as a copy of the WBS. The OBS is about responsible people, not about the work scope. Keep it organizational.

1.3 EPS, Enterprise Project Structure

Goal: build the folder hierarchy that all projects are stored under.

The EPS is the top-level hierarchy that organises every project in the database, think of it as company folders, e.g. Region → Division → Program. Each project must sit under an EPS node. Summaries (cost, dates, progress) roll up the EPS automatically, so you can report at any level.

Create EPS nodes

  1. Open Enterprise ▸ Enterprise Project Structure (EPS).
  2. Select where the new node should go, click Add.
  3. Enter an EPS ID (short code) and EPS Name.
  4. Assign a Responsible Manager (an OBS element), this is required and sets default security.
  5. Use the indent/outdent arrows to position the node correctly.
LevelWhat it representsExample
EPS rootThe whole enterpriseMy Company
EPS nodeDivision / program / folderBuildings · Infrastructure
ProjectA single scheduleTower A Construction
WBSWork inside the projectFoundations · Structure
Common mistake

Dumping all projects at the EPS root. Without a meaningful EPS you lose roll-up reporting and security boundaries.

1.4 Create a New Project

Goal: use the Create Project wizard to add a project under an EPS node.

  1. Open Enterprise ▸ Projects and select the EPS node that will be the project's parent.
  2. Choose File ▸ New (or click Add) to launch the Create a New Project wizard.
  3. Select EPS, confirm the parent node.
  4. Project Name & ID, enter a short Project ID (e.g. TWR-A) and a full name.
  5. Planned Start & Must Finish By, set the planned start date. Leave Must Finish By blank unless there is a hard deadline.
  6. Responsible Manager, pick the OBS element that owns the project.
  7. Rate Type, accept the default resource rate, then click Finish.

Set the essentials after creation

Open the project and review the Project Details tabs at the bottom: set the Defaults (default duration, activity type), Settings (define critical activities by Total Float ≤ 0), and the project Calendar. The Dates tab is where you will later see the Data Date.

Tip

Keep the Project ID short and meaningful, it prefixes activity IDs and appears in every export, so changing it later is painful.

1.5 Project Codes

Goal: tag projects with attributes so you can group and filter across the EPS.

Project Codes are labels you attach to whole projects, e.g. Region = East, Phase = Design, Client = ABC. They let you group, sort and filter the Projects view across the entire enterprise, and they power portfolio reporting.

Define a project code and its values

  1. Open Enterprise ▸ Project Codes.
  2. Click Modify to create a new code definition (e.g. Region) and set its Max Length.
  3. Back in the Project Codes dialog, with that code selected, click Add to create values (e.g. East, West, North).

Assign a code value to a project

  1. In Enterprise ▸ Projects, select the project.
  2. Open the Codes tab in Project Details and click Assign.
  3. Pick the value for each relevant code.
Tip

Group the Projects view by a project code (View ▸ Group and Sort) to instantly see portfolios by region, client or phase.

1.6 Work Breakdown Structure (WBS)

Goal: decompose the project scope into a deliverable-oriented hierarchy that holds the activities.

The WBS breaks the project's total scope into manageable, deliverable-based chunks, e.g. Substructure → Foundations → Pile Caps. Every activity belongs to a WBS element, and cost/schedule roll up the WBS. A good WBS is the backbone of a readable schedule.

Build the WBS

  1. Open the project, then go to Project ▸ WBS.
  2. Select the project root (top node) and click Add.
  3. Type the WBS Code (a short suffix) and WBS Name.
  4. Use the indent/outdent and up/down arrows to shape the hierarchy.
  5. Repeat to create child elements; assign a Responsible Manager (OBS) per element if needed.
Tip

Design the WBS by deliverables / areas / phases, not by trade. Aim for 100% of the scope, with each element decomposed only until it is small enough to estimate and control.

Common mistake

Creating activities directly under the project root with no WBS. The schedule becomes a flat, unfilterable list that cannot be summarized.

1.7 Calendar

Goal: define working days, holidays and work hours that drive all date and duration math.

Calendars tell P6 which days are working vs non-working and how many hours are in a workday. Every activity (and every resource) follows a calendar, so the calendar directly controls how durations convert into start/finish dates.

Three calendar pools

Create and edit a calendar

  1. Open Enterprise ▸ Calendars and choose the Global or Project tab.
  2. Click Add, choose a calendar to copy from, and name it (e.g. 6-Day 8h).
  3. Click Modify to open the calendar grid.
  4. Set the standard workweek (e.g. Sat–Thu working, Fri off) and the hours per day via Workweek and Total work hours/day.
  5. Mark holidays / exceptions by selecting dates and toggling them non-working.
Tip

Set the project's default calendar before creating activities (Project Details ▸ Defaults). New activities inherit it, saving you from re-assigning calendars one by one.

Common mistake

Mismatched Hours/Day between the calendar and Admin Preferences makes durations look wrong (e.g. a "1 day" task showing as 0.5d). Keep the time settings consistent.

Section 2 of 10

2 · Develop Schedule

Turn the WBS into a working CPM network: activities, codes, logic and constraints.

2.1 Create New Activities

Goal: add activities under the WBS, choose the right activity type and duration type.

An activity is a single piece of work with a duration. Activities live under WBS elements and are the rows you schedule, resource and update.

Add activities

  1. Open Project ▸ Activities.
  2. Select the WBS band where the activity belongs, then click Add (or press Insert).
  3. Type the Activity Name; P6 auto-generates the Activity ID (you can change the prefix/increment in Project Details ▸ Defaults).
  4. Enter the Original Duration (in days/hours per your settings).
  5. Set the Activity Type on the General tab.

Activity types you must know

TypeUse it for
Task DependentNormal work; uses the activity's calendar (the default).
Resource DependentWork whose timing follows the assigned resources' calendars.
Start / Finish MilestoneZero-duration markers (e.g. Notice to Proceed, Handover).
Level of Effort (LOE)Sustaining work spanning others (e.g. Site management); duration is driven by its relationships.
WBS SummarySummarizes activities within a WBS band.
Tip

Duration Type (Fixed Units, Fixed Duration & Units, Fixed Duration & Units/Time, Fixed Units/Time) controls how P6 recalculates when you change duration, units or resources. For non-resourced schedules, Fixed Duration & Units behaves most predictably.

Common mistake

Giving milestones a duration. Milestones must be zero days, otherwise they are not events, they are tasks.

2.2 Activity Codes

Goal: tag activities (phase, area, trade, discipline) for grouping, filtering and reporting.

Activity Codes are attributes attached to activities, like Discipline = Civil, Area = Zone 1, Responsible = Subcontractor X. They are the most powerful organizing tool in P6 because you can group, sort, filter and roll up by them without changing the WBS.

Code scopes

Create codes and values

  1. Open Enterprise ▸ Activity Codes.
  2. Pick the scope (Global / EPS / Project), click Modify to add the code name (e.g. Area).
  3. Close back to the Activity Codes dialog and click Add to create values (e.g. Zone 1, Zone 2) with descriptions.

Assign to activities

  1. Select activities in the Activities view.
  2. Open the Codes tab in Activity Details and click Assign, or add the code as a column and pick values inline.
Tip

To tag many activities fast, add the code as a column, set the value on one row, then copy the cell down (Ctrl+C / Ctrl+V) or use Fill Down.

2.3 Relationships (Logic)

Goal: link activities with the four relationship types and lag, then run the schedule (F9).

Relationships are the dependencies that connect activities into a network so P6 can calculate dates with the Critical Path Method (CPM). Each link has a predecessor and a successor.

The four relationship types

TypeMeaningTypical use
FS, Finish to StartSuccessor starts after predecessor finishesDefault; most logic
SS, Start to StartSuccessor starts after predecessor startsOverlapping / parallel work
FF, Finish to FinishSuccessor finishes after predecessor finishesFinish together
SF, Start to FinishSuccessor finishes after predecessor startsRare (just-in-time)

Create links

  1. Select an activity and open the Relationships tab in Activity Details.
  2. Click Assign under Predecessors (or Successors) and choose the activity.
  3. Set the Relationship Type (FS/SS/FF/SF) and any Lag (positive = delay, negative = lead/overlap).
  4. Alternatively, drag from the end of one Gantt bar to another to draw an FS link.
  5. Run the schedule: Tools ▸ Schedule or press F9, confirm the Data Date, click Schedule.
Tip

After F9, P6 reports open ends in the Schedule Log. Every activity (except the true start and finish) should have at least one predecessor and one successor.

Common mistake

Overusing lags and negative lags to force dates. They hide real logic and make the schedule hard to analyse, prefer breaking the activity down instead. P6 also blocks loops (circular logic); fix them before scheduling succeeds.

2.4 Constraints

Goal: impose external date requirements without breaking the logic-driven network.

Constraints override or restrict the CPM dates to reflect real-world deadlines, a permit date, a client-imposed milestone, a delivery date. Use them sparingly; logic should do most of the work.

Apply a constraint

  1. Select the activity and open the Status tab in Activity Details.
  2. In the Constraints area choose a Primary (and optional Secondary) constraint and set its date.
  3. Re-run the schedule with F9 to see the effect.

The common constraint types

ConstraintEffect
Start On / On or After / On or BeforePins or limits the activity's start.
Finish On / On or After / On or BeforePins or limits the finish.
Mandatory Start / FinishHard date that overrides logic, can break the network. Use with care.
As Late As Possible (ALAP)Delays the activity to consume its free float.
Common mistake

Mandatory constraints break float calculation and can hide negative float, masking a slipping schedule. Prefer Start On or After / Finish On or Before which respect logic. Review all constraints regularly (filter by Primary Constraint is not equal to None).

Section 3 of 10

3 · Formatting

Make the schedule readable and presentation-ready.

3.1 Format Time Scale

Goal: control the date ruler above the Gantt, units, range and density.

The timescale is the calendar header across the top of the Gantt chart. Setting it well makes the difference between a chart that fits on a page and one that scrolls forever.

Open and adjust

  1. Open View ▸ Timescale (or right-click the timescale header).
  2. Set the Timescale Format, e.g. two-line Month / Week or Year / Month.
  3. Choose the Date Interval (Year, Quarter, Month, Week, Day) for the bottom line.
  4. Set the Font & Color and toggle the Financial Period or ordinal (Day 1, 2, 3…) display if needed.
  5. Drag the small slider above the Gantt, or use the zoom buttons, to compress/expand horizontally.
Tip

Right-click the timescale and pick Timescale for the same dialog. For long projects use Month/Week; for short look-aheads use Week/Day.

3.2 Format Bars

Goal: choose which bars show (Remaining, Baseline, Critical, Float) and style them.

The Bars dialog defines every bar drawn in the Gantt: their shape, colour, position and the text that sits beside them. This is where you create the classic look, current bar, baseline bar underneath, critical activities in red.

Configure bars

  1. Open View ▸ Bars (or right-click the Gantt ▸ Bars).
  2. Tick the Display box for the bars you want: e.g. Remaining Work, Critical Remaining Work, Project Baseline, Float, Milestone.
  3. For each bar set Filter (which activities it applies to), Shape / Color / Row on the Bar Style tab.
  4. On the Bar Labels tab add text such as Activity Name, Start, Finish or % Complete and choose its position (left/right/inside).
  5. Use Shift Up/Down so baseline bars sit on a different row beneath the current bar.
Tip

Click BarsOptions ▸ Collapsed Bars to control how summary bars look when a WBS band is collapsed.

Common mistake

Wondering why the baseline bar is missing, you must first assign a baseline to the project (see Baseline project) before the baseline bar can display.

3.3 Format Columns

Goal: pick exactly which data fields appear in the activity table, and in what order.

Columns are the fields shown in the table on the left of the Activities view. P6 has hundreds of fields; choosing the right ones keeps the view focused.

Add / remove / order columns

  1. Open View ▸ Columns (or right-click a column header ▸ Columns).
  2. From Available Options (grouped by category) select fields and click ▶ to move them to Selected Options.
  3. Reorder with the up/down arrows; the top item is the left-most column.
  4. Use Edit Column to set the title, width and alignment.
  5. Click OK; drag column borders in the table to fine-tune widths.
Tip

Essential columns to start with: Activity ID, Activity Name, Original Duration, Remaining Duration, Start, Finish, Total Float, % Complete. Add Baseline Start/Finish and Variance columns once you have a baseline.

3.4 Format Network (Activity Network View)

Goal: switch to the logic diagram (PDM boxes) and lay it out clearly.

The Activity Network view shows activities as boxes connected by arrows (Precedence Diagram Method) instead of bars. It is ideal for reviewing logic and tracing the critical path.

Open and format the network

  1. Switch the view: View ▸ Show on Top ▸ Activity Network.
  2. Right-click an empty area ▸ Activity Network Options.
  3. On Activity Box Template choose which fields show inside each box (ID, name, dates, float).
  4. On Activity Network Layout set spacing, orientation and whether to organize by WBS.
  5. Use View ▸ Zoom or the zoom buttons to fit the diagram.
Tip

Critical activities and links appear red (using the same critical definition as the Gantt), so the network is a fast way to walk the critical path end to end.

Common mistake

The network view does not show a timescale, so it is for logic review, not for communicating dates, keep the Gantt for that.

Section 4 of 10

4 · Sort & Filter

Reshape what you see without changing the underlying data.

4.1 Group & Sort

Goal: band the activity table by WBS, code or any field, and sort within each band.

Group and Sort organises the activity table into collapsible coloured bands and orders the rows inside them. Grouping is purely visual, it changes nothing in the data, but it transforms readability and lets P6 show subtotals (durations, cost, units) on each band.

Set up grouping

  1. Open View ▸ Group and Sort (or right-click the table ▸ Group and Sort by).
  2. In the Group By grid, pick a field for each level, e.g. Level 1 = WBS, Level 2 = Activity Code: Area.
  3. Set To Level for hierarchical fields (how many WBS tiers to show), and choose a band font / background colour.
  4. Tick Show Group Totals and Show Grand Totals to display subtotals on the bands.
  5. Tick Show Title / Show ID, Name to control the band caption.

Sort within groups

  1. Click Sort in the Group and Sort dialog.
  2. Add sort fields (e.g. Start ascending, then Total Float ascending), P6 sorts rows inside each band by these.
Tip

Collapse all bands with the on a band header (or View ▸ Collapse All) to get an instant summary-level Gantt for management. Save useful groupings as named Layouts.

Common mistake

Grouping by a date or duration field directly creates dozens of tiny bands. Group by hierarchical/coded fields (WBS, codes) and use Sort for dates.

4.2 Filtering the Activities

Goal: show only the activities that match your criteria, critical, this month, by area, incomplete, etc.

Filters hide rows that don't match a set of conditions. They are essential for look-aheads, critical-path reviews and progress meetings. Filters never delete anything, clear the filter and everything returns.

Apply a built-in filter

  1. Open View ▸ Filters.
  2. Tick one or more Default filters (e.g. Critical, In Progress, Has Finished).
  3. Choose All selected filters (AND) or Any selected filter (OR) at the top.
  4. Click Apply then OK.

Build a custom filter

  1. In the Filters dialog click New and name it (e.g. 3-Week Look-ahead).
  2. Add a row: choose a Parameter (e.g. Start), an Is operator (e.g. is within range of) and the Value(s).
  3. Add more rows; group them and set the (All)/(Any) logic to combine conditions.
  4. Apply to preview, then OK.
GoalFilter condition
Critical activitiesTotal Float ≤ 0 (or built-in Critical)
Remaining work only% Complete < 100 / Activity Status ≠ Completed
This monthStart within range of the month dates
One areaActivity Code: Area = Zone 1
Tip

Use relative date ranges (e.g. within range of DD and DD+21) so a saved look-ahead filter always moves with the Data Date. Combine filters with grouping and save the result as a Layout for one-click reuse.

Section 5 of 10

5 · Baseline & Update

Freeze the approved plan and keep the schedule live.

5.1 Baseline Project

Goal: capture an approved snapshot of the schedule to measure progress and variance against.

A baseline is a saved copy of the project at a point in time, usually the approved plan. Once assigned, P6 can draw baseline bars and compute variance (e.g. Start Variance, Finish Variance) so you can see slippage.

Create and assign a baseline

  1. Open the project. Go to Project ▸ Maintain Baselines.
  2. Click Add, choose Save a copy of the current project as a new baseline, click OK.
  3. Rename it clearly (e.g. BL01 – Approved Plan) and set its Baseline Type; close the dialog.
  4. Go to Project ▸ Assign Baselines.
  5. Set the Project Baseline (used for variance) and the Primary user baseline (used by bars/columns), click OK.

Show it

  1. Open View ▸ Bars and tick the Project Baseline bar (see Format Bars).
  2. Add Baseline Start / Finish and Variance – Finish Date columns to compare in the table.
Tip

Take the baseline before you start updating. You can keep several baselines (e.g. original + current revisions) and switch which one is primary.

Common mistake

Updating progress first, then baselining, that bakes the slippage into the "plan," so variance reads zero. Baseline the clean, approved schedule.

5.2 Schedule Update

Goal: record actual progress, advance the data date, reschedule, and read the new forecast.

Updating (a.k.a. statusing) is the regular cycle, usually weekly or monthly, where you tell P6 what actually happened up to the Data Date (the "as-of" line). P6 then recalculates remaining work and forecasts new finish dates.

The update cycle

  1. Add status columns: % Complete, Actual Start, Actual Finish, Remaining Duration.
  2. For each progressed activity, enter the Actual Start; for finished ones tick/enter the Actual Finish.
  3. For in-progress activities, set % Complete and/or Remaining Duration (the Status tab makes this easy).
  4. Open Tools ▸ Schedule (F9), set the new Data Date to the cut-off, and click Schedule.
  5. Review the Schedule Log for open ends, out-of-sequence activities and the new project finish.
  6. Compare against the baseline using variance columns and bars.
FieldMeaning
Data DateThe "as-of" line; actuals are to the left, forecast to the right.
Actual Start / FinishReal dates work began / ended.
Remaining DurationWork still left from the data date.
% CompleteProgress measure (Duration / Physical / Units, see Percent Complete Types).
Tip

For quick statusing, select the progressed activities and use Tools ▸ Update Progress to roll the schedule to a new data date automatically (assumes on-plan progress), then adjust the exceptions by hand.

Common mistake

Forgetting to move the Data Date when you reschedule. Without advancing it, completed work still sits in the "future" and the forecast is meaningless. Also watch for out-of-sequence progress flagged in the log.

Section 6 of 10

6 · Resource Management

Load the schedule with people, equipment, materials and money.

6.1 Activity Cost

Goal: understand where activity cost comes from and how to view it.

In P6, an activity's cost is built from three sources: resource assignments (labor / nonlabor / material × rate), expenses (one-off non-resource costs), and roll-ups from child activities. There is also a separation between Budgeted, Actual and Remaining cost.

See cost on activities

  1. In the Activities view open View ▸ Columns and add: Budgeted Total Cost, Actual Total Cost, Remaining Total Cost, At Completion Total Cost.
  2. Group by WBS and enable Show Group Totals to see cost roll up the WBS.
  3. Open the Resources and Expenses tabs in Activity Details to see what makes up the cost.
Cost fieldMeaning
Budgeted (BL) CostPlanned cost before progress.
Actual CostCost incurred to date.
Remaining CostForecast cost still to spend.
At Completion (EAC)Actual + Remaining = forecast total.
Tip

If you only need cost (not effort tracking), you can model everything as expenses. For full earned-value, drive cost through resource assignments.

6.2 Resource Dictionary

Goal: build the central, reusable list of resources with units, rates and calendars.

The Resource Dictionary is the enterprise-wide hierarchy of everything you assign to work. There are three resource types:

Create a resource

  1. Open Enterprise ▸ Resources.
  2. Select a parent node, click Add, and enter a Resource ID and Name.
  3. General tab, set the resource Type (Labor/Nonlabor/Material) and, for material, the Unit of Measure.
  4. Details tab, set the Calendar, default Units/Time (e.g. 8h/d or 100%) and whether it Auto Computes Actuals.
  5. Units & Prices tab, set Max Units/Time (availability) and the Price/Unit (rate), with effective dates if rates change over time.
Tip

Use the five rate slots (Standard Rate, Price/Unit … Price/Unit5) for different cost categories (e.g. standard vs overtime), then pick the rate type on each assignment.

Common mistake

Setting Max Units/Time to a single person (8h/d) for a crew of five. Over-allocation and leveling depend on this number, set availability to match reality.

6.3 Resource Codes

Goal: categorise resources (discipline, location, vendor) for grouping and reporting.

Just like activity and project codes, Resource Codes tag resources with attributes, Discipline, Crew, Location, Supplier, so you can group and filter the resource and assignment views and report resource usage by category.

Define and assign

  1. Open Enterprise ▸ Resource Codes.
  2. Click Modify to add a code definition (e.g. Discipline) with a max length.
  3. Add values (e.g. Civil, Mechanical, Electrical).
  4. In Enterprise ▸ Resources, select a resource and open the Codes tab to assign a value.
Tip

Group the Resource Usage profile/spreadsheet by a resource code to see total demand per discipline across all projects.

6.4 Roles

Goal: plan with skills/positions before naming specific people, then swap in real resources later.

Roles are skill placeholders, Senior Engineer, Welder, Crane, used when you know the type of resource needed but not who. You assign roles during planning, then later substitute the actual resource. Roles carry their own price rates and can be matched to resources by proficiency.

Create and use roles

  1. Open Enterprise ▸ Roles.
  2. Click Add, give a Role ID and Name; set Prices on the Prices tab.
  3. On the Resources tab, link resources that can fill this role and set their proficiency.
  4. Assign the role to activities just like a resource (Resources tab ▸ Add Role).
  5. Later, use Assign by Role / resource substitution to replace roles with named resources.
Tip

Roles let you do early capacity analysis (do we have enough welders?) before the team is named, great for bids and front-end planning.

6.5 Resource Assignment

Goal: assign resources/roles to activities with the correct units, and understand the units ⇄ duration relationship.

Assigning a resource puts budgeted units (hours or material quantity) and therefore cost on the activity. How those units interact with duration is governed by the activity's Duration Type.

Assign a resource

  1. Select the activity; open the Resources tab in Activity Details.
  2. Click Add Resource (or Add Role) and pick from the dictionary.
  3. Set Budgeted Units (total hours) or Units/Time (e.g. 8h/d, 50%).
  4. Check the Price/Unit and rate type are correct, cost = units × price.
  5. Run F9; if resource-leveling later, availability matters.
Tip

The key relationship is Units = Units/Time × Duration. With Fixed Duration & Units, changing duration recalculates Units/Time; with Fixed Units/Time, it recalculates Units. Pick the duration type that matches how you think about the work.

Common mistake

Letting P6 silently change your numbers. Watch which value moves after each edit; if it's the wrong one, change the Duration Type on the General tab first.

6.6 Expenses

Goal: add one-off, non-resource costs (permits, mobilization, materials) to activities.

Expenses are costs that aren't tied to a time-phased resource, fees, rentals, lump-sum buys. Each expense belongs to an activity, can map to a cost account, and accrues at the start, end, or uniformly over the activity.

Add an expense

  1. Select the activity; open the Expenses tab in Activity Details.
  2. Click Add, type an Expense Item name and pick an Expense Category.
  3. Set Budgeted Units, Price/Unit → P6 computes Budgeted Cost.
  4. Choose the Accrual Type: Start, End, or Uniform over Activity.
  5. Optionally assign a Cost Account for cost reporting.
Tip

Use expenses for costs without effort (no hours). They keep your resource histograms clean while still rolling into total project cost and cash-flow.

6.7 Resource Profile & Spreadsheet

Goal: read time-phased resource demand as a histogram (profile) and a table (spreadsheet).

The bottom pane can show Resource Usage Profile (a histogram/curve of units or cost over time) and Resource Usage Spreadsheet (the same data in a time-phased grid). Together they reveal demand peaks, over-allocation and cash-flow.

Display them

  1. In the Activities view choose View ▸ Show on Bottom ▸ Resource Usage Profile (or …Spreadsheet).
  2. In the left panel of the profile, tick the resources/roles to display.
  3. Right-click the profile ▸ Resource Usage Profile Options to switch between Units and Cost, and to overlay the Limit (availability) line and a cumulative curve (S-curve).
  4. Set the timescale interval (day/week/month) to match your reporting.
Tip

Turn on the cumulative S-curve and switch the value to Cost to produce a project cash-flow / planned-value curve straight from P6.

Common mistake

Bars rising above the red Limit line mean over-allocation, that's your cue to level resources (lesson 1.10).

6.8 Resource Allocation

Goal: analyse demand vs availability across activities and projects to spot conflicts.

Resource Allocation is the analysis of how much of each resource is demanded versus how much is available (Max Units/Time). P6 provides a dedicated Resources window with usage views that span all open projects, so you can see enterprise-wide loading.

Analyse allocation

  1. Open the Resources window (Enterprise ▸ Resources) and switch to Resource Usage views, or use the activity-view profile.
  2. Display the Limit (availability) line against the demand bars.
  3. Group/filter by resource code to focus on one discipline.
  4. Identify periods where demand > availability (over-allocation), note the dates and resources.
Tip

Open several projects together (multi-project mode) to see shared-resource conflicts across the portfolio, not just within one schedule.

6.9 Cost Accounts

Goal: build a cost-coding hierarchy and tie resource/expense costs to it for financial reporting.

Cost Accounts are a hierarchical chart of accounts (your cost-breakdown structure) that you attach to resource assignments and expenses. They let finance see project cost rolled up by account, independent of the WBS.

Set up and use

  1. Open Enterprise ▸ Cost Accounts.
  2. Build the hierarchy with Add + indent arrows (e.g. 01 Labor → 01.1 Civil).
  3. On a resource assignment (Resources tab) set the Cost Account column.
  4. On expenses, set the Cost Account field.
  5. Group the activity/usage views by Cost Account to report cost by account.
Tip

Cost accounts cut across the WBS, so the same account (e.g. Labor) sums costs from every WBS element, ideal for accounting-style reports.

6.10 Resource Leveling

Goal: remove over-allocation by delaying activities within (or beyond) float, using priorities you control.

Resource Leveling resolves over-allocation: when demand exceeds availability, P6 delays lower-priority activities until resources free up. It respects logic and (optionally) float, and can extend the project finish if there isn't enough float.

Level resources

  1. Make sure resources have correct Max Units/Time and that activities are resourced and scheduled (F9).
  2. Open Tools ▸ Level Resources.
  3. Set leveling priorities (e.g. by Total Float, then Activity ID) so P6 knows what to delay first.
  4. Decide whether to Level resources only within Total Float (won't extend the finish), untick to allow the project to slip.
  5. Click Level; review the new dates and the resource histogram to confirm bars now sit under the limit line.
Tip

Leveling adds Resource Lag, not new relationships. You can un-level by rescheduling (F9) after clearing leveling, so it's safe to experiment.

Common mistake

Leveling before fixing logic, calendars and availability, garbage in, garbage out. Also, leveling within float only can leave residual over-allocation if float is insufficient; check the histogram afterwards.

Section 7 of 10

7 · Advanced Update

Go beyond basic statusing with the full progress toolkit.

7.1 Advanced Update (Progress Workflow)

Goal: run a disciplined, repeatable updating process that keeps the forecast trustworthy.

Advanced updating is about consistency and control. Before each cut-off you decide the rules, how progress is measured, how actuals are captured, how the data date moves, and apply them the same way every period.

A robust update workflow

  1. Back up / baseline check, keep the approved baseline assigned for variance.
  2. Set the cut-off, agree the Data Date for this period.
  3. Status activities, Actual Start/Finish, % Complete, Remaining Duration. Use a look-ahead filter to focus only on activities in the window.
  4. Apply Actuals if you let P6 compute them automatically (lesson 2.3).
  5. Reschedule, F9 with the new data date.
  6. Analyse, read the Schedule Log, check open ends, out-of-sequence and negative float; compare to baseline.
  7. Report & document, capture the period's narrative and slippage.
Tip

Lock the rules in Project Details ▸ Calculations (e.g. how P6 links Actual/Remaining units and duration, and whether actuals recalc from %). Decide once, then status the same way each time.

7.2 Percent Complete Types

Goal: choose how progress is measured per activity, Duration, Physical or Units.

Each activity has a % Complete Type that decides which field drives its Activity % Complete. Picking the right one is the single biggest factor in update accuracy.

Type% Complete is driven byBest for
DurationElapsed vs original duration (time-based)Activities where time ≈ progress
PhysicalA value you type in (judgement / steps)Deliverables where progress ≠ time (e.g. design)
UnitsActual units ÷ planned units (resource effort)Resource-loaded activities (earned value)

Set the type

  1. Add the % Complete Type column, or set it on the General tab of Activity Details.
  2. Set per activity (or select many and set in one go).
  3. Status using the field that matches the type (Remaining Duration, Physical %, or Actual Units).
Common mistake

Leaving everything on Duration %, then typing a Physical %. P6 ignores it because the type doesn't match. Match the type to how you actually measure that work.

7.3 Apply Actuals

Goal: let P6 auto-progress activities to a new data date based on the plan.

Apply Actuals advances the schedule to a new data date and records actuals automatically as if everything went exactly to plan up to that date. You then correct only the exceptions, far faster than statusing every activity by hand.

Run Apply Actuals

  1. (Optional) For resources that should auto-record actuals, tick Auto Compute Actuals on the resource / activity.
  2. Open Tools ▸ Apply Actuals.
  3. Set the New Data Date for the period.
  4. Click Apply, P6 fills Actual Start/Finish and progress for anything due to be working in that window.
  5. Review and fix the exceptions (anything that didn't go to plan), then F9.
Tip

Compare with Tools ▸ Update Progress: Update Progress is the simpler "roll forward as planned" command on selected activities; Apply Actuals is tied to the Auto Compute Actuals model and resource actuals.

Common mistake

Running Apply Actuals on a real project without checking which activities have Auto Compute Actuals on. It will assume plan-perfect progress everywhere, always reconcile against site reality afterwards.

7.4 Activity Steps

Goal: break an activity into checklist steps and let them drive Physical % Complete.

Activity Steps are a checklist of sub-tasks inside one activity (e.g. Rebar → Formwork → Pour → Cure). With the right setting, completing weighted steps automatically calculates the activity's Physical % Complete, great for objective, defensible progress.

Use steps

  1. Enable step-driven progress: Project Details ▸ Calculations ▸ Activity percent complete based on activity steps (and set the activity's % type to Physical).
  2. Select the activity; open the Steps tab in Activity Details.
  3. Click Add to list each step; set a weight for each.
  4. As work happens, tick steps complete (or enter step %), the activity's Physical % updates automatically.
Tip

Create reusable Step Templates (Enterprise) for activities that repeat across the project, so you don't retype the same checklist.

7.5 Global Change

Goal: edit many activities at once with rules (find → change), safely and reversibly.

Global Change is P6's bulk-edit engine. It applies IF / THEN / ELSE rules across all (or filtered) activities, perfect for mass-assigning codes, recalculating fields, or fixing data in seconds instead of hours.

Build and run a Global Change

  1. (Recommended) Filter the activities first so the change only touches what you intend.
  2. Open Tools ▸ Global ChangeNew; name the spec.
  3. IF, set conditions (e.g. Activity Code: Area = Zone 1).
  4. THEN, set actions (e.g. Original Duration = Original Duration * 1.1, or assign a code value).
  5. Optionally add an ELSE; click Apply Change.
  6. Review the change report P6 shows, then Commit Changes (or Cancel).
Common mistake

Committing without reading the preview report, or running on the wrong project. Always back up / export first, Global Change has no single undo for committed bulk edits.

7.6 Claim Digger (Schedule Comparison)

Goal: produce a detailed report of exactly what changed between two schedules or revisions.

Claim Digger, called Schedule Comparison in newer versions, compares a project against a baseline or another project and lists every difference: added/deleted activities, changed durations, dates, logic, constraints, resources and codes. It is the standard tool for delay analysis and change documentation.

Run a comparison

  1. Open the current project. Launch Tools ▸ Schedule Comparison / Claim Digger.
  2. Set the Compare Project (current revision) and the Comparison/Baseline (previous revision).
  3. Choose which data groups to compare (Activities, Relationships, Resources, Costs, Constraints, etc.).
  4. Pick the output format (HTML, CSV) and location.
  5. Click Compare and open the report.
Tip

Keep a baseline (or saved XER) of every approved revision. Claim Digger between consecutive revisions gives an auditable trail of who changed what, invaluable for claims and progress narratives.

Section 8 of 10

8 · File Management

Move projects in and out of P6 reliably.

8.1 Export to XER

Goal: package a project as a portable .xer file to share with another P6 user.

The XER is P6's native exchange format. It carries the project plus its supporting data (calendars, resources, codes, baselines) so another P6 database can import it. It is the standard way to send schedules between contractor and client.

Export

  1. Select the project(s) in Enterprise ▸ Projects.
  2. Choose File ▸ Export.
  3. Pick format Primavera PM – (XER) and the P6 version to match the recipient.
  4. Tick the projects to include (and whether to include baselines).
  5. Choose the save location and file name; click Finish.
Tip

Export to the oldest version your recipient runs, a newer XER won't import into an older P6. Name files with project ID + data date (e.g. TWR-A_DD-2026-06-30.xer).

Common mistake

An XER is not a database backup, it doesn't include global security, users, or admin settings. For a true backup, back up the database (lesson 3.4).

8.2 Import XER

Goal: bring an .xer into your database and control how it merges with existing data.

Importing an XER is powerful but risky, because it can update existing global data (calendars, resources, codes). The import configuration / layout screen lets you decide what happens to each data type.

Import

  1. Choose File ▸ ImportPrimavera PM – (XER).
  2. Browse to the .xer file.
  3. Pick the import action: Add into Existing Project, Update Existing Project, Replace Existing Project, or create new under an EPS node.
  4. Review the Update Project Options / Layout grid, for each data type choose Keep Existing, Update Existing, or Insert New.
  5. Click Finish and read the import log.
Common mistake

Leaving global data set to Update Existing can overwrite your enterprise calendars/resources with the sender's. When unsure, set globals to Keep Existing and import into a new project first to inspect it.

8.3 Import / Export Excel

Goal: round-trip activity data through Excel for bulk editing and reporting.

P6 can export selected data (activities, resources, expenses, relationships) to an .xls workbook, let you edit in Excel, then import the changes back. It's ideal for bulk text edits, sharing with non-P6 stakeholders, or quick reporting.

Export to Excel

  1. File ▸ ExportSpreadsheet – (XLS).
  2. Choose the subject areas (e.g. Activities, Resource Assignments).
  3. Pick or build a template that maps which columns export.
  4. Select the project(s) and save the .xls.

Import from Excel

  1. Edit only the data cells in Excel, do not change the header rows or the Activity ID (it's the key).
  2. File ▸ ImportSpreadsheet – (XLS), browse to the file, map the project, Finish.
  3. Check the import log for skipped/rejected rows.
Common mistake

Changing the Activity ID or column headers in Excel, the import matches on these, so edits there create duplicates or fail. Add new activities in P6, not via Excel import.

8.4 Backup & Restore

Goal: protect your work with proper backups and know how to recover.

There are two senses of "backup" in P6: a quick project-level XER export you can re-import, and a full database backup (handled by the DBA / database tools). Know which one each situation needs.

Project-level safety copy (most common)

  1. Before any risky operation (Global Change, mass import, leveling), export the project to XER (lesson 3.1) and keep it dated.
  2. To "restore," File ▸ Import the XER as a new project, or Replace Existing Project.
  3. Alternatively keep a baseline of each milestone revision inside the project.

Full database backup

  1. For standalone (SQLite/SQL Express) installs, use the database backup tool provided with P6 or back up the database file per IT policy.
  2. For enterprise (Oracle/SQL Server), the DBA backs up the database on a schedule.
Tip

Adopt a habit: export an XER at every data date. It doubles as your period archive and your rollback point, and feeds Claim Digger comparisons.

8.5 Reflections

Goal: create a sandbox copy of a project, experiment, then merge the changes back selectively.

A Reflection is a special linked copy of a project for what-if work. You make changes in the reflection, then merge them back into the source, choosing what to keep. It's the safe way to trial scenarios on a live project.

Create and merge a reflection

  1. In Enterprise ▸ Projects, select the project.
  2. Right-click ▸ Create Reflection (or Project ▸ Create Reflection). P6 makes a copy named "… Reflection".
  3. Open the reflection and make your what-if changes.
  4. When satisfied, right-click the reflection ▸ Merge Reflection into Source Project.
  5. In the merge dialog choose which changes to apply; optionally keep the reflection as a baseline.
Tip

Reflections are perfect for testing acceleration scenarios, recovery plans, or change-order impacts without disturbing the live, reported schedule.

Section 9 of 10

9 · Risk Management

Identify and control threats and opportunities inside P6.

9.1 Risk Register

Goal: log every identified risk with its cause, effect, owner and status.

The Risk Register is P6's built-in list of project risks (and opportunities). Each entry records what could happen, who owns it, how likely and how severe it is, and what you'll do about it.

Add a risk

  1. Open the project, then go to Project ▸ Risks.
  2. Click Add and enter a clear Risk Name and ID.
  3. On the General tab set the Category, Owner (responsible person) and Status (Proposed/Open/Closed).
  4. On the Description tab record the cause → risk → effect statement.
  5. Set the risk Type: Threat (negative) or Opportunity (positive).
Tip

Write risks as "Because of [cause], [risk event] may occur, leading to [effect]." Clear cause/effect makes scoring and response planning far easier.

9.2 Risk Categories & Scoring Matrix

Goal: set up the probability × impact matrix and categories that standardise scoring.

Before scoring risks consistently you need a Risk Scoring Matrix (the probability vs impact grid that yields a Low/Medium/High score) and a set of Risk Categories (e.g. Technical, Commercial, Weather, Resource). These are admin-level definitions reused by every risk.

Configure the matrix and categories

  1. Open Enterprise ▸ Risk Scoring Matrices (admin setup).
  2. Define probability levels and impact levels (e.g. Very Low → Very High) with their thresholds.
  3. Colour the grid cells to map combinations to an overall score (e.g. red = High).
  4. Define Risk Categories under Admin ▸ Admin Categories ▸ Risk Categories (or the risk type setup).
  5. Assign the chosen matrix to the project on the project's risk settings.
Tip

Keep one organisation-standard matrix so risk scores are comparable across all projects in the portfolio.

9.3 Assign & Score Risks

Goal: link risks to the activities they affect and score probability and impact.

Scoring turns a list into a prioritised register, and assigning risks to activities (or WBS) ties each risk to the schedule it threatens, so you can see which parts of the plan are most exposed.

Score and assign

  1. Select a risk in Project ▸ Risks.
  2. On the Impact / scoring tab set the Probability and the Impact on schedule and cost, P6 computes the Score from the matrix.
  3. Open the Activities tab of the risk and click Assign to link the affected activities (or WBS elements).
  4. Sort/group the register by Score to prioritise; add the Pre-/Post-response score columns.
FieldMeaning
ProbabilityLikelihood the risk occurs.
ImpactSeverity on schedule / cost if it occurs.
ScoreProbability × Impact, read off the matrix.
ExposureRisk-weighted effect used to prioritise.
Tip

For quantitative schedule risk analysis (Monte Carlo, P80 dates), Oracle's separate Primavera Risk Analysis tool extends this register, the P6 register is the qualitative foundation it builds on.

9.4 Risk Response Plans

Goal: define the response strategy and actions, and track residual risk after response.

A response plan records what you'll do about each risk and the expected residual (post-response) score. The four classic threat strategies are Avoid, Transfer, Mitigate, Accept (and for opportunities: Exploit, Share, Enhance, Accept).

Plan the response

  1. Select the risk; open the Response Plans tab.
  2. Choose a Response Type (Avoid / Transfer / Mitigate / Accept).
  3. List the concrete actions, the owner, and target dates.
  4. Enter the expected post-response probability/impact → P6 shows the residual score.
  5. Track status as actions complete; close the risk when resolved.
StrategyWhat it means
AvoidChange the plan so the risk can't occur.
TransferShift the impact to a third party (insurance, subcontract).
MitigateReduce probability and/or impact.
AcceptTake no proactive action; hold contingency.
You finished the course

You now have an A-to-Z map of Primavera P6: structure, scheduling, formatting, analysis, baselining, resources, advanced updating, file management and risk. Revisit any lesson from the sidebar, and practise each step in P6, the tool rewards repetition.

Section 10 of 10

10 · Hands-On: Build a Project From Scratch

Apply everything to one real project, the Al-Noor Villa, from a blank database to a baselined, status-ready programme.

10.1 The Scenario & Creating the Project

Goal: Meet the Al-Noor Villa scenario and create the live VILLA project under the correct EPS node using the Create a New Project wizard.

Welcome to the capstone workshop. Over the next eight lessons you will build a complete, schedule-and-resource-loaded plan from a blank slate, applying every technique covered earlier in the course to one continuous project. Treat this as your portfolio piece: by the end you will have produced a baselined, status-ready programme you could hand to a real client.

The scenario. You are the planning engineer for a contractor in Riyadh, KSA, awarded a contract to build a private residence: the Al-Noor Villa Construction project. The owner expects works to begin on 01-Sep-2025. The site runs a regional 6-day working week (Saturday through Thursday working, Friday off) at 8 hours per day, and all costs are reported in Saudi Riyals (SAR). The deliverable across this workshop is a fully developed P6 project: a seven-element WBS, nineteen logically linked activities (A1000–A1180), a resource and role pool, an expense, calendars and constraints, a saved baseline, and a status update with earned-value reporting.

Before any of that, we need somewhere for the work to live. In Primavera P6 every project hangs off the Enterprise Project Structure (EPS), the organisational tree that groups projects by company, division, or programme. You cannot create a floating project; you must select an EPS node to be its parent. We will also assign a Responsible Manager, which is simply an element of the OBS (Organizational Breakdown Structure), the hierarchy of who is accountable. Picking the right EPS node and OBS element now keeps security, layouts, and reporting clean for the rest of the build.

Step 1, Open the Projects window and pick the EPS node

  1. Log in to P6 Professional and open Enterprise ▸ Projects. This is the window where the EPS tree and all projects are displayed.
  2. In the tree, single-click the EPS node that should be the parent of the new project (for example your company or "Construction Projects" node). The wizard places the new project under whatever node is selected, so highlight it before you continue. If you don't yet have a suitable node, ask your administrator or create one via Enterprise ▸ Enterprise Project Structure.

Step 2, Launch the Create a New Project wizard

  1. With the parent EPS node still highlighted, choose File ▸ New. The Create a New Project wizard opens. (If New is greyed out, you don't have create rights at that node, pick a different node or contact your admin.)
  2. Work through the wizard pages in order, clicking Next after each, entering the values shown in the table below.
  3. On the final page, click Finish. P6 creates the project and drops you back into the Projects window with VILLA now listed under the node you selected.
Wizard pageWhat to enter for the Al-Noor Villa
Select EPSConfirm the parent EPS node (the one you highlighted in Step 1). Change it here if needed.
Project Name / IDProject ID: VILLA  ·  Project Name: Al-Noor Villa Construction
Project Start & EndPlanned Start: 01-Sep-2025. Leave Must Finish By blank for now (we may add a finish constraint later, in the constraints lesson).
Responsible ManagerSelect the appropriate OBS element (e.g. your name or the Project Manager role) as the Responsible Manager.
Rate TypeAccept the default resource rate type (e.g. Price/Unit). We refine rates in the resources lesson.
Congratulations / FinishLeave "Run the Project Architect wizard" unchecked, we are building the WBS by hand. Click Finish.

Step 3, Confirm where the project sits

  1. Back in Enterprise ▸ Projects, locate the row showing ID VILLA nested under your chosen EPS node. Its name reads Al-Noor Villa Construction.
  2. Note the Project Status column shows Planned, correct for a project still being built. The Planned Start should read 01-Sep-2025.
  3. You can collapse and expand the EPS tree (the small ▸/▾ toggles) to see the VILLA project sitting beneath its parent. This parent-child placement is what feeds rolled-up cost and date reporting at the EPS level later on.
Tip

Keep Project IDs short, uppercase, and meaningful, VILLA is far easier to spot in drop-downs, filters, and global reports than a long auto-generated code. You can rename a project, but the ID is your durable handle, so choose it deliberately.

Common mistake

Running File ▸ New without first selecting the intended EPS node, P6 then creates VILLA under whatever happened to be highlighted (often the root or the wrong division). If it lands in the wrong place, don't delete and rebuild: simply drag the project to the correct node in the EPS tree, or use the EPS field on the Projects window's General tab to move it.

10.2 Calendars & Project Settings

Goal: Build the 6-day (Sat–Thu) 8 h/day calendar for the Al-Noor Villa Construction project, attach a public holiday, make it the project default, then set the project defaults, critical-activity rule, and currency so every duration we type later calculates against the correct working time.

Before a single activity is created, P6 needs to know when work can happen. A calendar defines working days, working hours per day, and non-work exceptions (weekends and holidays). It is the engine behind every date calculation: when you type a 6-day duration for A1030 Excavation, P6 stretches it across working days only, skipping Fridays and any holiday you define. In Riyadh the standard construction week is Saturday through Thursday with Friday off, eight hours a day, so the default Standard 5-Day calendar that ships with P6 would mis-calculate our entire schedule. We fix that here, once, at the top of the workshop.

P6 has three calendar pools: Global calendars (shared across the whole database), Project calendars (local to one project), and Resource calendars. For a single villa we will create one Project calendar named Villa 6-Day 8h so it travels with the project and does not clutter the global pool. We then bolt on the project-level settings, default activity type, duration type, the definition of "critical", and the currency, that govern how new activities behave by default.

Step 1, Create the 6-day, 8 h/day calendar

  1. Open the project. Go to Enterprise ▸ Projects, select VILLA, Al-Noor Villa Construction, and open it so it is the active project.
  2. Open the calendar dictionary: Enterprise ▸ Calendars.
  3. At the top of the dialog choose the Project radio button (instead of Global or Resource) so the new calendar is stored inside VILLA.
  4. Click Add. When P6 asks which calendar to copy from, pick Standard 5-Day Workweek as a starting template, then click OK.
  5. Rename the new entry to Villa 6-Day 8h in the Calendar Name field.
  6. With it selected, click Modify to open the Calendar (working-time) editor.
  7. Set the working week: in the Standard (Total Work Hours/Day) view, make Saturday, Sunday, Monday, Tuesday, Wednesday and Thursday working days and Friday non-work. Tip: click each weekday column header and use Work / Nonwork to toggle, or set hours directly.
  8. Set the hours: each working day should read 8.0 hours. Confirm the day starts at 08:00 and ends at 17:00 with a one-hour break (or 08:00–16:00 with no break) so the total is exactly 8 working hours.

Step 2, Set the Hours per Time Period

The Hours per Time Period values tell P6 how to convert between hours and the d/w/mo abbreviations you type. If a "day" is 8 h here but the calendar gives 8 working hours, durations stay clean (1d = 1 working day). Mismatched values are the single most common reason a "6d" activity silently becomes 6.75 days on screen.

  1. Still in the Calendar editor, click Time Periods… (lower-left).
  2. Enter these conversions and click OK:
SettingRecommended valueWhy
Hours/Day8One working day = 8 h, matches the calendar
Hours/Week486 working days × 8 h (Sat–Thu)
Hours/Month208≈ 26 working days × 8 h
Hours/Year2,500Approx. 6-day calendar; tune to taste

Step 3, Add a sample public holiday

  1. Back in the Calendar editor, navigate the month grid to your holiday month, for example the Saudi National Day, 23-Sep-2025.
  2. Click the 23 September 2025 cell to select it, then click Nonwork. The day turns into a non-working exception (it shows differently from a normal working day).
  3. Click OK to close the editor, then Close the Calendars dialog. Any activity spanning 23-Sep will now automatically skip it, pushing its finish out by one working day.
Tip

Add holidays for the full life of the project in one sitting (our schedule runs from 01-Sep-2025 onward). Mark each Eid / National Day exception now so dates do not drift when you reschedule with F9 later in the workshop.

Step 4, Make it the project default calendar

Creating the calendar does not apply it. New activities inherit the project's default calendar, so we must point VILLA at Villa 6-Day 8h before we build a single activity.

  1. Open Enterprise ▸ Projects and select VILLA.
  2. Open the bottom Project Details pane and click the Defaults tab.
  3. In Default Calendar, click the picker, switch to the Project view, choose Villa 6-Day 8h, and click Assign then Close.

Step 5, Project Defaults (activity type & duration type)

On the same Defaults tab, set how new activities are born. For a construction schedule built on Finish-to-Start logic, the right defaults are below. Setting them now means activities like A1010 Site Mobilization (5d) through A1170 Snagging (5d) inherit them automatically.

Project defaultRecommended valueReason
Default CalendarVilla 6-Day 8hThe Sat–Thu calendar we just built
Default Activity TypeTask DependentActivity uses its own calendar & runs on its own logic, correct for nearly all villa tasks. Milestones A1000 / A1180 are set per-activity later.
Default Duration TypeFixed Duration & Units/TimeDuration is the driver; resource units adjust, sensible before resources are loaded
Default Percent Complete TypeDurationSimple, date-driven progress for a CPM schedule
Default Price/Unit(leave 0 until rates set)Cost rates come from the resource dictionary later

Step 6, Settings: define "Critical" as Total Float ≤ 0

  1. In Project Details, click the Settings tab.
  2. Under Define Critical Activities, select Total Float less than or equal to and enter 0 hours.
  3. Leave Longest Path unchecked for now, the Total Float ≤ 0 rule gives the clearest red critical chain from A1000 Notice to Proceed to A1180 Handover.
Tip

"Total Float ≤ 0" highlights activities with zero or negative float as critical. If you later impose the optional Must Finish By constraint on A1180 and the plan slips, negative-float activities will correctly flag red, exactly what you want to see.

Step 7, Set the project currency to SAR

Currency in P6 is a database-wide view setting per user, not stored per project, it controls how all cost columns display. Set it to Saudi Riyal so the Building Permit (SAR 15,000) expense and every resource rate read correctly.

  1. Go to Edit ▸ User Preferences.
  2. Open the Currency tab.
  3. In View Currency, select Saudi Riyal (SAR). Tick Show currency symbol and Show decimal digits as preferred, then click Close.
  4. If SAR is not listed, an admin must add it under Admin ▸ Currencies first (set the exchange rate relative to the base currency).
Common mistake

Building the Villa 6-Day 8h calendar but forgetting to set it as the project default (Step 4), or assigning it to existing activities only. New activities you add in the next lessons will silently inherit the old 5-day calendar, so your Friday-only weekends suddenly become two-day weekends and the whole schedule finishes late. Always confirm the Defaults tab shows Villa 6-Day 8h before creating activities.

10.3 Building the WBS

Goal: create the seven-element Work Breakdown Structure for the Al-Noor Villa Construction project (ID VILLA) so every activity has a logical home before scheduling begins.

The Work Breakdown Structure (WBS) is the deliverable-oriented hierarchy that organizes the total scope of work. In Primavera P6, the WBS is the skeleton onto which you hang activities, costs, and schedule logic, nothing happens in a project until at least the root node exists. When you created VILLA in the previous lesson, P6 automatically generated a single root WBS element that takes the project name, "Villa Construction". Our job now is to add seven children beneath that root, each representing a major construction phase of the Al-Noor villa.

We will decompose by deliverable / phase rather than by trade or by department. Each element answers the question "what tangible stage of the villa gets completed here?", Preliminaries, Substructure, Superstructure, and so on. This keeps the schedule readable for the client in Riyadh, makes earned-value roll-ups meaningful, and gives every one of the 19 activities (A1000–A1180) a clear parent. The WBS code is the short identifier P6 indents automatically (1, 1.1, 1.2 …); the WBS name is the human-readable label that appears in reports and Gantt grouping bands.

Open the WBS view

  1. Open the project: go to Enterprise ▸ Projects, locate VILLA, Al-Noor Villa Construction, and double-click it (or select it and press Enter) so it becomes the open project.
  2. Switch to the WBS layout via Project ▸ WBS. You will see one row already present: the root element with code 1 and name Villa Construction.
  3. If the code and name columns are not both visible, right-click the column header, choose Columns, and add WBS Code and WBS Name from General.

Add the seven phase elements

The pattern is always the same: select the row that should be the parent or sibling, click Add, then use the indent (▸) and outdent (◂) arrows on the command bar to set the level. New elements are created at the same level as the selected row, so you indent once to push them under the root.

  1. Click the root row 1, Villa Construction to select it.
  2. Press Ins or click Add on the right-hand command bar. P6 creates a new sibling of the root.
  3. With the new row selected, click the indent right (▸) arrow once. The element drops to the second level and is automatically renumbered 1.1.
  4. Type the name Preliminaries & Enabling directly into the WBS Name cell and press Enter.
  5. With 1.1 still selected, click Add again, the new row appears as a sibling at the same level (1.2), so no indent is needed this time. Name it Substructure.
  6. Repeat the Add-then-name step for the remaining five phases. Because each new sibling inherits the current level, you simply Add and type. P6 keeps the codes sequential: 1.3, 1.4, 1.5, 1.6, 1.7.
  7. Verify the final structure matches the table below, then save with Ctrl+S (or it saves automatically when you leave the view).
WBS CodeWBS NameCovers (preview of activities)
1Villa Construction (root)Project root, auto-created
1.1Preliminaries & EnablingA1000 Notice to Proceed, A1010 Mobilization, A1020 Clearance & Setting Out
1.2SubstructureA1030–A1060 Excavation, Blinding, Foundations, Backfilling
1.3SuperstructureA1070–A1100 Slabs, Columns & Walls, Roof Slab
1.4MEP First FixA1120 MEP First Fix
1.5FinishesA1110 Blockwork & Plaster, A1130 Internal Finishes, A1140 External Finishes
1.6MEP 2nd Fix & TestingA1150 Second Fix, A1160 Testing & Commissioning
1.7HandoverA1170 Snagging & Cleaning, A1180 Handover

Notice that all seven phases sit at the same level (one indent below the root). That is intentional: this is a flat, single-tier phase breakdown, which is ideal for a project of this size. The WBS Code column is read-only at the position level, P6 derives 1.1, 1.2 … automatically from the indent, but you can edit the code segment in the WBS details if your company standard requires custom codes such as PRE, SUB, SUP. For Al-Noor we keep the default numeric codes.

Tip

Decompose by deliverable, not by trade. Ask "could I point at a finished part of the villa and say that is done?" Substructure and Superstructure are deliverables; "Concrete Works" or "the Steel-Fixing Crew" are not, splitting by crew scatters one deliverable across many WBS nodes and breaks cost roll-ups. A good rule of thumb: stop decomposing when each element is large enough to report on to the client but small enough that a single team owns it. Seven phase elements is the right granularity for VILLA.

Common mistake

Forgetting to indent the very first child. If you click Add on the root and never press the indent arrow, P6 creates the element as a second project-level root (code 2) instead of a child (1.1). The giveaway is a code with no decimal point and a name sitting flush-left next to "Villa Construction". Fix it by selecting the stray row and clicking indent right (▸) until it nests under the root and renumbers correctly.

10.4 Adding Activities & Durations

Goal: Enter all 19 activities of the Al-Noor Villa project under the correct WBS bands, give each an Original Duration, and assign the right Activity Type so the schedule is ready for logic.

With the WBS built in the previous lesson, the project is an empty skeleton. Now we add the activities, the individual work steps P6 actually schedules, costs, and tracks. Every activity carries a unique Activity ID (e.g. A1000), a name, an Original Duration (the planned working-day length before the project starts), and an Activity Type that tells P6 how to calculate the activity's dates. We will add the work first, then wire up the relationships in the next lesson, so for now the activities will all stack on the project start date until logic is applied.

Three Activity Types matter for our villa. Task Dependent is the workhorse: the activity uses its own assigned calendar (our 6-day week) and its duration drives its dates, this is correct for the 17 real work packages. Start Milestone and Finish Milestone are zero-duration markers used for gate events: we use a Start Milestone for A1000 Notice to Proceed (the project trigger) and a Finish Milestone for A1180 Handover (the project goalpost).

Open the Activities window and prepare the layout

  1. Open the project: Enterprise ▸ Projects, select VILLA, Al-Noor Villa Construction, then go to Project ▸ Activities.
  2. The Activity Table is empty. Make sure you can see the WBS bands: View ▸ Group and Sort By ▸ WBS (or click the WBS grouping preset). The seven bands, Preliminaries & Enabling through Handover, should appear as gray group rows.
  3. Confirm the columns you need are showing. Right-click a column heading ▸ Columns and add (if missing): Activity ID, Activity Name, Original Duration, Activity Type, and WBS. Click OK.
  4. Check the defaults that new activities will inherit: Edit ▸ User Preferences ▸ Time Units, set Durations Format to Day so you can type 5 and get 5d.

Add the activities under each WBS band

The fastest way to keep activities in the right band is to click the WBS group row first, then add, the new activity is created inside that band automatically.

  1. Click the Preliminaries & Enabling band row, then press Insert (or Edit ▸ Add). A new activity row appears.
  2. Type the Activity ID A1000, press Tab, type the name Notice to Proceed, and press Enter. (P6 may auto-suggest the next ID; just overtype it.)
  3. Repeat for the remaining Preliminaries activities, A1010 Site Mobilization and A1020 Site Clearance & Setting Out, each time pressing Insert while a Preliminaries row is selected.
  4. Click the Substructure band and add A1030 through A1060. Continue band by band: Superstructure (A1070–A1100), Finishes (A1110, A1130, A1140), MEP First Fix (A1120), MEP 2nd Fix & Testing (A1150, A1160), and Handover (A1170, A1180).
  5. If an activity lands in the wrong band, you do not delete it, just drag the row onto the correct band, or change its WBS cell, and it re-groups instantly.

Set Original Durations

  1. Click in the Original Duration cell for A1010 and type 5Enter. It displays as 5d on our 8 h/day, 6-day calendar.
  2. Work down the list entering each duration from the table below. Leave A1000 and A1180 at 0d, these are milestones.
  3. Fill-down for repeats: if several activities share a duration, select the cell that already holds the value, drag the small fill handle (bottom-right corner of the cell) down over the blank cells, and P6 copies the value, the same trick works on the Activity Type column.

Assign Activity Types

  1. Select A1000 Notice to Proceed, click its Activity Type cell, and choose Start Milestone. Its duration locks to 0d.
  2. Select A1180 Handover and set its Activity Type to Finish Milestone (also 0d).
  3. For all other activities, confirm the type is Task Dependent (the default). To set many at once, select the first one, hold Shift and click the last, then change the Activity Type cell once, the change applies to the whole selection.

A representative subset of what you should have entered, verify your screen matches:

Activity IDActivity NameOrig. DurationWBS BandActivity Type
A1000Notice to Proceed0dPreliminaries & EnablingStart Milestone
A1010Site Mobilization5dPreliminaries & EnablingTask Dependent
A1030Excavation6dSubstructureTask Dependent
A1050Foundations (RC)8dSubstructureTask Dependent
A1100FF Columns & Roof Slab8dSuperstructureTask Dependent
A1110Blockwork & Plaster12dFinishesTask Dependent
A1120MEP First Fix10dMEP First FixTask Dependent
A1130Internal Finishes (Tiling & Paint)15dFinishesTask Dependent
A1160Testing & Commissioning5dMEP 2nd Fix & TestingTask Dependent
A1180Handover0dHandoverFinish Milestone
Tip

Keep your hands on the keyboard: Insert adds a row, Tab moves field to field, and the cell fill handle copies durations or types down a column. To check totals fast, glance at the band header rows, P6 rolls each WBS band's activity count and duration up there, so a missing activity is easy to spot.

Common mistake

Do not leave the two endpoints as Task Dependent with a typed 0d duration, a zero-duration Task can behave oddly in the schedule and will not display the diamond marker. A1000 must be a Start Milestone and A1180 a Finish Milestone. Also watch the band: if you press Insert while a normal activity (not a WBS row) is selected, the new activity inherits that activity's WBS, always click the gray band row first, or fix the WBS cell afterward.

10.5 Sequencing the Work: Relationships & Constraints

Goal: Turn the 19 stand-alone activities of Al-Noor Villa Construction (VILLA) into a single connected network by adding the predecessor relationships from the activity pack and the one hard date constraint, then prove the schedule has no open ends or loops.

So far every activity in VILLA sits on its own, each one starts on the project start date because P6 has no idea what comes before what. Relationships (also called logic links) are the dependencies that tell the scheduler the order of work. P6 supports four types: FS (Finish-to-Start, the predecessor must finish before the successor starts), SS (Start-to-Start), FF (Finish-to-Finish), and SF (Start-to-Finish). Most of the villa is a simple finish-to-start chain, you cannot pour A1050 Foundations (RC) until A1040 Blinding & Waterproofing is done.

A lag is a delay added to a relationship (e.g. SS+2d means the successor starts two working days after the predecessor starts). Lag is counted in the successor's calendar, our 6-day Sat–Thu calendar, not in calendar days. A constraint is a date rule you impose on a single activity (such as a contractual start date) that overrides what pure logic would calculate. In this lesson we add the relationships, set the one mandatory constraint A1000 Start On 01-Sep-2025, and note an optional Must Finish By on the handover milestone.

Open the project and the Activities window

  1. Go to Enterprise ▸ Projects, select VILLA – Al-Noor Villa Construction, then open Project ▸ Activities.
  2. Make the network easy to read: from the Layout Options bar choose Group and Sort and group by WBS, so Preliminaries, Substructure, Superstructure and the rest stay together.
  3. Split the screen so you can see logic as you build it. From the Layout Options bar pick Show on Bottom ▸ Activity Details, then click the Relationships tab in the lower pane.

Method A, add relationships on the Relationships tab (precise)

  1. Click A1010 Site Mobilization in the activity table. In the lower pane, the Relationships tab shows two grids: Predecessors (left) and Successors (right).
  2. Under Predecessors click Assign. In the picker choose A1000 Notice to Proceed and click the assign button, then close the picker.
  3. The new row defaults to Relationship Type = FS and Lag = 0. That is exactly what A1010 needs, so leave it.
  4. Walk down the chain the same way, assigning each activity's single FS predecessor: A1020←A1010, A1030←A1020, A1040←A1030, A1050←A1040, A1060←A1050, A1070←A1060, A1080←A1070, A1090←A1080, A1100←A1090.
  5. The SS+2d link. Select A1120 MEP First Fix. Assign predecessor A1110 Blockwork & Plaster, then in the predecessor row change Relationship Type to SS and type 2 in the Lag column. This lets MEP first fix begin two days after blockwork starts, the trades work in parallel rather than waiting for plaster to finish.
  6. The multi-predecessor merges. Select A1130 Internal Finishes (Tiling & Paint) and assign two predecessors, A1110 (FS) and A1120 (FS). Then select A1170 Snagging & Cleaning and assign A1160 (FS) and A1140 (FS). When an activity has two drivers, P6 starts it after the later of the two finishes.
  7. Finish the remaining single links: A1110←A1100 (FS), A1140←A1100 (FS), A1150←A1130 (FS), A1160←A1150 (FS), A1180←A1170 (FS).

Method B, drag in the Gantt (fast)

  1. In the Gantt chart, hover over the right edge of a predecessor's bar until the cursor becomes a small node, then click-drag to the left edge of the successor's bar and release, this creates an FS link automatically.
  2. Drag from the left edge of the predecessor to the left edge of the successor to create an SS link; right edge to right edge gives FF.
  3. To add a lag after dragging, double-click the relationship line (or use the Relationships tab) and enter the lag value.

Dragging is quick for the long FS spine of the villa, but use the Relationships tab for anything with a non-zero lag or a non-FS type (like the A1110→A1120 SS+2d) so you do not create the wrong type by accident.

Sample of the logic to enter

ActivityPredecessorTypeLag
A1010 Site MobilizationA1000 Notice to ProceedFS0d
A1050 Foundations (RC)A1040 Blinding & WaterproofingFS0d
A1110 Blockwork & PlasterA1100 FF Columns & Roof SlabFS0d
A1120 MEP First FixA1110 Blockwork & PlasterSS+2d
A1130 Internal FinishesA1110 Blockwork & PlasterFS0d
A1130 Internal FinishesA1120 MEP First FixFS0d
A1170 Snagging & CleaningA1160 Testing & CommissioningFS0d
A1170 Snagging & CleaningA1140 External FinishesFS0d
A1180 HandoverA1170 Snagging & CleaningFS0d

Add the date constraints

  1. Select A1000 Notice to Proceed. In Activity Details open the Status tab.
  2. In the Constraints area, set Primary to Start On and pick the date 01-Sep-2025. This anchors the whole network to the contractual NTP date instead of letting it float to the project default.
  3. Optional , select A1180 Handover and set a Finish On or Before (a Must Finish By-style constraint) if the contract carries a completion deadline. Leave it off for now so the schedule shows the natural finish date first; you can add it later to test float against the deadline.
  4. Run the scheduler with F9 and click Schedule. A1000 now lands on 01-Sep-2025 and every downstream activity recalculates along the logic you built.
ActivityConstraint typeDateWhy
A1000 Notice to ProceedStart On01-Sep-2025Contractual project start (required)
A1180 HandoverFinish On or Before(per contract)Completion deadline (optional)
Tip

After scheduling, run Tools ▸ Schedule and click the Log to file option, or open the schedule log via the View Log button. The log lists activities without predecessors and activities without successors, in a clean villa network only A1000 should appear with no predecessor and only A1180 with no successor. Anything else is an open end to fix.

Common mistake

Open ends and loops. An open end is an activity (other than A1000/A1180) missing a predecessor or successor, it floats free and breaks the critical path calculation. A loop (circular logic, e.g. A1130 driving A1120 while A1120 also drives A1130) makes the schedule un-calculable; P6 will halt with a "scheduling loop detected" error and name the activities involved. Also avoid leaving the SS+2d on A1110→A1120 as a plain FS by accident, that pushes MEP first fix until plaster is fully done and needlessly lengthens the program. Always re-run F9 and check the log after editing logic.

10.6 Scheduling & Reading the Critical Path

Goal: Run the schedule with F9, set the correct Data Date, interpret the Schedule Log, and read the critical path, Total Float, and project finish for the Al-Noor Villa.

You have built every activity, relationship, calendar, and constraint for Al-Noor Villa Construction (VILLA). Until you run the scheduler, those activities have no calculated dates, P6 only stores your Original Durations and your logic. Scheduling (the Critical Path Method, or CPM) is the calculation that walks the network forward and backward to produce Early/Late Start and Finish dates, Total Float, and the project finish. P6 performs a forward pass (earliest possible dates from the Data Date) and a backward pass (latest dates that still meet the finish), and the difference between them at each activity is its Total Float.

The Data Date is the time anchor for that calculation: it is the "as of" date from which all remaining work is scheduled. For a brand-new, un-started plan the Data Date should equal the planned start, 01-Sep-2025, so nothing is pushed later than it needs to be. The chain of zero-float work that drives the finish is the critical path, for the villa it runs substructure ▸ superstructure ▸ finishes ▸ handover.

Set the Data Date and run the schedule

  1. Open the VILLA project from Enterprise ▸ Projects, then open the Activities window so you can watch the dates populate.
  2. Open the scheduler dialog from Tools ▸ Schedule, or simply press F9.
  3. In the Schedule dialog, set Current Data Date to 01-Sep-2025 (08:00). Because no activity has started yet, this is your project start.
  4. Click Options… to confirm the calculation rules: leave Total Float defined as Finish Float = Late Finish − Early Finish, and verify Schedule automatically when a change affects dates is off for now so you control each run.
  5. Tick Log to file and note the path, you will read this Schedule Log in the next section. Click OK to return.
  6. Click Schedule to run CPM. The Start, Finish, and Total Float columns now fill in across all activities A1000–A1180.
Tip

Watch the Data Date line (the blue vertical line) in the Gantt chart. After a clean run on a new plan it should sit exactly at the left edge of A1000 Notice to Proceed on 01-Sep-2025. If activities start before the Data Date line, your Data Date is set later than the work, reset it and re-run.

Read the Schedule Log

Open the log from Tools ▸ Schedule ▸ View Log (or open the .txt file). This is the first thing a professional planner checks after every F9. Confirm three things:

  1. Project finish date, the calculated end of the villa. Confirm it is realistic and respects any Must Finish By you placed on A1180 Handover.
  2. Open ends, activities missing a predecessor (other than A1000) or a successor (other than A1180). An open end means a dangling activity that float will not flow through correctly. A clean villa network reports 0 open ends except the intended start milestone A1000 and finish milestone A1180.
  3. Scheduling/relationship errors (loops), the log lists any circular relationships (e.g. an activity that is its own predecessor through a chain). P6 cannot schedule a loop; it will name the activities involved so you can break the cycle.

View the critical path

With the schedule run, isolate the activities that drive the finish.

  1. Make the critical bar visible: View ▸ Bars, ensure the Critical Remaining Work bar (red) is checked. Critical activities now draw in red on the Gantt.
  2. Filter to critical only: View ▸ Filters, tick the built-in Critical filter (which selects activities where Total Float ≤ 0), then Apply.
  3. Read the chain. For the villa it runs A1000 ▸ A1010 ▸ A1020 ▸ A1030 ▸ A1040 ▸ A1050 ▸ A1060 ▸ A1070 ▸ A1080 ▸ A1090 ▸ A1100 ▸ A1110 ▸ A1130 ▸ A1150 ▸ A1160 ▸ A1170 ▸ A1180, substructure into superstructure into finishes into testing into handover.
  4. Notice the near-critical, off-path branches: A1120 MEP First Fix (SS+2 with A1110) and A1140 External Finishes carry positive Total Float, so they are not red, they have slack and are not driving the finish.

Fields to read after F9

FieldWhat it tells youWhat to confirm on VILLA
Start (Early Start)Earliest the activity can begin from the Data DateA1000 = 01-Sep-2025; chain starts flow on the 6-day Sat–Thu calendar
Finish (Early Finish)Earliest the activity can endEach successor's Start follows its predecessor's Finish (FS logic)
Total FloatDays an activity can slip without delaying the project finish (Late Finish − Early Finish)Critical chain = 0; A1120 and A1140 show positive float
Free FloatSlip allowed before delaying the next activityUseful to see how much A1140 can move before it hits A1170
Project finish (Schedule Log / Finish of A1180)Calculated completion date for the whole villaEquals the Early Finish of A1180 Handover; respects any Must Finish By
Tip

Verify your logic with the Total Float column visible. Group by WBS, then scan: every activity on the driving chain should read 0. If something you expected to be critical (say A1100 FF Columns & Roof Slab) shows large float, a relationship is missing or a constraint is overriding your network, trace its predecessors on the Relationships tab before trusting the dates.

Common mistake

Leaving the Data Date at today's date (27-Jun-2026) instead of the planned start. P6 will then refuse to schedule any remaining work before that date and shove the entire villa a year into the future, A1000 will jump off 01-Sep-2025. For a baseline of an un-started project, always set the Data Date to 01-Sep-2025 before pressing F9.

10.7 Resource & Cost Loading

Goal: Create a small set of resources and roles for the Al-Noor Villa Construction project, assign them to villa activities with budgeted units, add the Building Permit expense to A1010, then read cost roll-up and the Resource Usage Profile.

So far the schedule tells you when work happens. Resource and cost loading tells you who does it, with what, and for how much money. In Primavera P6 a resource is anything consumed by work, people (Labor), equipment (Nonlabor), or quantities of stuff (Material), while a role is a skill or job title (Civil Engineer, MEP Engineer) you can plan with before you know exactly which named person fills it. Costs that are not driven by a resource's effort, like a permit fee, are entered as expenses. In this lesson we build the resources for VILLA, assign them to the right activities with budgeted units, and let P6 multiply units × rate to roll a budget up the WBS.

Step 1, Create resources and roles in the Enterprise dictionary

Resources are an enterprise-wide dictionary shared by every project, so you build them once. We will add five Labor, two Nonlabor, two Material resources and two Roles, all priced in SAR.

  1. Open Enterprise ▸ Resources. The resource tree appears in the top pane.
  2. Click Insert (or the Add button) to create a new resource. On the General tab give it a Resource ID and Resource Name (e.g. FORE / Foreman).
  3. On the Details tab set the Resource Type, Labor for people, Nonlabor for equipment, Material for consumables. For Material, type a Unit of Measure (m3, ton) first under Admin ▸ Admin Categories ▸ Units of Measure.
  4. On the Units & Prices tab enter the Price/Unit in SAR and the Max Units/Time. Set Max Units/Time as 8h/d (or 1 if your column shows units-per-day as a count) for a single full-time person; use 2, 3… for a crew or a pool of that trade.
  5. On the Calendars tab assign your 6-day (Sat–Thu) project calendar so resource availability matches the working week.
  6. Repeat for every row in the table below. To create Roles, switch to Enterprise ▸ Roles and add Civil Engineer and MEP Engineer, giving each a Price/Unit on the Prices tab.
Resource IDNameTypePrice/Unit (SAR)Max Units/Time
FOREForemanLabor55/h8h/d (1)
MASONMasonLabor40/h32h/d (4)
STLFXSteel FixerLabor42/h24h/d (3)
MEPTECHMEP TechnicianLabor45/h16h/d (2)
PAINTPainterLabor38/h24h/d (3)
EXCAVExcavatorNonlabor180/h8h/d (1)
CPUMPConcrete PumpNonlabor220/h8h/d (1)
CONCConcreteMaterial320/m3,
REBARRebarMaterial2,800/ton,

Step 2, Assign resources to activities with budgeted units

Now attach those resources to the villa activities that consume them, and tell P6 the Budgeted Units (the planned quantity of work, in hours for Labor/Nonlabor or in measure-units for Material).

  1. Open the project with Enterprise ▸ Projects, then go to the Activities window.
  2. Select an activity (e.g. A1050 Foundations (RC)) and open the Resources tab in the bottom Details pane. Show the Details pane with Layout options if it is hidden.
  3. Click Add Resource, pick the resource from the dictionary, then type the Budgeted Units. P6 instantly computes Budgeted Cost = Budgeted Units × Price/Unit.
  4. Add the Foreman to A1010 onward so site supervision is captured across the build.
  5. Use the table below as a sample. Repeat the pattern for the remaining structural and finishing activities.
ActivityResourceBudgeted Units
A1010 Site MobilizationForeman40 h
A1030 ExcavationExcavator48 h
A1050 Foundations (RC)Steel Fixer192 h
A1050 Foundations (RC)Concrete120 m3
A1050 Foundations (RC)Rebar14 ton
A1070 Ground Floor SlabConcrete Pump48 h
A1110 Blockwork & PlasterMason384 h
A1120 MEP First FixMEP Technician160 h
A1130 Internal Finishes (Tiling & Paint)Painter360 h
Tip

Decide your Duration Type before loading units. For most construction crews use Fixed Duration & Units/Time: the duration you scheduled in Lesson 10.4 stays put and P6 spreads units across it. With Fixed Duration & Units, raising units instead increases the daily Units/Time, handy when you must hit a deadline by adding people, not days.

Step 3, Add the Building Permit expense to A1010

The permit is a one-off fee, not effort, so it is an expense, not a resource.

  1. Select A1010 Site Mobilization and open the Expenses tab in the Details pane.
  2. Click Add, name it Building Permit, and choose an Expense Category (e.g. Permits & Fees, defined under Admin ▸ Admin Categories).
  3. Set Budgeted Cost to SAR 15,000 (you can leave Budgeted Units at 1 with a Price/Unit of 15,000).
  4. Set Accrual Type to Start of Activity so the full cost lands when mobilization begins.

Step 4, View the cost roll-up and Resource Usage Profile

  1. In the Activities table, add a column for Budgeted Total Cost via View ▸ Columns (under Cost). Group the layout by WBS to see each element, Substructure, Superstructure, Finishes, roll up and total at the project root.
  2. Recalculate with F9 so cost and resource spreads are current.
  3. Open the bottom-pane profile via View ▸ Show on Bottom ▸ Resource Usage Profile. Select a resource in the left list to see its histogram over time; toggle the Display options to switch between Units and Cost.
  4. Switch to View ▸ Show on Bottom ▸ Resource Usage Spreadsheet for the same data in period-by-period numbers, useful for spotting where a trade exceeds availability.
Tip

In the Resource Usage Profile, turn on the Limit line (it draws Max Units/Time across the timescale). Any blue bar poking above that red limit line is over-allocation, a clear visual flag that the resource is planned beyond its capacity.

Common mistake

Setting Max Units/Time wrong silently breaks your plan. If you leave the Mason at 8h/d (1) but assign units that imply a four-man crew, the histogram screams over-allocation even though the work is realistic, you simply forgot to model a crew of 4. The opposite is worse: an inflated Max (say 80h/d) hides every over-allocation, so leveling and the histogram report green while the job is actually impossible. Set Max Units/Time to the real available capacity per trade, and always check the histogram against the limit line after loading.

10.8 Baseline, Update & Report

Goal: capture an approved baseline of the Al-Noor Villa schedule, status the first reporting period with real progress, reschedule to a new data date, and read schedule variance against the baseline before exporting an XER for the client.

Your VILLA plan is logic-driven, resourced, and approved, it is now the plan of record. Before any work is reported, you must freeze a copy so future progress has something to be measured against. That frozen snapshot is a baseline: a saved version of the project's dates, durations, costs, and units as they stood on the day the plan was approved. Once work starts, you record what actually happened, this is called updating or statusing the schedule. Each cycle you advance the Data Date (the "as-of" line that separates actuals in the past from the remaining plan in the future), enter actuals, and press F9 so P6 recalculates the forecast for everything still ahead.

The whole point of baselining first is comparison: P6 can only show you a variance (current finish vs. baseline finish, current cost vs. baseline cost) if a baseline exists. Skip the baseline and your first update silently overwrites the original plan, the evidence of slippage is gone forever.

Step 1, Create and assign the baseline

  1. Open the project: Enterprise ▸ Projects, select VILLA, Al-Noor Villa Construction, then open it so it is the active project.
  2. Go to Project ▸ Maintain Baselines. Click Add. P6 asks whether to save a copy of the current project as a new baseline, choose that option and click OK.
  3. Select the new baseline, set its Baseline Type to Initial Planning Baseline (or Approved Baseline), and rename it clearly, e.g. VILLA - B1 - Approved 01Sep25. Click Close.
  4. Now assign it so the project actually uses it: Project ▸ Assign Baselines. In Project Baseline pick VILLA - B1 - Approved 01Sep25. Set Primary (User) baseline to the same baseline, then click OK.
  5. Verify the bars are turned on: View ▸ Bars and tick the Project Baseline Bar so baseline bars render beneath your current bars in the Gantt chart.
Tip

Baseline BEFORE you update. Do it the moment the plan is signed off and no actuals have been entered, the baseline should be a clean copy of the as-planned schedule. If you wait until after the first status, your baseline already contains progress and your variances will read as zero. Many teams also keep a separate Primary baseline for client reporting and a User baseline for internal "what we last forecast" comparisons.

Step 2, Status the first period (the early activities)

Assume the first reporting period ends and excavation is underway. Display the columns you need for statusing, right-click the column header, choose Columns, and add Actual Start, Actual Finish, % Complete, and Remaining Duration. Then enter progress on the early activities A1000–A1030:

FieldWhat it meansEnter it when…
Actual StartThe real date the activity began. Sets the activity to "Started" status.Work has begun on the activity.
Actual FinishThe real date the activity completed. Sets it to "Completed" (100%).The activity is fully done.
% CompleteHow far along an in-progress activity is (Duration % by default).The activity is started but not finished.
Remaining DurationWorking days still needed to finish from the data date forward.You expect more or fewer days than originally planned.
  1. Select A1000 Notice to Proceed (Start Milestone). Mark it complete, tick Started and set Actual Start to 01-Sep-2025. As a milestone it carries no duration.
  2. A1010 Site Mobilization (5d): set Actual Start 01-Sep-2025 and Actual Finish 06-Sep-2025 (remember Fri is off on the 6-day calendar). It becomes 100%.
  3. A1020 Site Clearance & Setting Out (4d): set Actual Start 07-Sep-2025 and Actual Finish 10-Sep-2025, 100% complete.
  4. A1030 Excavation (6d): it has started but not finished. Set Actual Start 11-Sep-2025, enter % Complete 50, and set Remaining Duration to 3d. Do not give it an Actual Finish, it is still in progress.
  5. Leave A1040 onward untouched, they have not started, so they keep their planned (remaining) dates and zero progress.

Step 3, Set the Data Date and reschedule

  1. Open the scheduling dialog with F9.
  2. In the Schedule window set the Current Data Date to the end of the period, e.g. 14-Sep-2025. Everything before this line is "actual"; everything after is recalculated forecast.
  3. Click Schedule. P6 recomputes the forward/backward pass for all incomplete work, drives A1040 (Blinding & Waterproofing) off the remaining 3 days of A1030, and rolls the new forecast all the way to A1180 Handover.
  4. Watch the Gantt: the Data Date line jumps to 14-Sep, completed activities sit to the left of it, and the remaining bars start at or after it.
Common mistake

Entering actuals but forgetting to advance the Data Date and press F9. Without rescheduling, the remaining work still hangs off the old data date, in-progress activities show remaining duration in the past, and your forecast finish is meaningless. Always: enter actuals ▸ set new data date ▸ reschedule. Also never type an Actual Start or Finish that is later than the data date, an actual date cannot be in the future.

Step 4, Compare to baseline (variance)

Now read the slippage. Right-click the column header ▸ Columns and add the comparison fields. The key ones for the villa are:

Variance columnTells you
BL Project Start / FinishThe dates frozen in B1 for each activity.
Start Variance / Finish VarianceCurrent date minus baseline date. Negative = ahead, positive = behind (in working days).
Variance – BL Project Finish DateHow far the project finish has drifted versus the approved plan.
  1. Check the Finish Variance on A1030 and downstream activities, if excavation took longer than planned, the slip ripples to A1180 Handover.
  2. Visually confirm with the Gantt: the thin Project Baseline Bar shows the as-planned position; the gap between it and the current bar is the schedule variance.
  3. If you resourced and cost-loaded the plan, also add BL Project Total Cost and Cost Variance to track budget against the SAR baseline.

Step 5, Export an XER and report

  1. Go to File ▸ Export. Choose Primavera PM – (XER) as the format and click Next.
  2. Select Project as the export type, tick VILLA, Al-Noor Villa Construction, choose to include the assigned baseline if your client needs it, and pick a destination such as VILLA_Update_Sep2025.xer.
  3. Click Finish. The XER is a portable P6 file the owner's or contractor's team can import into their own database.
  4. For the human-readable progress report, use the layout you just built (Activity ID, Name, Actual Start/Finish, % Complete, Remaining Duration, Finish Variance) and print it via File ▸ Print Preview, or generate a tabular report under Tools ▸ Reports ▸ Report Wizard. Add a Gantt with baseline bars for the visual story.
Tip

Use XER for exchanging the live project with other P6 users (it preserves logic, resources, and baselines). Use a PDF/print layout or the Report Wizard for stakeholders who just need to read status. Re-baseline only when a formal re-plan is approved, routine monthly updates compare against the original B1 so the slippage stays visible across the life of the Al-Noor Villa.