Codes, UDFs & Notes
UDFs Are Typed Extra Fields, Not Activity Codes
UDFTYPE / UDFVALUE; formula is P6 web only; not an activity code

What a planner means
A user-defined field is an extra typed column you add because the predefined fields are not enough. Oracle EPPM entities that take UDFs: Projects, WBS, Activities, Steps, Expenses, Issues, Resources, Resource Assignments, Risks, Documents. Most UDFs have only a name and a data type. Project and activity UDFs can also have formulas and graphical indicators.
Types (Professional help)
| Data type | Use for |
|---|---|
| Text | Text or text+numbers |
| Start Date | Start date |
| Finish Date | Finish date |
| Cost | Currency |
| Indicator | Color-coded values in columns/reports |
| Number | Numeric, two decimal places |
| Integer | Numeric, except money |
EPPM REST / Integration API also list Code (API: code types are only used with Project Issues). Professional “choosing data types” does not list Code. Write both.
Formula UDFs: EPPM — visible only in P6 web; not visible in Professional connected to an EPPM database. You cannot filter views by formula UDFs. You cannot define a formula on an Indicator type. You can edit the Indicator detail window only if the type is Integer, Cost, or Number.
Indicators display an icon when a value hits a criterion (equals, range, …). Do not invent which icons exist.
XER
UDFTYPE
| Column | Oracle label |
|---|---|
udf_type_id | Unique ID |
udf_type_name | User Defined Field |
udf_type_label | Title |
table_name | Table |
logical_data_type | Data Type |
super_flag | Secure Code |
indicator_expression / summary_indicator_expression | (indicator formulas) |
Stored logical_data_type and table_name strings are not listed. Unverified. Do not invent them.
UDFVALUE
| Column | Oracle label |
|---|---|
udf_type_id | User Defined Field |
fk_id | Activity Step Item — treat as the object the UDF is on, not necessarily a step |
proj_id | Project |
udf_text | Text |
udf_number | Number |
udf_date | Date |
udf_code_id | Code |
Which value column is filled depends on type. Mapping text→udf_text, dates→udf_date, numbers/cost/integer→udf_number is the obvious split; confirm on a live XER before treating it as fact (unverified as a mechanical rule).
Formula definitions live in EPPM. Do not assume a formula UDF has a stored value in XER that Professional can show.
Microsoft Project
Custom fields are fixed slots on Task, Resource, or Assignment: Text1–30 (255 characters), Number, Date, Cost, Flag, plus Outline Codes. You can add a value list, a formula (then the field is read-only), and graphical indicators. Enterprise custom fields are defined in the enterprise global.
Same idea (extra typed column). Not the same object. P6 UDFs are a dictionary (UDFTYPE) plus values (UDFVALUE) on many entity types. Project has a numbered slot per type. They do not line up automatically (see convert/xer-mspdi.md).
Outline Code is closer to an activity code than to a UDF.
Don't
- Treat a UDF as an activity code, a notebook, or a step.
- Treat
fk_idas always a step. The Oracle label says “Activity Step Item”; the row is the object the type is on. - Invent
logical_data_type/table_nametokens. - Map one P6 UDF type onto MSP Text1 and call them the same field. Slots and types do not match 1:1.
- Show a formula UDF as if Professional stored it. Oracle: formula UDFs are P6 web only on EPPM.
- Put a formula on an Indicator type.
Sources
- Oracle Working with UDFs [27 Aug 2026]
- Oracle Creating Project UDFs [27 Aug 2026]
- Oracle Defining Indicators [27 Aug 2026]
- Oracle choosing data types [27 Aug 2026]
- Oracle UDFTYPE [27 Aug 2026]
- Oracle UDFVALUE [27 Aug 2026]
- Oracle UDFDataType API [27 Aug 2026]
- Microsoft Text1-30 [27 Aug 2026]
- Microsoft Outline Code1-10 [27 Aug 2026]