Skip to main content
Skip table of contents

Scheduled 'Cron' Jobs Overview

Deep Dive: Overview of Scheduled Jobs and their Configuration

Scheduled ‘Cron’ Jobs Overview

Crons are processing jobs that can be scheduled to run automatically at desired times or manually triggered to perform background software tasks. The use of crons is very common in web-based applications and the imc Learning Suite is no exception with a large amount of jobs to process on a regular basis.

Benefits of Scheduled Jobs

Scheduling jobs to process automatically ensures:

  • Jobs can consistently be ran in the background,

  • Processing of related jobs occurs in a logical order,

  • Completion at desired intervals, and

  • Completion of larger jobs occurs outside of peak usage period t reduce system loads.

Where are crons configured?

The crons within the imc Learning Suite were historically managed by imc consultants in coded configuration files, but in imc Learning Suite version 14 all crons were made available to configure direct in the GUI in the 'Scheduled jobs' menu. This means that imc customers are now able to see the active crons, view the scheduled timings, make timing changes and even activate additional crons.

View of the Scheduled jobs function displaying configured jobs.

Note: If the 'Scheduled jobs' menu is not available it can be configured via the 'Navigation' and would normally be created in the 'Settings > System platform management' folder with the identifier 'm_jobs'.

How are crons configured?

During an imc Learning Suite implementation project the imc project consultant would normally activate all required cron jobs at recommended time intervals. The timing of jobs is important to ensures various related jobs process in a logical order. As new cron jobs are often introduced with innovation packs there is the need to occasionally update the Scheduled jobs. When creating or editing a cron job the following fields are available to populate:

  • Name: Name to be given to the cron job.

  • Planned task: Ticking the checkbox indicates the cron is to be processed automatically based on the cron expression value.

    • Cron expression: Enable when Planned task is ticked. The value must be a valid Quartz cron format.

  • Client ID: For planned tasks a client can be selected. Not all crons though support client specific processing.

  • Client selection for manual job execution: Where a cron is created that is not a Planned task, this checkbox when ticked enables the administrator to select a client when manually processing the cron.

  • Execute on start: Defines if the referenced task will be executed when starting the application server, or only based on the parameter cronExpression.

  • Execute on each node: Defines if the task has to be executed on each node in an application cluster. For example, if a job needs to modify local filesystem on each node.

  • Processor name: This where the desired cron is selected from the list.

Schedule_job_configuration_view.png

Cron job configuration view.

In terms of the Cron expression the imc Learning Suite uses a 'Quartz' cron format that allows scheduling by seconds, minutes, hours, day of month, month, days of week and year. Some common cron expressions with described times and intervals are below:

Expression

Meaning

0 */5 * ? * *

Every 5 minutes

0 */30 * ? * *

Every 30 minutes

0 0 6 * * ?

Every day at 6am

0 0 23 * * ?

Every day at 11pm

0 0 */3 ? * *

Every three hours

0 0 12 ? * MON-FRI

Every Weekday at noon

Further information on forming a quartz cron can be found at

https://www.freeformatter.com/cron-expression-generator-quartz.html

Example of Key Jobs and Sequencing

Wie bereits erwähnt, sind das Timing und die Abfolge der geplanten Aufgaben sehr wichtig. Zum Beispiel: Importieren von Benutzern vor der Zielgruppenzuweisung, gefolgt von automatischer Kurseinschreibung, dann Berichtsabonnements und schließlich Benachrichtigungen kurz vor den Arbeitszeiten. Diese Reihenfolge würde die Zeitspanne minimieren, in der neue oder aktualisierte Benutzer automatisch für obligatorische Schulungen eingeschrieben werden können. Darüber hinaus ist es wichtig zu vermeiden, dass verschiedene Cron-Jobs gleichzeitig ausgeführt werden, da dies zu einer hohen Datenbankbelastung führen kann, insbesondere in Spitzenzeiten.

Nachfolgend finden Sie ein Beispiel für die Abfolge üblicher geplanter Aufträge, die in Workflows für die Schulung zur Einhaltung von Vorschriften erforderlich sind:

  1. User import: Creates and updates users from a source system.

    • Identifier: UserImport

    • Timing: 0 0 1 * * ? (1am daily)

  2. XML Group import: Creates and updates Business Unit group structure as well as assignments from a source system. Ideally after user import.

    • Identifier: XMLGroupImport

    • Timing: 0 0 2 * * ? (2am daily)

  3. Skill expiry: Important for customers using the Skills add-on as skill gaps often determine training.

    • Identifier: SkillExpiration

    • Timing: 0 0 3 * * ? (3am daily)

  4. Target group person assignment: Updates assignment, or removal, of users to rule-based target groups. These are heavily used in compliance workflows and best before automatic enrolment job.

    • Identifier: TargetGroupPersonAssignment

    • Timing: 0 0 4 * * ? (4am daily)

  5. Automatic course creation: Used to automatically create courses for online recertification training.

    • Identifier: AutomaticCourseCreation

    • Timing: 0 0 5 * * ? (5am daily)

  6. Participant automatic enrolment: Important after user import and target group person assignment to reduce time of new users being enrolled to training courses or learning paths.

    • Identifier: ParticipantAutomaticRegistration

    • Timing: 0 0 6 * * ? (6am daily)

  7. OS Report subscription: Generating subscribed reports after user imports and training assignments gives administrators or supervisors the most current data.

    • Identifier: OSReportSubscription

    • Timing: 0 0 7 * * ? (7am daily)

  8. Notifications: Used to send time-based notifications such as training reminders, component scheduling, encroaching due dates, and skill expiries. Best before after other process and before general working day hours.

    • Identifier: Notification

    • Timing: 0 0 8 * * ? (8am daily)

Note: There are many other related Cron jobs available that compliment training workflows and general system updates.

List of available cron jobs (as of IP22)

The below list is of imc Learning Suite 14 innovation pack 22.

Processor identifier

Description

AdobeConnectMeetingTemplateImportJob

Job used for the optional Adobe Connect virtual classroom connector to check if there are new virtual classroom templates available to the configured LMS user in Adobe. The virtual classroom templates are selectable in the LMS when creating an 'Adobe Connect' media item. This is a small job that can be set to process periodically or manually.  

AiccMonitor

Adjusts the entries in the database tables u_monitor_aicc and u_monitor_aicc_content. These tables are used by the "AICC Communication Monitoring" tool for the error analysis. On the basis of the attribute Maximum monitor entries' in the 'Configuration > AICC' menu, this job deletes the oldest entries.

AsynchUpdater

This job is used for the optional Vitero connector. When this job is ran it will change the passwords of all the Vitero users in the system database that exist on Vitero side. It will change all passwords to new randomly generated ones.

AutomaticCourseCreation

Required for the recertification workflow to automatically create courses from course templates that have the 'Automatic course creation' field ticked. The cron job checks course templates to identify if the 'First course creation date' plus the 'Course creation interval in days' value matches the current date; if so a new course will be created from that course template. 

AvetmissEvaluationCsvImport

AVETMISS is a reporting standard used by Australian registered training organisations (RTOs). This job is to enable migration of historical data to allow reporting AVETMISS data retrospectively.

AvetmissStartEndDateCsvImport

AVETMISS is a reporting standard used by Australian registered training organisations (RTOs). This job is to enable migration of historical data to allow reporting AVETMISS data retrospectively.

BuddyListHisotry

The buddy list job writes the number of logged-in ILS users into the database. In previous Learning Suite versions (CLIX12 and earlier) this related to a now obsolete function called the buddy list that enabled viewing which users were online.

CancelInactiveUsersJob

Job related to meta tag 'Automatic cancellation of inactive users' (ID 11813). The job processes courses with the meta tag ticked to remove 'Passive' or 'Inactive' participants that do not have a status of 'Passed', 'Failed' or 'Cancelled'. This job is a low load and can be run daily or periodically.

CancelUsersOnCancelledCoursesForReplicationProcess

This job is a clean up job to cancel participants who are not completed (Passed or Failed) yet and are not cancelled on a course where the planning status of the course was set to 'Cancelled'.

CertificationReset

Job related to the optional 'Certification' add-on module used for tracking progress towards accredited certifications (E.g. IDD, CPD/CPE). Checks certification period ends and update/reset certification status and compute new period once time is reached. Therefore; the job resets the number of points/hours achieved for a recertification to 0 after the specified date has been reached. For customers using certification this job can be run daily 001**?

CheckSolrAvailability

Search indexes are lost during a deployment and it is not an option for them to be available in the next half or full hour. This job was therefore created to be executed at five-minute intervals. After a new ILS start, it is only executed once to ensure a quick rebuild of possibly lost search indexes during a deployment. 00/5***?

CleanUpMailingNotificationMonitor

Deletes internal emails and notifications which are older than the stated number (in days). The after number of days can be defined in the attribute deletionAfterNumberOfDays.

CleanUpPreviewEntries

Job relates to the course preview function for administrators, tutors and supervisors. When activated the job deletes all the data from the preview table with the lastupdated older than 24h to ensure more accurate access data. The job will run in the background and an entry will be visible in the log file, with the start-end date & time. Recommended to run daily.

CloudSynchronization

This job is for having 'System texts' changes reflected on all nodes of a multi-node environment. Without this job wording changes are only refreshed on the node the wording is changed. The parameter 'Execute on each node' is to be ticked and the job can run every 15 minutes as the wording on ILP has additional caching for maximum 10 minutes.

ComponentProgressUpdateJob

The job ComponentProgressUpdateJob needs to be created and then run to bring the progress percentage of courses and learning paths in Learning Analytics. It needs to be run only once per system and does not need to be done per release. For releases before 14.19.0, this job is called CourseProgressUpdateJob.

ContentAutoUpdate

Job used with the 'Automatic update' meta tag settings between courses and course templates. This job is recommended to run quite frequently or at least daily to ensure content updated in course templates is pushed through to current courses with updates enabled.

CoursePreparation

Sets courses and learning paths to the planning status “fixed” according to the meta tag “Automatically set to ‘fixed’".

CoursePreviewCleanUp

A scheduled job can be created by selecting the new job processor "CoursePreviewCleanUpJob". It can be run manually or created as a planned task, using a cron expression( for e.g. I created a test one with this cron expression 0 0 0 ? * 1L *). When executed, entries in the "component_preview_log" table with "lastupdated" older than 24h are deleted.

CourseProgressUpdateJob (pre IP19)

The job ComponentProgressUpdateJob needs to be created and then run to bring the progress percentage of courses and learning paths in Learning Analytics. It needs to be run only once per system and does not need to be done per release. For releases before 14.19.0, this job is called CourseProgressUpdateJob.

CreateOrUpdateShopifyCatalogItems

Job relates to the optional Shopify payment gateway connector and is used to automatically create or update existing items in the LMS catalogue when there have been updates in Shopify. Recommended to run regularly for customers using the Shopify connector. 

CreateSiteMaps

Job used when 'Site map' settings are activated in the LMS to allow search engines to search through content; this is mainly for customers wanting to provide content to the general public. A site map essentially creates a map of specific LMS pages for search engines to search through content, E.g. catalogues, and index the context. The site map can be enabled globally in the 'Configuration > Client' menu or individually per client in the 'Clients' function. For customers wanting to enable site maps the job is recommended to run periodically on a weekly basis.

CreateSolrIndex

Performs a complete rebuild of the activated search indexes; For example, updating the front end view of the catalogue structure and content assignment. In most cases, it is configured to run every half hour or hour and is not recommended to run more frequently. More frequent execution places a greater load on the database.

DefaultTempDirDeleteIlsEntries

Job to delete the files in the temporary directory of the Java process, E.g. this could be C:\tomcat\tempClean temporary files from the application server.

DeleteUsersJob

Job relates to Privacy Settings defined in the 'Client > Access and security' tab. 

If the 'Delay the execution of deletion request by' is configured with a value > 0 and a user of this client requests deletion or the admin triggers the deletion for this user, the user will be marked for deletion in today + <period> months.

Once the deletion date is set, you can no longer re-trigger the deletion, the authentication status is set to passive and finally the admin can no longer change the authentication status (e.g. from passive to active again).

Once the job is executed, users with deletion date in the past will be finally removed (either anonymized or really removed).

ExpiredCoursesToCompleted

The job is set for date dependent courses where the end date is in the past and the current planning status is “Released” or “Fixed”. In addition, the job sets the planning status of the object to “Completed”.

GenericContentImporterMediaUpdate

This job checks for updates to ensure that the metadata is up-to-date. If updates are available, a new version of the media object is created.

GenericContentImporterPortfolioUpdate

This job checks for user completion updates to ensure that the completion statuses of imported media from 3rd party providers are up-to-date.

GoToUpdateRefreshTokenJob

Job that relates to customers using the option GoTo-Meeting connector for virtual classroom integration. As refresh tokens are only valid for 30 days and it might be the case that on customer systems none use GoTo-Meeting or GoTo-Webinar for longer times, an ILS Cron Job needs to be configured to keep the refreshToken replaced with a valid one. The recommendation is to have the refresh job running every hour.

GroupImport

Method which initiates the LDAP-based group import if this has been activated.

JobSchedulerDuplicateCheck

The job looks if another job was started a second time while the first was still running and deletes this second job.

License

Job to check available licenses to send alerts when active license numbers are exceeded. The recipient of the notification is defined globally in the 'Configuration > Mailing' function or client specific in the 'Client > Email' tab.

MailMonitorStaggering

For this job, a defined number of emails (registration messages, notifications, logic emails) identified to be forwarded externally are sent for each cycle. The forwarding depends on the attribute mailMonitorStaggeringAmount.

  • If attribute is not defined, only a log message will be written

  • If attribute is set to the value 0, all entries which still need to be forwarded will be sent

  • If the attribute is set to the value >0, the oldest x entries to be forwarded will be sent for each job execution.


Only one attempt will be made to send an email. If this does not work, it will be listed as an error in the monitor (corresponds to the behaviour with no staggering).

Notification

Job that triggers all time based notification to send; For example, reminder notifications x days before or after a training.

OIDCAuthNonceCleanerJob

Job that deletes nonce entries of successful OIDC authentications in the LMS database. When an OIDC authentication request is made a nonce is recorded in the LMS database and is basically a unique transaction ID between the two systems.

OrganizeQTITaskFolder

This job optimises the storage of files used in test questions (performance  improvement).

OSReportSubscription

Job used to generate all subscribed reports and email links for subscribers to access on their preferred days of the week. This job is recommended to run daily given reports can be subscribed to each day of the week. The job can also be quite large so best to execute in early hours of the morning before working times when no other jobs are running.

OSReportSubscriptionFileDeletion

Job to delete reports generated by the report subscription function which reduces the disc space used on the content server. Given the report subscription reports generate at least once per week, this job could be set to run weekly.

ParticipantAutomaticRegistration

Automatically registers users for courses or course templates on the basis of their group membership or job profile.

ParticipantAutomaticStatusChangejob

Job related to course template recertification workflow to automatically update the status for the enrolled course participants when the due date has been passed by a definable number of days. This relates to recertification checkbox 'Automatic status change after due date' and integer field 'Days for status change after due date'.

PasswordChangeExpiryCheck

Check for the password validity period and prompt user to change their password on the next login when time is reached. This is an important job for customers using local login with security requirement to change passwords on a regular basis. Recommended to run the job daily and can be performed at any time.

PayPalStatusUpdate

Provides the current payment status of Paypal transactions. Job runs each few minutes to check for PayPal payment responses if not received immediately.

PrerequisiteCheck

Job that checks and updates if enrolled users who initially did not meet prerequisite rules have done so before the due date. There is a prerequisite status column in the 'Participant administration' function that displays the check result. 

PrerequisitesOverdueCancelJob

Job to check which users enrolled to a course did not achieve minimum prerequisites by the due date and cancels their enrolment. This job relates to meta tags and settings:

  • 'Automatic cancellation based on not fulfilled prerequisites' (ID 11801) being ticked,

  • 'Due date for the fulfilment of the mandatory prerequisites' (ID 12703) being equal or greater than current date, and

  • 'Prerequisites must have been met at the time of enrolment' (ID 11838) being unticked.

ProgrammeCurriculumLevelStatus

This job handles the case the setup of a learning path was changed (new content / updated learning logic) and thus the level of the participants needs to be updated. Without this job the status would only be updated, when a learner or tutors open up the syllabus of a learner and until then the reporting would be not correct. The cron job ensures this update takes place without a manual interaction and reporting is correct.

ProgrammeCurriculumLevelStatusUpdateJob

The cron job that runs the learning path syllabus learning logic, recertification logic to update the learning path status parameters for the user.

ProgrammeCurriculumScheduling

A cron-job runs every defined period to execute the scheduling of learning path syllabus content. This allows course elements to be added or removed automaticatically and then saved on the syllabus directly. The scheduled dates will be removed from "Display element from" column or "Display element till date" column if the corresponding action to it has been conducted by the cron job.

ProgrammeRecertificationAsignment

Job to perform scheduling and checks to see whether the start, due or end date (for all defined recertification sections) matches the actual date.

ProgramRecertificationCompletionJob

Cronjob is required in order to fix a side-effect of an implementation that allows administrators to add the same recertification content to different recertification periods. Since all content was previously done in a past period, the learner is not expected to do the same content again, but the recertification folder status (and completion percentage) is only updated when one of it's children (either courses or templates) changes it's status to passed. Since the learner does no further action in the current period (knowing that the content was already completed in a past period), the certification status for the current period will still be Uncertified as this reflects a progress of 0% on the current period - as there was no chance to re-compute the progress by completing at least one course/template that belongs to that particular period/folder.

ProgramRecertificationStatusJob

Job that updates the database table program_logic_status when the recertification was Concluded:Passed and now the new period is available → if the component is still achieved it is marked as certified.

ProgramStatusUpdateForLearners

Cron job that updates the user status on the learning paths for the users who have completed the content of the learning path or have fulfilled the learning logic outside the learning path context.

The changes to the user portfolio are logged in a logging table called program_status_update_log.

This chronjob only affects the user status once. If the status is reset manually via the ILS interface, the user status of the program that has already been processed is not changed again by the chronjob.

Function: Changes the status of a user from BOOKED to COMPLETED if the program should have been terminated due to the progress or the learning logic in relation to the meta tag: 11814 (learning path completion by).

PushNotificationScheduler

Job to send notifications to the mobile Apps. The push notifications also need to be enabled in the 'Configuration' manager and will require a server key to be setup by imc Hosting team (for imc 'Hosted' solutions).

RamJobSchedulerJob

This job is used to clean the database where incorrect SCORM 2004 runtime data was saved. This can occur when there are errors in the SCORM variables cmi.interactions.n.correct_responses.m.pattern and cmi.interactions.n.learner_response when they belong to an interaction of type "choice" or "matching". The execution of the database cleaning is time intensive, so this job is only activated on systems where the error actually occurs.

RefreshJob

Controls the refreshed registration of participants on refresher courses.

RemoveOutdatedReportsJob

Job related to 'Report subscription' function for the automatic removal of reports that were generated as part of a report subscription to be sent by e-mail. Deletion of subscription and export reports that are 10 days and older old from data folder. This job can run daily.

ReportCallCleanUp

TBD

Scorm2004ChoiceInteractionResponseDbCleaner

This job is used to clean the database where incorrect SCORM 2004 runtime data was saved. This can occur when there are errors in the SCORM variables cmi.interactions.n.correct_responses.m.pattern and cmi.interactions.n.learner_response when they belong to an interaction of type "choice" or "matching". The execution of the database cleaning is time intensive, so this job is only activated on systems where the error actually occurs.

ScormGlobalStatusSynchronizer

This cron job will update participant SCORM WBT status on all enrolled courses if the meta tag “Synchronize SCORM WBT status” is enabled on the SCORM WBT.

ScormWbtExternalMigration

A job used for bulk migration of SCORM packages in content migration projects. This is a job intended for use by the imc Technical Services team, normally during initial migration projects.

SendCompletedCoursesToEqsJob

Job for the Equivalencies function that sends course completion details to the Equivalencies server. With equivalencies the completion of one course can automatically complete another course that is considered an 'Equivalent'.

ShopifyProcessWebhookJob

Job to process the Shopify webhook needs to be configured to run (at each minute). This will be configured by the imc Technical Services team for customers who order the Shopify connector license.

SkillExpiration

Job to detect skills held by users with expiry dates greater than the current date to update the achieved skill levels via the Snowflake integration. On iLS side there is no change on skill values.

SkillTermination

Job to updates the skill values and display of users for skills which expire automatically.

SolrIndexActualization

Indexes updated for delta SOLR reports; basically replicates database tables for more efficient report generation.

SolrIndexFullBuild

Performs a complete rebuilt for all active report indexes which are currently not available meaning which have never been built before or for which a new full build was initiated via Solr navigation as described above. There are some technical differences to search indexes and problems with the Quartz Scheduler which require a separate job. It is especially important to configure the schedule interval large enough to be sure the job is completed before it runs again. So it should be configured to run just once a day. 

StdCourseImportJob

Job used to process a csv file to import Courses based on existing Course Templates. Normally utilised by the imc Business Consulting team during implementation projects.

StdCourseSubscriptionImportJob

Job used to process an uploaded csv file to assign users to imported courses for training history migrations; normally with a Passed status and completion date. The import is utilised by the imc Business Consulting team during implementation projects.

StdCourseTemplateImportJob

Job used to process a csv file to import Course Templates derived from standard Course Types. Normally utilised by the imc Business Consulting team during implementation projects to import training records from external systems.

StorageUpdater

No normal update classes can be used as the storage service is not started when the normal update classes are executed. This CronJob checks for updates every 5 minutes. On systems that have no storage integrated at all, the job runs, but the registered classes are never executed.

TargetGroupPersonAssignment

Automatically allocates users to target groups and executes the rules and conditions of the target groups.

TeamExercisePublishCorrectionJob

Publishes corrections on the defined date.

TempFilesDelete

Job to delete temporary files which are created as a result of uploads, for example. The temporary files are deleted in the data/temp and <s3bucket>/temp. 0111**?

TincanAuthTokenDeletion

Job related to Tin Can xAPI media items. When active this job deletes old authentication tokens for xAPI WBTs in the database. Only needed for customers using the Tin Can xAPI media. 0201**?

TrackingCalculation

Used to compress the data written during system tracking. This enables a more efficient execution of our tracking reports. Data summarization job for reports e.g. "Registration" report. 011*?

TranslationImport

Configures the automatic import of translation files (translation workflow), which are saved in a defined location on the content server. This location is configured in the 'Configuration > Languages' function.

UpdatePersonSearches

Updates the user search configuration (required in cluster operation).

UserImport

Job to determine at which time the user import job runs for CSV imports where files have been placed on the content server. This can job can produce heavy database loads and is recommended to run prior to jobs including XMLGroupImport, TargetGroupPersonAssignment and ParticipantAutomaticRegistration.

UserTerminate

Checks whether the termination date of a user has been reached. Job to automatically to check which users are to be automatically made Passive x days after enrolment or last login which is configured in the 'Client' function and personal attribute 'DEACTIVATIONMODE_ID'.

VirtualClassroomParticipantAttendance

Job to obtain the attendance information of participants, including "start date/time" and "end date/time" in virtual classroom sessions.

WaitingListCancellationJob

Job relates to the meta tag 'Automatic cancellation from the waiting list on the start date' (ID 11816) equaling 'Yes'. The job checks if there are still users on course waiting lists after the start date and removes them. This job can be run daily or periodically.

WebexParticipantAttendance

Sync Webex starts, end and duration.

WhatsNew

Identify content that is newly assigned to courses and catalogues. Sends the “What’s New” notification. 

XMLGroupImport

Initiates all configured XML group imports which have an active scheduler configuration.

Note: Cron jobs are highly important to maximise system efficiencies. If more information is required on a non-mentioned cron, or if guidance is required, please raise an imc Support Desk ticket..


📋 Related articles

Scheduled Jobs

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.