There are a specific category of tickets which we need to only be closeable by the assigned service agent, when the ticket has a specific 'Service And Support Group'.
So far the closest I've got is creating a custom field for the agent to complete once a ticket is ready to be closed, and a rule which makes ticket status read-only while this field is empty. However, this doesn't prevent other people (i.e. the ticket raiser) from filling in the field, and it also means the status has to go straight form New to Closed.
Are there any better solutions?
One way you could solve this is to add a rule for the status field 'readonly' property and get the user name of the logged in user using the GETUSERNAME function in the rule editor. Then compare that with the user name of the 'assigned to' on the ticket. If they are not the same, then make the status field read-only and if they are the same leave it editable.
The only challenge here is how to get the user name from the 'assigned to' field value. For this you'll have to write a small sdk code to get the username based on the 'assigned to' field value and store that in some custom field. Then compare that custom field value with the value retrieved from the getusername function in the rule.
Hope this helps.
You Can have a on Every Save Workflow rule with Specific Categories of Tickets you mentioned, along with them you can check Last Changed By is service agent or not and you can add the conditions to satisfy the specific service & support groups as well.
And if these conditions satisfy, then the workflow action you can choose as Field update and close the ticket.
Note: According to KBA, Closed Status can only be possible from Completed Status. So you have to check whether the status is completed or not through workflow conditions.