Codes, UDFs & Notes

Activity Codes Are a Pick-List, Not a UDF

ACTVTYPE / ACTVCODE / TASKACTV; zero or one value per type; not a UDF

P6 Activities grouped by WBS. Green WBS bands sit above activity rows.
These green bands are WBS grouping. Activity codes are a pick-list you can also group by, not a UDF.

What a planner means

Activity codes categorize activities from a predefined list of values. Oracle contrasts that with an activity UDF (free typed value). Use them to group, sort, filter, and color.

Three scopes (Oracle / REST: Global, EPS, Project):

  • Global: any activity in the enterprise.
  • EPS: only activities in projects under that EPS (and subordinate EPS nodes).
  • Project: only that project.

Values are hierarchical (ACTVCODE.parent_actv_code_id). REST: each code type can have an unlimited number of values. EPPM: max tree levels is an Application Settings data-limit.

REST ActivityCodeAssignment: for each activity code type, an activity may have zero or one value assigned. Not many values of the same type.

ACTVTYPE.super_flag is Secure Code. Do not invent what “secure” blocks without a citation.

A display preference chooses whether you see the value or the description.

XER

ACTVTYPE (dictionary)

ColumnOracle label
actv_code_type_idUnique ID
actv_code_typeActivity Code
actv_code_type_scopeActivity Code Type Scope
actv_short_lenMax Code Length
proj_idEPS/Project
seq_numSort Order
super_flagSecure Code

Stored scope strings are not listed on the map. REST/UI say Global, EPS, Project. Do not invent AS_* tokens as Oracle.

ACTVCODE (values)

ColumnOracle label
actv_code_idUnique ID
short_nameActivity Code Value
actv_code_nameDescription
actv_code_type_idActivity Code
parent_actv_code_idParent Activity Code Value
seq_numSort Order
colorColor (P6 EPPM only)

TASKACTV (assignment)

ColumnOracle label
task_idActivity
actv_code_idActivity Code Value
actv_code_type_idActivity Code
proj_idProject

EPS-level codes follow the EPS node. They often fail to import unless the target database has the same EPS name/structure. That is importer behavior, not a second table.

vs UDF

Activity codeUDF
ValuesPredefined list; hierarchicalTyped value (text/date/number/…)
XERACTVTYPE + ACTVCODE + TASKACTVUDFTYPE + UDFVALUE
Typical useGroup / filter / colorExtra field on an object
Per objectZero or one value per code typeOne value per UDF type

Microsoft Project

Closest analogue is an Outline Code (Outline Code1–10, or Enterprise Task Outline Code1–30): a hierarchical lookup you group and summarize by. Text1–30 is free text (255 characters), optionally with a value list — that is closer to a UDF than to an activity code.

Same idea (tag tasks from a list). Not the same object. Outline codes are fixed slots. P6 codes are a dictionary plus assignments. They usually do not survive a clean XER → MSPDI round-trip as P6 activity codes (see convert/xer-mspdi.md).

Don't

  • Treat an activity code as a UDF, a WBS code, or an OBS name.
  • Assign two values of the same code type to one activity.
  • Invent AS_Global / AS_EPS / AS_Project as Oracle XER tokens. UI/REST say Global, EPS, Project.
  • Map ACTVTYPE to MSP Text1 and call them the same object. Outline Code is the closer slot, and still not the dictionary.
  • Treat wbs_short_name as an activity code.

Sources

Back to top