This is done manually using signal because we do not use a foreign key so we do not have automatically cascade deletion.