P6 and Microsoft Project
P6 Constraints vs Project Deadline — Not the Same
P6 has no Deadline; do not map FNLT or Must Finish By to Deadline

What a Deadline is (Microsoft only)
Microsoft: a Deadline is a target date. If the task is not finished by then, Project shows an indicator (and an arrow on the Gantt). “Apply a deadline … when you want to track a deadline … but don’t want to lock your schedule by setting an inflexible constraint such as Must Finish On or Finish No Later Than.”
Usually does not schedule the task. Exception Microsoft states: a deadline can change total slack (if it sits before the late finish, slack is recalculated from the deadline; slack 0 → critical). On an ALAP task, the task is scheduled to finish on the deadline (and can still finish after if predecessors slip).
P6 has no Deadline field.
What a P6 constraint is
A constraint is scheduling logic: primary/secondary cstr_type + cstr_date. Finish On or Before / FNLT-class constraints move late dates. Mandatory Finish overrides network logic. Must Finish By is a project constraint (plan_end_date), not an activity deadline indicator. See P6 Activity Constraints (Task.cstr_type) and Must Finish by (Project Constraint, Not Data Date).
Project constraints (ASAP … MFO) are the analogue of P6 CS_* — not of Deadline. See P6 Activity Constraints (Task.cstr_type) and constraints-map.md.
What Do not treat as the same
- Do not map P6 Finish On or Before / CS_MEOB / FNLT to MSPDI Deadline. That is a constraint. Deadline is the indicator field.
- Do not map P6 Must Finish By to Deadline. MFB is the backward-pass end for the project.
- Do not map P6 Expected Finish to Deadline. EF is a typed forecast the scheduler may honor. See Expected Finish (Not Remaining Finish, Not a Constraint).
- Do not invent a P6 Deadline column. If the Viewer needs a “target finish” marker, say so as UI chrome, not as an XER field.
- Do not assume a Project Deadline survives into P6 as FNLT. There is no Oracle import sentence that says that. Unverified. Prefer mapping Deadline to a UDF or dropping it, not silently creating CS_MEOB.