P6 and Microsoft Project
MPXJ Cannot Write a Real MPP — Generate MSPDI
MPXJ cannot write MPP — generate MSPDI XML

Write this on the wall
MPXJ cannot write a Microsoft Project MPP file. Generate MSPDI XML (.xml), not .mpp.
This is a proved fact for this team. Do not ship an "MPP export."
What MPXJ can read
MPXJ.org: MPX, MPP, MSPDI, MPD, Planner, Primavera P6 PMXML and XER, P3, SureTrak, Asta Powerproject / Easyplan, Phoenix, Fasttrack, GanttProject, TurboProject, ConceptDraw PROJECT, Synchro, Gantt Designer, SDEF, Sage 100 Contractor Schedule Grid, Project Commander, Deltek Open Plan BK3, Edraw Project EDPX. Also Project Server, Microsoft Planner, P6 EPPM web services, Oracle Primavera Cloud.
What MPXJ can write
MPXJ.org: MPX, MSPDI, PMXML, XER, Planner, SDEF (plus JSON in UniversalProjectWriter / FileFormat).
There is no MPP writer. FAQ, in full:
> "Can I use MPXJ to write MPP files? Not at present. … You are therefore probably better off using MSPDI which does support the full range of data items present in an MPP file."
FAQ also: only MPP controls view appearance (filters, tables, bar styles). No MPXJ output format carries that.
How to write MSPDI
new UniversalProjectWriter(FileFormat.MSPDI).write(project, fileName) or MSPDIWriter (SaveVersion default Project2016; MicrosoftProjectCompatibleOutput default true).
Timephased data is off by default on write.