1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346
|
<?xml version='1.0' encoding='ISO-8859-1'?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
"http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd">
<!-- $Id: time.xml,v 1.4 2006/04/20 16:09:31 cs Exp $ -->
<chapter id="time">
<title>Time related functions in OTRS</title>
<sect1 id="time-settings">
<title>Specifying the relevant times for OTRS</title>
<para>
Some actions in OTRS are dependent on, and initiated in, relation to the actual system time.
The escalation of tickets and the calculation of the escalation time for
tickets depend on a proper set up of the relevant times
for the ticket system. The sending of notifications for escalated
tickets and for tickets that have reached the pending time is triggered in
dependency to the time settings. The automatic unlock mechanism is
influenced by a proper time set up too.
</para>
<para>
With the configuration parameters
<link linkend="Framework:Core::Time:TimeWorkingHours">
TimeWorkingHours
</link>,
<link linkend="Framework:Core::Time:TimeVacationDays">
TimeVacationDays
</link>
and
<link linkend="Framework:Core::Time:TimeVacationDaysOneTime">
TimeVacationDaysOneTime
</link>
the relevant time settings for the system can be specified either via the
<link linkend="sysconfig">
SysConfig interface
</link>
or directly in the <filename>Kernel/Config.pm</filename> file.
</para>
<sect2 id="TimeWorkingHours">
<title>TimeWorkingHours</title>
<para>
Set up the relevant working hours for your system in
<filename>Kernel/Config.pm</filename> file the following way:
</para>
<example id='specifying-workinghours'>
<title>Specifying the relevant working hours for the system</title>
<para>
<programlisting>
$Self->{'TimeWorkingHours'} = {
Mon => [ 8,9,10,11,12,13,14,15,16,17,18,19,20 ],
Tue => [ 8,9,10,11,12,13,14,15,16,17,18,19,20 ],
Wed => [ 8,9,10,11,12,13,14,15,16,17,18,19,20 ],
Thu => [ 8,9,10,11,12,13,14,15,16,17,18,19,20 ],
Fri => [ 8,9,10,11,12,13,14,15,16,17,18,19,20 ],
Sat => [ ],
Sun => [ ],
};
</programlisting>
</para>
</example>
<para>
Only during the specified working hours tickets can escalate, notifications
for escalated and pending tickets will be send and tickets will be unlocked
automatically. Furthermore only these hours influence the calculation of
the escalation time and the point of time for automatic unlock.
</para>
</sect2>
<sect2 id="TimeVacationDays">
<title>TimeVacationDays</title>
<para>
General holidays with the same date every year can be specified for the
system in the <filename>Kernel/Config.pm</filename> file the following way:
</para>
<example id='specifying-vacation-days'>
<title>Specifying regular holidays in the system</title>
<para>
<programlisting>
$Self->{'TimeVacationDays'} = {
1 => {
1 => 'New Year\'s Day!',
},
5 => {
1 => '1st. May',
},
12 => {
24 => 'Christmas Eve',
25 => 'Christmas Day',
26 => 'Boxing Day',
31 => 'New Year\'s Eve',
},
};
</programlisting>
</para>
</example>
<para>
No time related calculations or actions are done by the
system On such days.
</para>
</sect2>
<sect2 id="TimeVacationDaysOneTime">
<title>TimeVacationDaysOneTime</title>
<para>
Free days or holidays that vary every year can be specified in
the <filename>Kernel/Config.pm</filename> file the following way.
</para>
<example id='specifying-sometime-vacation-days'>
<title>Specifying irregular holidays in the system</title>
<para>
<programlisting>
$Self->{'TimeVacationDaysOneTime'} = {
2005 => {
12 => {
27 => 'Annual closing',
28 => 'Annual closing',
29 => 'Annual closing',
30 => 'Annual closing',
},
},
2006 => {
6 => {
12 => 'Annual works outing',
},
},
};
</programlisting>
</para>
</example>
<para>
No time related calculations or actions are done by the
system On such days.
</para>
</sect2>
</sect1>
<sect1 id="unlock-tickets">
<title>Automated unlocking of tickets</title>
<para>
Locked tickets can be unlocked automatically by the system. This feature might
be useful if an agent has locked tickets that need to be processed, but the
agent can't work on this tickets because the agent is on holiday, for example. The
automated unlock feature unlocks tickets after a given time to ensure that
no locked tickets will be forgotten and other agents can process these
tickets.
</para>
<para>
The unlock time for tickets can be specified in the
<link linkend="adminarea-queue">
settings
</link>
for every queue. The module <filename>bin/UnlockTickets.pl</filename>,
which should be executed periodically via a cron job, performs the
automated unlocking of tickets. Tickets are unlocked only during the
hours set by the
<link linkend="TimeWorkingHours">
TimeWorkingHours
</link>
configuration parameter. During days specified in
<link linkend='TimeVacationDays'>
TimeVacationDays
</link>
and
<link linkend='TimeVacationDaysOneTime'>
TimeVacationDaysOneTime
</link>
no tickets are unlocked automaticlaly.
</para>
<para>
Notifications on unlocked tickets are send out only to those agents that
have the queue with the unlocked tickets set in "My queues" and that have
activated the notification on unlocked tickets in their personal
<link linkend="user-preferences">
preferences
</link>
.
</para>
</sect1>
<sect1 id="pending-tickets">
<title>Pending tickets</title>
<para>
With OTRS you can create pending tickets. The system can send out a
notification at a given time and remind an agent of a locked
ticket. This feature might be useful to get reminded about contacting a customer
sometimein the future as the customer is not reachable at the moment, for
example.
</para>
<para>
Reminders on pending tickets are only send out during hours specified
with the
<link linkend="TimeWorkingHours">
TimeWorkingHours
</link>
configuration parameter. The <filename>bin/PendingJobs.pl</filename> module,
which should be executed periodicaly via a cron job, triggers the delivery
of the pending reminders.
</para>
</sect1>
<sect1 id="escalate-tickets">
<title>Ticket escalation</title>
<para>
With OTRS it is possible to let tickets escalate. If a ticket is
escalated, no other tickets are displayed for the queue containing the escalated
ticket. The escalated ticket has to be locked
first. The escalation of tickets ensures that tickets must be
considered after they have reached a given age.
</para>
<para>
The age after which a ticket escalates can be specified in the
<link linkend="adminarea-queue">
settings
</link>
for every queue. With a job for the
<link linkend="adminarea-genericagent">
GenericAgent
</link>
notifications on escalated tickets can be delivered to agents that have
the queue with the escalated ticket in "My queues" enabled and that have
activated notifications on escalated tickets in their personal
<link linkend="user-preferences">
preferences
</link>
.
</para>
<example id='genericagent-job-for-escalated-tickets'>
<title>GenericAgent job to send notification on escalated tickets</title>
<para>
The file <filename>Kernel/Config/GenericAgent.pm</filename> already
contains a example job for notification delivery to agents on escalated
tickets. The jobs in this file are processed by the GenericAgent, which is
executed periodicaly by a cron job. Just open the file and remove the
comments ("#"") for the following lines:
</para>
<para>
<programlisting>
%Jobs = (
# --
# [name of job] -> send escalation notifications
# --
'send escalation notifications' => {
Escalation => 1,
# new ticket properties
New => {
Module => 'Kernel::System::GenericAgent::NotifyAgentGroupOfCustomQueue',
},
},
# insert your jobs (see Kernel/Config/GenericAgent.pm.examples)
);
</programlisting>
</para>
</example>
<para>
If a new ticket is stored in a queue that has set a value for escalation
time, the positive value for the set escalation time is shown first. The
displayed value for the escalation time does not change if the system time is
not in the hours specified for TimeWorkingHours or if today is a day
specified in TimeVacationDays or TimeVacationDaysOneTime.
</para>
<para>
If the system is in a time window which is relevant for the calculation for
time specific events, the escalation time is counted down. If the value 0
is reached then the ticket escalates. When the value for the escalation
time becomes negative, the ticket has exceeded the point of time for the
escalation. During the next run of the GenericAgent the job for the
notification about escalated tickets is executed and the messages will be
send out to the agents. The escalated ticket blocks the view of all other
tickets in the queue and must be processed. Even if the escalated ticket is
locked and processed the displayed value for the escalation time stays in
the negative range. This behaviour does not change as long as the ticket
is in an open state (open, new, pending, etc.). The value for the escalation
time only gets reset if the state changes to closed. If the same ticket is
reopened, for example, by a follow up ticket, the count down for the escalation
time starts again with the positive value set for the queue in which the
ticket is stored.
</para>
<para>
Thus a ticket only can escalate if it is not locked and is in an open
state. If the ticket is locked and not yet closed, the escalation time is
counted down and the ticket escalates if the time value is zero. If the
state was changed to closed and if the ticket is reopened by a follow-up
request, the escalation process described above restarts.
</para>
</sect1>
</chapter>
|