Views, Filters & Print

P6 Activity Constraints (Task.cstr_type)

TASK.cstr_type codes and float effects

P6 Status tab Constraints group. Primary and Secondary show None.
A constraint is a Status-tab choice. It is not Remaining Finish and not a deadline.

P6 allows an activity to carry a primary and a secondary constraint at once, stored as cstr_type / cstr_type2 with dates cstr_date / cstr_date2.

Codes

Oracle's XER TASK map labels cstr_type as "Primary Constraint" but does not list the stored strings that column can hold. The codes below come from two other Oracle sources — the CPP constraint list and the Prime-to-P6 map — and MPXJ's PrimaveraReader maps the same CS_* strings in its own converter. Where a code appears in only one of the two Oracle lists, that gap is noted rather than assumed away.

CodeMeaningHard/soft (Oracle)In CPP mapIn Prime mapMPXJ maps to
CS_ASAPAs Soon As Possible—yesnot listed on the page fetchednot in the historical MPXJ map we fetched
CS_MSOMust Start On / Start OnCPP: hardyesyes (START_ON)MUST_START_ON
CS_MSOAStart On or AfterCPP: softyesyesSTART_NO_EARLIER_THAN
CS_MSOBStart On or BeforeCPP: hardyesyesSTART_NO_LATER_THAN
CS_MEOMust Finish On / Finish OnCPP: hardyesyes (FINISH_ON)MUST_FINISH_ON
CS_MEOAFinish On or AfterCPP: softyesyesFINISH_NO_EARLIER_THAN
CS_MEOBFinish On or BeforeCPP: hardyesyesFINISH_NO_LATER_THAN
CS_MANDSTARTMandatory StarthardyesyesMUST_START_ON (MPXJ collapses this)
CS_MANDFINMandatory FinishhardyesyesMUST_FINISH_ON (MPXJ collapses this)
CS_ALAPAs Late As Possible—not in CPP list fetchedyesAS_LATE_AS_POSSIBLE

Whether the XER stores "no constraint" as a blank field, as CS_ASAP, or simply omits the field entirely is unverified. Confirm on a live XER before treating an empty value as ASAP.

P6 Professional help and P6 EPPM help disagree with the CPP map on which constraints count as "hard" versus "soft." Professional and EPPM help define hard as Mandatory Start and Mandatory Finish only, with everything else — Start On, Start On or Before/After, Finish On, Finish On or Before/After — counted as soft; soft constraints, in Oracle's words, "do not prevent activities from being moved, but can distort float." The CPP map instead treats CS_MSO, CS_MSOB, CS_MEO, and CS_MEOB as hard. Both sources are worth recording, but for actual scheduling behavior, defer to the P6 help pages rather than the CPP hard/soft tags.

Effects on dates and float (P6 help)

Start On can delay the early start or pull the late start to the constraint date. Start On or Before affects late dates only, and can decrease total float — it is applied on the backward pass only if the calculated late start would otherwise fall later than the imposed date. Start On or After affects early dates only, applied on the forward pass only if the calculated early start would otherwise fall earlier than the imposed date. Finish On can delay the early finish or pull the late finish. Finish On or Before affects late dates only. Finish On or After sets the earliest finish and, in Oracle's phrasing, "reduces float to coordinate parallel activities." As Late As Possible, applied to an activity with positive float, sets the early dates as late as possible without delaying successors. Mandatory Start imposes both the early and late start regardless of network logic, and Oracle notes it is used "regardless of its effect on network logic" — it can change the late dates of predecessors and the early dates of successors. Mandatory Finish does the same for finish dates, overriding network logic in the same way.

Expected Finish is not a cstr_type value. It lives in a separate column, TASK.expect_end_date, and is used only optionally when scheduling.

P6 vs Project names

Microsoft Project has no Mandatory Start/Finish category distinct from Must Start On / Must Finish On. MPXJ maps both P6's mandatory constraints and its "on" constraints to the same Project fields — Must Start On and Must Finish On — which means that collapse loses the P6 distinction between a mandatory constraint and an "on" constraint. See msp/constraints.md and convert/xer-mspdi.md for how that mapping plays out in practice.

Sources

Back to top