The following document addresses the question of having a given workflow task be a required entry to allow a ticket status update
Release: 17.3 and higher
CA Service Desk Manager
Currently there is not a built-in way to check the status of attached workflow tasks from the ticket level. This may be possible with the implementation of custom SPEL code.
OOTB a dependent attribute control would be used as noted below, but workflow tasks are not an available attribute to use as they are stored on a separate object layer. See documentation link about Status Transitions and Dependent Attribute Controls (link)
The following is a possible workaround to accomplish this functionality. However, this is an untested and unsupported procedure, which is being provided for informational purpose. Support does not warrant that this workaround would be suitable for a given scenario. Please try in a testing environment before applying in production.
A custom flag field on the ticket could be created to indicate if all workflow tasks are completed, and have an event associated with the last workflow task that sets the flag to True. This can then be used to prevent the ticket from being set to a specific status unless the workflow-finished flag is set to True. This would require adding a custom column to your database schema and adjusting each workflow.
The steps listed below don't cover every single part of the process, but are intended to lay out the guidelines for how to implement this workaround. The idea of this change is to implement a custom field for your tickets that tracks whether all workflow tasks are completed.
A new field would need to be created in the database schema, with a suggested name of "zWorkflowComplete". This field would be configured with a value of 0 at ticket creation; also would need an event configured to set this to 1 when called. This field will be used to indicate whether or not all workflow tasks are completed; while it's not necessary to add this field to your forms as a visual indicator, you certainly could do so (just make sure it's set to read-only, or users could check the box manually and still fail to close the ticket due to open tasks).
The next step is to configure the workflows to set the zWorkflowComplete flag when they're finished. While one could just modify the last task on each workflow, the recommendation would be to create a task that would normally auto-complete (requires no input), giving it a sufficiently large sequence number (to allow for other entries to be inserted prior to it if needed), and having it call the event to set zWorkflowComplete to 1 when it hits the Completed status. This should always be the very last task in the workflow, or else the flag won't necessarily indicate that all workflow tasks are actually completed. The intent here is that once the final task is done, the flag will be set, which gives the all-clear to update the status of the ticket.
The last step is to modify the status transitions to prevent moving into a status if zWorkflowComplete is not set to 1, using a condition macro. Once this is configured, users should not be able to set a ticket to that status unless the workflow is fully completed.