New HelpDesk project: round-robin assignment per group with holiday absence exception

I'm setting up a new HelpDesk project. I have three groups for the support agents, representing different service levels.

I need round-robin assignment to assign case types to particular groups on a rotating basis (basically going through the group membership).

For example, issue types Simple, Medium, and Complicated, with groups Level1, Level2, and Level3, each group with different support agents as appropriate to their skill level.

I also need the ability for agents to specify holiday absences, to take themselves “out of the queue.” What would be the best way to go about that?

0
6 comments

Hi! While there are no predefined round-robin schemes in YouTrack helpdesk projects, you can use workflows to achieve this setup.

An on-change rule can be made to assign an agent on ticket creation. As workflows can be written in JS, it allows you to implement your custom logic with skill levels and absences. 

For a simple example of a round-robin scheme implemented in a code-based workflow rule, see: Enhance Helpdesk Support.

0

Thanks, @Stanislav. I think I'll start simply by implementing that example workflow and go from there.

Regarding scheduling, is there any kind of “generic” calendar functionality one can easily integrate with YouTrack?

0

Additionally, it would be nice if that example were a bit more documented.

Is it possible to build that same workflow using the Workflow Constructor?

0

Organizations might keep track of absences in a separate application. In such a setup, the round-robin workflow rule can make a request via HTTP to determine if the specific user that the rule has picked to assign the issue to is available. The external app returns a response, and based on that response, the round-robin either asserts this user as the assignee or skips them and goes on to check the next user.

The above is just one of the ways that this can be implemented, and it really depends on the setup in a specific organization. An alternative approach could be storing absences in a custom app in YouTrack or even within a special issue (that may be hidden from everyone but the administrators by restricting its visibility). I.e., there doesn't seem to be a generic approach with regards to calendars that we could document or a best-practice solution that we would recommend.

Is it possible to build that same workflow using the Workflow Constructor?

The script in Enhance Helpdesk Support contains some logic in JS that is not supported by the constructor, and it's unlikely that something similar can be created using other methods available in the constructor. 

0

Thanks, @Stanislav. Since the holiday constitutes basically an “exception” to assignment I decided simply to create another Schedule project with simple start and end dateTime values. If any open Schedule issues exists for the agent to which ticket assignment should occur, and the current dateTime falls within the interval specified by one of those issues, then assignment should pass over that agent to the next one.

This has the benefit of adding the time component to the exception. The exception starts, say, at noon the day before the agent's vacation begins, and ends at noon on the last workday of the vacation.

I'm thinking about where to store the “last assigned to” agent value. Is there a way to store custom values on other, non-Issue objects, such as a group?

If I end up needing help writing this JavaScript workflow, are there any resources which could help?

Of course it'd be best to do as much as possible in the regular workflow builder. I can easily assign to a particular group “queue” based on issue type this way.

At present, I can only assign to a particular user. It'd be great to be able to say assign to a group instead, based on some criteria (group member with least recent assignment, rotating/round-robin group member, etc.).

0

I'm thinking about where to store the “last assigned to” agent value. Is there a way to store custom values on other, non-Issue objects, such as a group?

User groups have descriptions (text), but this value is Read-only in workflow API. The easiest approach is creating a special issue with the “last assigned to” or “next assignee” custom field value and use this value in the script logic. The issue can be restricted in visibility so it is only visible to special user groups (like instance admins).

If I end up needing help writing this JavaScript workflow, are there any resources which could help?

JavaScript Workflow Reference contains the most comprehensive documentation on the subject. You can also submit a ticket to our team for any specific questions.

Of course it'd be best to do as much as possible in the regular workflow builder.

As the logic itself is not so straightforward, code-based workflows are a better solution here.

At present, I can only assign to a particular user. It'd be great to be able to say assign to a group instead

To assign user groups, the field itself must have the “group” field type, which is not the case for the default Assignee field. As mentioned earlier, though, user groups by themselves don't have “fields” with values, so one would still need to store data outside of these groups (e.g., in issues).

Unfortunately, there is also a different problem: JT-85351. Due to this, on-change workflows currently don't trigger on the creation of a helpdesk ticket. In addition to the round-robin logic, one would need to use an on-schedule rule to periodically check tickets without assignees and set them based on the round-robin logic. 

0

Please sign in to leave a comment.