Paul,
for each part, pick a surface and add a constraint to fully constrain then re-run.
There should be nothing unconstrained,
Sequentially remove each constraint until you locate a culprit.
Then post more info
My suspicion is that you ought to be setting the default interface to bonded and then putting contact in those connections which are an exception to this general rule.
bfn