Important: This app is part of Zendesk Labs. Labs apps are experimental apps that are provided as-is, with no support.
The Out of Office app is a tool for managing the availability of an agent and ensuring that tickets assigned to unavailable agents are properly handled if updated by a customer.
The app is available on Zendesk Labs. Click Admin () in your Zendesk, then select Apps > Marketplace. Click the link to Zendesk Labs in the sidebar on the right side.
This article covers the following topics to help you install, use, and extend the app.
- What's installed with the app
- Changing the settings
- Using the app
- Understanding the 'agent_ooo' tag
- Known limitations
- Extending the app
The Out of Office app displays the current out-of-office status of the agent on tickets assigned to the agent.
The app displays a list of all agents along with who is out-of-office or not.
The app prevents tickets from being accidentally assigned to an agent who is OOO. When the prevention happens there's also a pop-up notification displayed to the agent making the attempt which looks like the following:
Exception: If a ticket is being assigned by the current agent to themselves while they are OOO - that will be allowed. Reason being is it is assumed the current agent that's OOO and assigning themselves a ticket knows they are OOO but just in case, the following warning will be displayed after the ticket is saved:
Now say an agent attempts to update a ticket where they're not the current assignee and the current assignee happens to be OOO. In this case the agents updating tickets where the current assignee is OOO will be able to update the tickets but the following warning notification will be displayed so they're made aware of the current assignee's OOO status:
Pending & On-Hold tickets assigned to an OOO agent which get updated with a status change to Open are reassigned to the respective ticket's parent group but the assignee field becomes empty. Status changes from Pending or On-Hold will happen, for example, when an end-user replies to an email notification.
What's installed with the app
The app automatically creates the following items in your Zendesk when it's installed:
- a user field that applies an agent_ooo tag to users marked as unavailable
- a trigger to handle the unassign action on a ticket based on the agent_ooo tag
- a trigger to remove the agent_ooo tag from a ticket when it's assigned to a different agent
The items are required for the app to work. Don't delete or modify them.
Changing the settings
You can modify the default behavior of the app by changing the app settings outlined in this section. To change app settings, click Admin () in your Zendesk, then select Apps > Manage. Click the gear icon on the right side of the Out of Office app and select Change Settings.
Setting: Confirm status change?
Disabling this option makes changing an agent's status a seamless process by disabling the confirmation message. As a side effect, it will no longer be possible to decide on a case-by-case basis whether or not to unassign an agent's open tickets when marking them as unavailable.
Setting: Force unassign tickets?
Enabling this setting unassigns an agent's open tickets automatically whenever their status is changed to unavailable. This option is disabled by default, allowing the unassign action to be run on a case-by-case basis.
Setting: Prevent assignment?
Disabling this option allows tickets to be saved if they're assigned to an agent who's unavailable. Warnings will still be displayed that the assignee is unavailable, and agents will always be able to assign tickets to themselves regardless of their status.
Using the app
Agent status can be modified using the app in the ticket sidebar or user profile.
Administrators can also modify agent status from the app dashboard accessed from the navbar on the left side of the agent interface.
Clicking on the status toggle displays a dialog box that lets you change an agent's status. Changing the status either adds or removes a tag on Pending/On-Hold/Solved tickets as well as optionally all Open tickets. See Understanding the 'agent_ooo' tag below.
When a Pending/On-Hold ticket is reopened by an end user and the assignee is unavailable, a trigger fires that returns that ticket to the group unassigned queue. You can add a trigger to send a notification to the parent group to let everybody know a requester just updated a ticket assigned to an OOO agent that's now in the parent group. See Extending the app below.
The app checks the status of the assignee each time a ticket is saved. If the assignee is out-of-office, the app warns the updater that the assignee is unavailable. If the Prevent assignment? setting is enabled, it also prevents tickets from being saved if the new assignee is unavailable.
Understanding the 'agent_ooo' tag
Changing the out-of-office status either adds or removes an agent_ooo tag on tickets based on the following rules.
- When the agent marks his or herself as unavailable, the agent_ooo tag is added to the agent's user profile in the Agent Out? user field
- When the agent changes their status to unavailable, the tag is added to all Pending/On-Hold/Solved tickets. When the agent changes their status to available, the tag is removed from all Pending/On-Hold/Solved tickets.
- Any Open tickets with the tag are unassigned on update
- If the ticket assignee is changed, then the tag is removed
- If the tag is removed from a ticket, no other tags are removed
- If the Prevent assignment? setting is disabled and a ticket is assigned from one unavailable agent to another unavailable agent, the agent_ooo tag will be lost. This means that the ticket will not be unassigned if it is reopened
- Agents are able to assign a ticket to a group with only one agent even if the sole agent in that group is unavailable
- The message 'Error: Unable to get list of agents' will be displayed for users if their role has the 'Cannot browse or search for users' permission set
- Agents without administrator rights can't change their status using the app dashboard in the navbar on the left side of the agent interface. They can still change their status from their profile or from one of their assigned tickets
- The agent_ooo tag is added to solved tickets. If the ticket is closed while the tag is applied, the tag will not be removable. This may be undesirable for reporting purposes. If so, the system automation that closes solved tickets can be modified to remove the agent_ooo tag
- Intermittently when marking an agent as OOO and un-assigning all open tickets only some of the tickets will actually get unassigned
- When a ticket assigned to an OOO agent gets updated the ticket gets assigned back to the parent group with a null Assignee value - the trigger working in the background during this action does not currently send an email notification to the agents in the group notifying them this happened
- The app will not prevent assigning tickets unless the ticket is updated individually through the Zendesk interface. Triggers, the Mail API, and REST API, and bulk editing will all be able to bypass the assignment restrictions
Extending the Out of Office app
Customizing the app is not recommended unless you're an experienced Zendesk administrator. If you modify the generated triggers, you may cause the app to behave unexpectedly or to completely fail.
As well, future versions of the app may change how the tags and triggers behave, which could break any modifications you make. If you end up customizing this app, make sure you take this into account to avoid a bumpy ride.
Notify the group on an updated ticket with an out-of-office assignee
Notify the ticket's parent group that a given out-of-office assignee had their ticket updated. This sends a notification to all in the given ticket's parent group that the ticket is still assigned to that group but there's no longer an assignee.
An additional action can be added to add a custom tag every time a ticket is unassigned by that trigger.
At this point business rules may be created around this new tag. For example, you might use this new tag to notify the group that a ticket has been assigned back to it by the app.
Leaving tickets assigned to users
You can modify the unassign trigger to only tag tickets as reopens, and then customize your own actions on updates to tickets where the agent is unavailable. To do this, add "Ticket: Status - Changed" as an "all" condition to the trigger, and remove all actions except adding a tag such as "reopen_agent_ooo". You can then perform your own business logic, with the app managing which tickets have the agent_ooo tag applied and with reopened ticket getting the reopen_agent_ooo tag applied.
Features on the Roadmap
- Custom OOO messages for agents
- Display of whether or not an agent is on/offline & ability for Admins to set agent online/offline
If there is a feature you don't see here that you want - please leave your feedback in the comments on this document, thanks!