Hi Jon,
Running through some example Powerproject files, I noticed that some task links weren't being brought across. A little digging into the specifics showed that Asta tasks can have completed sections which appear to be subtasks of a parent. There is a separate task_completed_section table in the database which stores these. Where these subtasks are involved in links, mpxj doesn't detect them, and the links are lost on import.
The task_completed_section table has, amongst other items, an ID and a TASK. The former is referenced in the offending links; the latter points to the parent.
I have patched my sources to add a new AstaReader method, processResolvedPredecessors(), which uses the task_completed_section table to resolve any section links back to their parent task items, and am calling this from AstaDatabaseFileReader's processPredecessors() method. I've not investigated adding to AstaTextFileReader or AstaDatabaseReader.
This is not a perfect solution since the sections do not necessarily share the same dates as the parent tasks, but it maintains links which would otherwise be lost, and I believe it is ultimately more important to have the links.
Attached are patches, and an example PP.
Are you available next week for a quick call about this - feel free to email me directly.
I've added some code nbased on your patch to handle completed sections - let me know if it works OK for you.