Hey, nice work. This method keeps the controller skinny : it is always a good practice !
An other possible way is to make a manager no ? The manager can persist and flush an entity ? It is only one service but it can call other service like mailer…
Thank you for your post