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.

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.htmlExample 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:
User import: Creates and updates users from a source system.
Identifier: UserImport
Timing: 0 0 1 * * ? (1am daily)
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)
Skill expiry: Important for customers using the Skills add-on as skill gaps often determine training.
Identifier: SkillExpiration
Timing: 0 0 3 * * ? (3am daily)
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)
Automatic course creation: Used to automatically create courses for online recertification training.
Identifier: AutomaticCourseCreation
Timing: 0 0 5 * * ? (5am daily)
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)
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)
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.
|
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:
|
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..