In one of my workflows I built a switch which creates several tasks. The exits to these tasks go to a join and the join to a wait for chid. The wait for child is then configured as below. This waits for all tasks to complete before exiting to an update block that sets the status to fulfilled. This end to end process requires very little management and in fact the only people that need to touch the ticket are the task owners that are automatically assigned - the ticket closes itself.
Your process is identical to ours and agree it works very well in terms of automation. As you can see from the below once all Tasks are completed it changes the status of the ticket to "Fulfilled". However, I'd to ensure that the resolution comments are completed as part of this and presently the ticket can be closed with them being left blank.
Another of our fully automated processes from start to end writes to the fulfillment field and just indicates that it has been automatically closed.
Who is meant to close the ticket? An assigned owner?
Instead of fulfilling the request in the WF can you not have a flag update, notify the owner that its ready for fulfilled notes and then have a trigger which reacts to the flag and fulfilled field not being null to automatically fulfill the ticket?
Do the Resolution notes have to be updated manually or is the text the same each time?
This may be a simplistic view but if the text is always the same you could use an Update block to add the appropriate text to the Resolution Comment before setting the service request to fulfilled. If there are variables these could be pulled from the parameters in the service request.