BRC Academy · Primavera P6

Activity codes

The WBS gives every activity one home. Real questions about a schedule cut across that structure: what is the concrete subtrade doing next month, what is left in the office mezzanine, which activities are the owner's responsibility. Activity codes answer those questions. In Oracle Primavera P6 an activity code is a label with a fixed list of values that you attach to activities and then use to group, filter, sort and report. For an owner, a short list of required codes is the cheapest way to make every contractor update readable in the same way.

Learning outcomes

  • Explain what activity codes do that the WBS cannot.
  • Choose between global, EPS-level and project-level codes.
  • Create a code and its values, and assign values to activities in P6 Professional and P6 EPPM.
  • Write an owner's activity code requirement for a contractor's schedule.

The lesson

What a code is

Oracle describes activity codes and values as a way to filter, group, sort and report activity information to suit your organization. Its example is a Location code with values such as New York, Los Angeles and Chicago, so activities can be assigned to a place [1]. Each code can have an unlimited number of values [1], and an activity can carry one value per code [2]. An activity can carry many different codes at once.

That last point is the difference from the WBS you built in Lesson 6. The WBS is a single hierarchy: an activity sits in exactly one element. Codes are independent tags, so the same slab pour can be filed under foundations in the WBS, under the concrete subtrade by responsibility, and under the west half of the warehouse by area. Figure 1 shows one activity carrying all three.

One activity, one WBS element, several activity codes At the top, the activity 3.2 Slab-on-grade, west pour. On the left, its single WBS path: NDC, then 3 Foundations and slab-on-grade, then 3.2 Slab-on-grade. On the right, three activity code assignments: NDC Responsibility equals CONC, concrete subtrade; NDC Area equals WHW, warehouse west; NDC Milestone equals M4, foundations and slab complete. A note says the WBS gives one place; codes give many views. 3.2 Slab-on-grade, west pour WBS: one home NDC Northgate DC 3 Foundations &slab-on-grade 3.2 Slab-on-grade Codes: many views NDC ResponsibilityCONC Concrete sub NDC AreaWHW Warehouse west NDC MilestoneM4 Fdn & slab An activity sits in one WBS element but can carry one value from each of many activity codes.
Figure 1. One Northgate activity with its WBS path and three owner-required activity codes (illustrative code names and values). Source: BRC, based on the Northgate fact sheet and Oracle Primavera P6 Professional User Guide v26, Activity codes and values [1].

Global, EPS and project codes

P6 has three kinds of activity code, and the choice decides who can use them [1]:

  • Global codes can be assigned to activities in every project in the database.
  • EPS-level codes belong to a node of the EPS and are available to the projects under it. Oracle suggests them when a code should not be open to all users or is not specific to one project, and recommends creating them at the highest EPS level so every project below can reach them [1].
  • Project-level codes can be assigned only to activities in the project where they were created.

A project code can be promoted later. In the Activity Codes dialog, choose Project, click Modify, select the code and click Make Global or Make EPS; Oracle notes that promoting a code changes it for all its activity assignments [3].

Where each scope of activity code can be used Three nested boxes. The outer box is Global: every project in the database. Inside it, an EPS-level box for the NDC node: projects under NDC, including NDC.SUB with NDC-BL00 and NDC-UP01. Inside the EPS box, a project-level box around NDC-BL00 only. Arrows note that a project code can be promoted with Make EPS or Make Global. GlobalAny activity in any project in the database EPS-level, at node NDCProjects under that node, e.g. NDC.SUB Project-level NDC-BL00 only Codes created inthis project NDC-UP01 Cannot use NDC-BL00'sproject codes; can useEPS and global codes Promote a project code: Enterprise, Activity Codes, Project, Modify, then Make EPS or Make Global
Figure 2. The three activity code scopes and where each can be assigned, shown on Northgate's EPS (the NDC parent node is assumed). Source: BRC, based on Oracle Primavera P6 Professional User Guide v26, Activity codes and values and Promote project-level activity codes and values [1][3].

Creating a code and its values

In P6 Professional, choose Enterprise, Activity Codes. The Activity Codes dialog has Global, EPS and Project options at the top [4]. For a project code: choose Project, click Modify, select the project, click Add, type the code name and set Max Length, the maximum number of characters for its values, then close [5]. Back in the Activity Codes dialog, select the code, click Add and type each value's name and description [6].

Values can be arranged in a hierarchy with the arrow buttons, and the order you set is the order users see when assigning [4][6]. The maximum number of hierarchy levels is an administrator setting: the Data Limits tab of Admin Preferences on a P6 Professional database, or Application Settings on a P6 EPPM database [6]. Each value can also carry a colour that Visualizer can use to colour bars [4][1].

One practical rule from Oracle: if you plan to use reporting software, avoid commas in code data, because some tools treat a comma as a delimiter [2].

Screenshot to come
Screenshot to come: P6 Professional v26, NDC-BL00 open, Enterprise > Activity Codes, Project option selected, Select Activity Code = NDC Responsibility, showing Code Value, Description and Color columns for HAL, CONC, STL, ROOF, MECH, ELEC, FP, RAI, OWN

Assigning values

In P6 Professional, choose Project, Activities, select the activity, open Activity Details, click the Codes tab and click Assign. Pick the value and click Assign; you can create a missing value from the same dialog with the New icon if your security allows [2]. In P6 EPPM, on the Activities page, select the activities, choose Context, Assign, Codes, pick the values in the Codes panel and click Assign; you can keep selecting other activities without closing the panel [7].

For more than a handful of activities, add the code as a column in the activity table and fill it down, or assign in EPPM with several activities selected. Either way, finish by grouping the project by the code (View, Group and Sort By, covered in Lesson 18) and looking for the band with no value.

Northgate worked example

Northgate Distribution Centre (fictional) is a 12,000 m² tilt-up warehouse with a 900 m² two-level office mezzanine, built under CCDC 2-2020 by Halvorsen Builders Ltd. (fictional) for Northgate Logistics Inc. (fictional) in Vaughan, Ontario. The owner's schedule specification asks for three activity codes on every activity in Halvorsen's P6 file, imported as NDC-BL00 in the NDC.SUB branch. The code names and values below are illustrative; the milestones are from the Northgate fact sheet.

Code (Max Length)ValuesOwner's use
NDC Responsibility (4)HAL Halvorsen self-perform; CONC concrete; STL steel; ROOF roofing; MECH mechanical; ELEC electrical; FP fire protection; RAI Ridgeline Architects; OWN Northgate (owner); UTIL utilities and authoritiesWho holds each activity; owner and consultant items stand out
NDC Area (4)SITE site; WHW warehouse west; WHE warehouse east; DOCK dock wall; OFF office mezzanineProgress and lookaheads by part of the building
NDC Milestone (3)M3 to M9 and M11, one value per contract milestone in Halvorsen's scopeTags each milestone activity so it survives renaming

Why these three

Each code answers a question the owner asks every month. Responsibility shows owner and consultant items: if Ridgeline's shop drawing reviews or Northgate's own decisions sit on the critical path, the owner needs to see that before the contractor claims delay. Area lets the owner track the west and east halves of the slab separately, which matters after the out-of-sequence slab work in Lesson 14. The Milestone code tags each contract milestone with its owner number, so a filter can find M9 even if the contractor rewords the activity name.

The specification asks for project-level codes, because they travel with Halvorsen's XER and need no access to the owner's database. Once the owner has imported the file, it can promote the codes to EPS level at the Northgate node so every later update can use them.

The same five Northgate activities grouped three ways Three stacked panels list the same five activities. Panel 1, grouped by WBS: band 3 Foundations holds Footings and piers west and Slab-on-grade west pour and east pour; band 6 Office mezzanine and interiors holds Owner finishes decision; band 7 Mechanical, electrical and fire protection holds Electrical rough-in, office. Panel 2, grouped by NDC Responsibility: CONC holds footings and both slab pours; ELEC holds electrical rough-in; OWN holds owner decisions, highlighted. Panel 3, grouped by NDC Area: WHW holds footings and slab west; WHE holds slab east; OFF holds electrical rough-in and owner decisions. Grouped by WBS 3 Foundations & slab-on-grade Footings & piers, westSlab-on-grade, west pourSlab-on-grade, east pour 6 Office mezzanine & interiors Owner finishes decision 7 Mechanical, electrical & fire Electrical rough-in, office Grouped by NDC Responsibility CONC Concrete Footings & piers, westSlab-on-grade, west pourSlab-on-grade, east pour ELEC Electrical Electrical rough-in, office OWN Northgate (owner) Owner finishes decision Grouped by NDC Area WHW Footings & piers; slab west WHE Slab east OFF Electrical rough-in; owner decision
Figure 3. Five Northgate activities seen through the WBS and through two activity codes (illustrative activities and values). The owner band shows at once which work is waiting on Northgate. Source: BRC, based on the Northgate fact sheet and Oracle Primavera P6 Professional Help v26, Activity Codes dialog box [4].

The first check

On receipt, the owner's scheduler adds the three code columns to the activity table and groups by each code in turn. Two problems appear: a number of activities have no NDC Area value, and the slab is still one activity, so it cannot carry both WHW and WHE. Both go back to Halvorsen in the review comments. The fix for the second is the split from Lesson 14; one value per code per activity is a P6 rule [2], so an activity that spans two areas is a sign it should be two activities.

Screenshot to come
Screenshot to come: P6 Professional v26, NDC-BL00, Activities window, Activity Details Codes tab for 3.2 Slab-on-grade west pour, Assign Activity Codes dialog open with NDC Area values listed and WHW selected
Screenshot to come
Screenshot to come: P6 Professional v26, NDC-BL00, Activities window grouped by NDC Responsibility (View > Group and Sort By), columns Activity ID, Activity Name, NDC Area, NDC Milestone, Start, Finish, Total Float, with the OWN band expanded

Owner's move

  • Specify the codes, values and Max Length. Give the contractor the exact code names and value lists so every submission groups the same way.
  • Keep the list short. Three or four required codes that answer real questions beat ten that nobody maintains.
  • Require a value on every activity. A blank band in a grouped view is the quickest compliance check there is.
  • Include owner and consultant responsibility. It is the code that most often matters in a delay discussion.
  • Promote useful codes after import. Move them to EPS level at the project node so later updates and the owner's own files can use them [1][3].

Common mistakes

  1. Using codes to rebuild the WBS. A code that repeats the WBS adds nothing. Codes should cut across it.
  2. Creating everything as a global code. The global list grows with every project and becomes hard to use. Prefer EPS or project scope unless the code really applies to every project.
  3. Free-text values. "Concrete", "Concrete sub" and "CONC" as three values break grouping. Fix the value list in the specification.
  4. Activities spanning two values. P6 allows one value per code per activity [2]; split the activity instead of choosing one.
  5. Commas in code values. Oracle warns that reporting tools may read them as delimiters [2].

Quick quiz

  1. What can activity codes do that the WBS cannot?

    1. Calculate float
    2. Classify one activity in several independent ways at once
    3. Set activity calendars
    4. Replace relationships
  2. Which code scope can be assigned only to activities in the project where it was created?

    1. Global
    2. EPS-level
    3. Project-level
    4. Resource code
  3. In P6 Professional, where do you create activity codes?

    1. Project, WBS
    2. Enterprise, Activity Codes
    3. Tools, Schedule
    4. View, Layout
  4. How many values of one activity code can a single activity carry?

    1. One
    2. Two
    3. Up to the Max Length
    4. Unlimited
  5. Northgate's owner wants codes that travel in Halvorsen's XER without access to the owner's database. Which scope does the specification ask for?

    1. Global
    2. EPS-level
    3. Project-level
    4. User-defined fields
Show answers and explanations
  1. B. Each activity sits in one WBS element but can carry a value from each of many codes, used to filter, group, sort and report [1].
  2. C. Project-level codes are assigned only to activities in their own project [1].
  3. B. Choose Enterprise, Activity Codes, then pick Global, EPS or Project [5][4].
  4. A. You can assign only one value per code to an activity [2].
  5. C. Project codes belong to the contractor's project and travel with it; the owner can promote them after import [3].

Key terms

Activity code
A named classification with a defined list of values, assigned to activities for grouping, filtering, sorting and reporting.
Code value
One entry in a code's list, with a name, description and optional colour.
Global code
A code available to activities in every project in the database.
EPS-level code
A code tied to an EPS node and available to the projects beneath it.
Project-level code
A code available only in the project where it was created.
Max Length
The maximum number of characters allowed for a code's values.

References

  1. Oracle. Activity codes and values. Primavera P6 Professional User Guide, Version 26.
  2. Oracle. Assign activity codes and values to activities. Primavera P6 Professional Help, Version 26.
  3. Oracle. Promote project-level activity codes and values. Primavera P6 Professional User Guide, Version 26.
  4. Oracle. Activity Codes dialog box. Primavera P6 Professional Help, Version 26.
  5. Oracle. Create project-level activity codes. Primavera P6 Professional User Guide, Version 26.
  6. Oracle. Create project-level activity code values. Primavera P6 Professional User Guide, Version 26.
  7. Oracle. Assigning Activity Code Values to Activities. Primavera P6 EPPM Help, Version 26.

Verified on November 6, 2026.

Next lesson in this trackLayouts

PMI, PMP and PMBOK are registered marks of the Project Management Institute, Inc. Oracle and Primavera are trademarks of Oracle. Microsoft Project is a trademark of Microsoft. BRC Academy is not affiliated with or endorsed by these organizations.

← All BRC Academy lessons

Have a program that's slipping, or about to start?

Book a 30-minute call. We'll tell you where your schedule and budget are exposed, and what an owner's rep would change, before you commit to anything.