Codes, UDFs & Notes
Activity Codes Are a Pick-List, Not a UDF
ACTVTYPE / ACTVCODE / TASKACTV; zero or one value per type; 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)
| Column | Oracle label |
|---|---|
actv_code_type_id | Unique ID |
actv_code_type | Activity Code |
actv_code_type_scope | Activity Code Type Scope |
actv_short_len | Max Code Length |
proj_id | EPS/Project |
seq_num | Sort Order |
super_flag | Secure 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)
| Column | Oracle label |
|---|---|
actv_code_id | Unique ID |
short_name | Activity Code Value |
actv_code_name | Description |
actv_code_type_id | Activity Code |
parent_actv_code_id | Parent Activity Code Value |
seq_num | Sort Order |
color | Color (P6 EPPM only) |
TASKACTV (assignment)
| Column | Oracle label |
|---|---|
task_id | Activity |
actv_code_id | Activity Code Value |
actv_code_type_id | Activity Code |
proj_id | Project |
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 code | UDF | |
|---|---|---|
| Values | Predefined list; hierarchical | Typed value (text/date/number/…) |
| XER | ACTVTYPE + ACTVCODE + TASKACTV | UDFTYPE + UDFVALUE |
| Typical use | Group / filter / color | Extra field on an object |
| Per object | Zero or one value per code type | One 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_Projectas 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_nameas an activity code.
Sources
- Oracle About Activity Codes [27 Aug 2026]
- Oracle Working with Activity Codes [27 Aug 2026]
- Oracle activity codes and values [27 Aug 2026]
- Oracle REST ActivityCodeAssignment [27 Aug 2026]
- Oracle REST ActivityCode [27 Aug 2026]
- Oracle ACTVTYPE [27 Aug 2026]
- Oracle ACTVCODE [27 Aug 2026]
- Oracle TASKACTV [27 Aug 2026]
- Microsoft Outline Code1-10 [27 Aug 2026]
- Microsoft Text1-30 [27 Aug 2026]