Assemblies make my stock go negative

Assemblies make my stock go negative

I am sure this is just the way that we are using this feature, but we use assemblies, a lot. The issue for us is the way that the relive inventory and the fact that it makes our composite item stock go negative. 

I have added flows to auto assemble and it is supposed to do this when the SO is saved. I also have a flow that should do it at Invoice stage, but none of this is working as expected. 

Is this a user error? Or what do I need to do to make this work correctly?