Skip to content

[BUG] parseXER drops relationships whose lag_hr_cnt is blank (P6 6.0 exports write zero lag as empty) #17

Open

Description

@trlogicdk

Engine: v2.10.14 (also seen on v2.10.13)

What happens: Some older P6 exports (ERMHDR 6.0) write a zero lag as an empty lag_hr_cnt instead of 0. parseXER treats the empty value as non-finite and drops the relationship (ALERT lag-non-finite). In one
2,880-activity export, 2,614 of 3,235 relationships were dropped and the project finish came out 19 days earlier than P6's.

Evidence that P6 reads blank as 0: in that file, P6's own stored early dates satisfy every relationship with lag = 0 (0 forward-pass violations;
2,878 of 2,880 early starts tight to their driving predecessor, the other 2 set by constraints). With the blank lags set to 0, the engine matched P6's stored values on all 2,880 activities: ES, EF, LS, LF to the minute, TF and FF (< 0.01 h) and the critical flag.

Minimal reproduction (attached, synthetic): two activities, A (40 h)
-> B (24 h), FS with an empty lag_hr_cnt.

  • lag_hr_cnt = "" -> 0 relationships kept, B early start 2026-01-05, finish 2026-01-12, ALERT lag-non-finite
  • lag_hr_cnt = "0" -> 1 relationship kept, B early start 2026-01-12, finish 2026-01-15

Suggestion: treat an empty lag_hr_cnt as 0 (with an INFO note for traceability) and keep the ALERT for genuinely malformed values (NaN, text).

The original export is not mine to share, but I'm happy to re-test a fix against it.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions