Sprache wechseln auf deutsch
Znuny Professional Services

The ((OTRS)) Community Edition Fork with long-term Support (LTS)

Houskeeping explained: Cron Task Management

Default Znuny Cron Maintenance Tasks

Cron Maintenance Tasks carry the weight of system health and relevant maintenance tasks. By stating and modifying these settings according to your needs, tasks such as unlocking tickets after a timeout can be handled seamlessly, enabling smooth collaboration and improved customer service.

Cron Tasks in Znuny

The following is a complete list of modules used in Znuny, triggered based on a cron scheduler service. This blog will focus on one, as the settings are very similar in most cases. Being one of the most commonly changed, for article, we will focus on: 

Daemon::SchedulerCronTaskManager::Task###TicketUnlockTimeout

Daemon::SchedulerCronTaskManager::Task###CalendarTicketCreate
Daemon::SchedulerCronTaskManager::Task###CalendarTicketCreateCleanup
Daemon::SchedulerCronTaskManager::Task###CommunicationLogDelete
Daemon::SchedulerCronTaskManager::Task###ConfigurationDeploymentCleanup
Daemon::SchedulerCronTaskManager::Task###CoreCacheCleanup
Daemon::SchedulerCronTaskManager::Task###DynamicFieldLDAPBuildDisplayValueCache
Daemon::SchedulerCronTaskManager::Task###ES-IndexQueueDataProcess
Daemon::SchedulerCronTaskManager::Task###EscalationCheck
Daemon::SchedulerCronTaskManager::Task###GenerateDashboardStats
Daemon::SchedulerCronTaskManager::Task###GenericInterfaceDebugLogCleanup
Daemon::SchedulerCronTaskManager::Task###ITSMChangesCheck
Daemon::SchedulerCronTaskManager::Task###LoaderCacheDelete
Daemon::SchedulerCronTaskManager::Task###MailAccountFetch
Daemon::SchedulerCronTaskManager::Task###MailQueueSend
Daemon::SchedulerCronTaskManager::Task###RebuildEscalationIndex
Daemon::SchedulerCronTaskManager::Task###ReindexSMIMECertificates
Daemon::SchedulerCronTaskManager::Task###RenewCustomerSMIMECertificates
Daemon::SchedulerCronTaskManager::Task###SessionDeleteExpired
Daemon::SchedulerCronTaskManager::Task###SpoolMailsReprocess
Daemon::SchedulerCronTaskManager::Task###SupportDataCollectAsynchronous
Daemon::SchedulerCronTaskManager::Task###TicketAcceleratorRebuild
Daemon::SchedulerCronTaskManager::Task###TicketDraftDeleteExpired
Daemon::SchedulerCronTaskManager::Task###TicketNumberCounterCleanup
Daemon::SchedulerCronTaskManager::Task###TicketPendingCheck
Daemon::SchedulerCronTaskManager::Task###TicketUnlockTimeout
Daemon::SchedulerCronTaskManager::Task###WebUploadCacheCleanup

The Importance of Ticket Locking

Ticket locking is a critical mechanism in ticketing systems like Znuny. It prevents multiple agents from simultaneously working on the same ticket, leading to conflicting updates and inefficiencies. Organizations can maintain workflow integrity and provide better customer service by ensuring that a ticket is locked while an agent is actively working on it. For more insights into how ticket locking enhances efficiency and prevents overlaps, refer to Znuny's blog on the topic: Boosting Efficiency and Preventing Overlaps.

Understanding and Configuring Daemon::SchedulerCronTaskManager::Task###TicketUnlockTimeout

Ensuring tickets are unlocked promptly after their designated timeout period is crucial for workflow efficiency. This information is foundational for understanding how the task Daemon::SchedulerCronTaskManager::Task###TicketUnlockTimeout operates, and it has been moved to highlight its importance at the beginning of this blog.


Configuration Breakdown

YAML Configuration:

Setting: Daemon::SchedulerCronTaskManager::Task###TicketUnlockTimeout
---
Function: Execute
MaximumParallelInstances: '1'
Module: Kernel::System::Console::Command::Maint::Ticket::UnlockTimeout
Params: []
Schedule: '*/5 * * * *'
TaskName: TicketUnlockTimeout
  1. Function: Execute defines this task as executing a specific module to perform the ticket unlock operation.
  2. MaximumParallelInstances: 1 ensures that only one instance of this task runs at a time to avoid conflicting operations.
  3. Module: Specifies the module handling the ticket unlock operation: Kernel::System::Console::Command::Maint::Ticket::UnlockTimeout.
  4. Params: No additional parameters are passed.
  5. Schedule: */5 * * * * ensures the task runs every 5 minutes.
  6. TaskName: A descriptive name for the task: TicketUnlockTimeout.

Unlocking Process Walkthrough

Here is a simulated timeline to understand how the unlocking process works:

Event Time
Queue unlock time 15 minutes
Ticket locked 14:16
Daemon runs 14:15
Daemon runs 14:30
Unlock timeout reached 14:31
Daemon runs 14:35
Daemon completes unlock 14:35

Analysis of the Timeline

  1. Ticket Locking:

    • A ticket is locked at 14:16. The lock timeout is configured for 15 minutes. For detailed information about ticket locking in Znuny, refer to the official documentation.
  2. Daemon Schedule:

    • The daemon is scheduled to run every 5 minutes. At 14:15 and 14:30, it executes but does not unlock the ticket, as the unlock timeout has not yet been reached.
  3. Unlock Timeout:

    • The unlock timeout is reached at 14:31. The ticket is now eligible to be unlocked.
  4. Daemon Unlocks Ticket:

    • The next daemon run at 14:35 processes the unlock operation. At this point, the ticket will be made available to other users.

Key Considerations

  1. Scheduling:

    • The task schedule (*/5 * * * *) ensures that unlocks are handled promptly after the timeout is reached, but there can be a delay depending on the timing of the next daemon run.
  2. Task Efficiency:

    • Configuring MaximumParallelInstances to 1 avoids conflicts but ensures only one task runs simultaneously. For high-volume environments, careful tuning may be required.
  3. Unlock Timeout vs. Daemon Frequency:

    • The unlock timeout (15 minutes in this example) and the daemon frequency (5 minutes) should be configured to balance promptness and system load.
  4. Monitoring and Debugging:

    • Log outputs from the daemon task module (Kernel::System::Console::Command::Maint::Ticket::UnlockTimeout) provide visibility into task execution and any errors encountered in the var/log/Daemon directory.
    • Run bin/znuny.Console.pl, Maint::Daemon::Summary to see a summary of all tasks and identify errors.

Conclusion

The SchedulerCronTaskManager is vital for system health and maintenance and for ensuring the system responds as expected. Administrators can ensure smooth operations and reduce bottlenecks by understanding the configuration and operational timeline. Regularly monitor the daemon tasks and adjust the schedule and timeout settings to suit your organization's needs for optimal performance.