The imc Learning Suite provides the option to use an event queue to receive real-time information about specific events, enabling integration scenarios with third-party systems. The folowing documentation describes the currently available events. For on-premise installations, the imc Learning Suite package includes an Apache ActiveMQ
Artemis installation (https://activemq.apache.org/components/artemis/documentation/ ). imc hosted cloud installations use the Azure Service Bus as the event queue (https://learn.microsoft.com/en-us/azure/service-bus-messaging/service-bus-messaging-overview)
The messages / events are sent as AMQP messages with the information itself in a JSON body. This JSON body is documented here for the individual messages. The messages / events will be sent to separate topics for the separate / event types, and the following topics are used for the respective event types:
|
Topic name |
Event type |
|
de.imc.ils_login |
Login Events |
|
de.imc.ils_course-changes |
Course Events – Course Changes |
|
de.imc.ils_registrations |
Enrolment Events – all |
|
de.imc.ils_completions |
Enrolment Events – only completions |
|
de.imc.ils_cancellations |
Enrolment Events – only cancellations |
|
de.imc.ils_recert-due-date-changes |
Recertification Due Date Events |
Login Events
The login events are issued whenever a user logs in and also provide the additional information
of the past failed login attempts.
Login attempt (successful)
{
“login”:”imc_super”,
“identifier”:2,
“result”:”success”,
“failedCount”:0,
“timestamp”:1603666208487,
“summary”: “Login attempt for imc_super”
}
Login attempt (failed)
{
“login”:”imc_super”,
“identifier”:2,
“result”:”failed”,
“failedCount”:4,
“timestamp”:1603666208487,
“summary”: “Login attempt for imc_super”
}
|
Parameter |
Explanation |
|
login |
Login name used for the login attempt |
|
identifier |
Internal id of the user |
|
result |
Result of the login attempt, either “success” or “failed” |
|
failedCount |
Number of failed attempts |
|
timestamp |
Timestamp of event sending in seconds since epoch |
|
summary |
Short summary of the event / message |
Course Events
The course events provide information on courses when being created or changed and include basic information of the courses and it’s contents.
Course Change Event
{
„external-id“:“ce77b12d-4119-3390-92e6-000000001517“,
„object-id“:517282,
„component-id“:517281,
„syllabus-link“:“https://achievemore.im-c.com/ilp/pages/course.jsf?courseId=517281&pollingMode=on#!/courseroom/course“,
“title”:”Course Name”,
“description”:”<strong>Course Description</strong></br> Descriptiontext”,
“start-date”:”2021-05-19T00:00:00+0200”,
“end-date”:”2021-05-19T23:59:59+0200”,
“duration-of-use”:”,
“learning-form”:”classroom”,
“lastupdated”:”2020-10-25T23:50:08+0100”,
“lastupdater-external-id”:””,
“lastupdater-person-id”:0,
“metadata”:[],
“contents”:[],
“catalogue-assignment”:[],
“timestamp”:1603666208487,
“summary”:”Update for course 517281 | 517282 | ce77b12d-4119-3390-92e6-000000001517”,
“planning-status”:”CANCELLED”,
"location-name":"Building A Singapore",
"price":2000.00,
"currency":"EUR",
}
Parameter Explanation
|
Parameter |
Explanation |
|
external-id |
External id of the course if available |
|
component-id |
Internal version specific id of the course |
|
object-id |
Internal version independent id of the course |
|
syllabus-link |
Link to the course room / syllabus in the system |
|
title |
Name of the course |
|
description |
Description of the course including html formatting |
|
start-date |
Start date of the course if date dependent |
|
end-date |
End date of the course if date dependent |
|
duration-of-use |
Duration of the course if duration of use |
|
learning-form |
Learning form of the course |
|
lastupdated |
Date of the last update |
|
lastupdater-external-id |
External id of the person that has updated the course last |
|
lastupdater-person-id |
Internal id of the person that has updated the course last |
|
metadata |
Additional metadata for the course (i.e. all metatags) |
|
contents |
List of contents and their metadata (name, link, dates, …) |
|
catalogue-assignment |
List of catalog nodes the course is assigned to |
|
timestamp |
Timestamp of event sending in seconds since epoch |
|
summary |
Short summary of the event / message |
|
planning-status |
planning status of the learner |
|
price |
Price for the enrolment, either course price or cancellation fee |
|
currency |
Currency for the price |
Enrolment Events
Enrolment events are issued for every change to an enrolment, from the initial booking through cancellation or completion. There are three topics available for the enrolment events: one that covers all events, and two that explicitly include cancellations and completions, respectively.
Enrolment Change Event
{
“external-id”:”ce77b12d-fa54-3353-8e4d-000000000213”,
“identifier”:121150,
“course-external-id”:”ce77b12d-4119-3390-92e6-0000000004ac”,
“course-component-id”:555791,
“course-object-id”:555792,
“initial-status”:”BOOKED”,
“status”:”CANCELLED”,
“due-date":"2020-12-31”,
“expiration-of-qualification”: “2021-12-31”,
“price”:0.0,
“currency”:”EUR”,
“orderer”:2,
“cancellation-reason”: 1,
“timestamp”:1603698662089,
“summary”:”Update for registration for course 555791 | 555792 | ce77b12d-4119-3390-92e6-0000000004ac and user 121150 | ce77b12d-fa54-3353-8e4d-000000000213”
"portfolio-id":12345",
“personal-startdate”:”2020-10-25T23:50:08+0100”,
“personal-enddate”:”2020-10-25T23:50:08+0100”,
"client_id":1234",
}
Parameter Explanation
|
Parameter |
Explanation |
|
external-id |
External id of the user if available |
|
identifier |
Internal id of the user |
|
course-external-id |
External id of the course if available |
|
course-component-id |
Internal version specific id of the course |
|
course-object-id |
Internal version independent id of the course |
|
initial-status |
Enrolment status before the change |
|
status |
Enrolment status after the change |
|
due-date |
Due date for the course |
|
expiration-of-qualification |
Value for expiration of qualification given by the course, if set |
|
price |
Price for the enrolment either course price or cancellation fee |
|
currency |
Currency for the price |
|
orderer |
User that triggered the change |
|
cancellation-reason |
ID of the cancellation reason if status is cancelled |
|
timestamp |
Timestamp of event sending in seconds since epoch |
|
summary |
Short summary of the event / message |
|
portfolio ID |
Portfolio ID |
|
personal start date + time |
Learner's’s start date and the timestamp of the course |
|
personal end date + Time |
Learner's’s end date and the timestamp of the course |
|
client id |
client id |
Status Mapping for Enrolments
Statuses for Courses / Learning Paths
|
Status String (Event) |
ID |
Status |
|
NULL |
0 |
No relation |
|
SELECTED |
1 |
On the wish list |
|
ORDERED |
2 |
Requested |
|
AGREED |
3 |
Confirmed |
|
NOTIFIED |
4 |
Notified |
|
REFUSED |
4 |
Not confirmed |
|
WAITING |
6 |
Waiting |
|
CANCELED |
7 |
Cancelled |
|
BOOKED |
8 |
Enrolled |
|
STARTED |
9 |
In progress |
|
FINISHED |
10 |
Concluded |
|
PASSED |
11 |
Passed |
|
FAILED |
12 |
Failed |
|
INDIVIDUAL_LEARNING_PLAN |
17 |
Personal syllabus |
|
RESERVED_ON_PARTICIPANT_LIST |
18 |
Reserved |
|
RESERVED_ON_WAITING_LIST |
19 |
Reserved on waiting list |
|
DELETE |
13 |
Deleted |
Statuses for Course Templates
|
Status String (Event) |
ID |
Status |
|
PREBOOKED |
16 |
Pre-booked |
|
SUCCESSFULLY_COMPLETED |
20 |
Recertification: passed a course |
|
NOT_SUCCESSFULLY_COMPLETED |
21 |
Recertification: failed a course |
Recertification Events
The recertification events provide additional information on the due dates inside a recertification process. Whenever a new due date is calculated inside the recertification process that is not yet attached to a specific course enrolment, an additional event is emitted.
Recertification Due Date Change Event
{
"external-id":"ce77b12d-fa54-3353-8e4d-000000000213",
"identifier":121150,
"template-external-id":"ce77b12d-4119-3390-92e6-0000000004ac",
"template-component-id":555791,
"template-object-id":555792,
"due-date":"2020-12-31",
"timestamp":1603698662089,
"summary":"Update for recertification 555792 | 121150 | 2020-12-31"
}
Parameter Explanation
|
Parameter |
Explanation |
|
external-id |
External id of the user if available |
|
identifier |
Internal id of the user |
|
template-external-id |
External id of the template if available |
|
template-component-id |
Internal version-specific ID of the template |
|
template-object-id |
Internal version independent id of the template |
|
due-date |
Due date for the next recertification. This will be set on completion of one course of the template before the next course is booked in a recertification scenario. It will be cleared when the next course is available, and a user is registered / booked to it. The due date is transferred to the course and is also provided in the registration change event. |
Skill Change Events
The skill change events provide additional information on skill value changes for a user. Whenever a skill's value is recalculated or updated, for example, through an assessment, manual adjustment, or automated process, an event is emitted containing the previous and new value, the scale used (if any), and the allocation and expiration dates for the updated value.
{
"type":"assessment",
"skill-external-id":null,
"timestamp":1784204759500,
"summary":"Thu Jul 16 14:25:59 CEST 2026skill value event type: assessment - for user:951964 and skill:1171706",
"personId":951964,
"clientId":911366,
"skillId":1171706,
"skillName":"#FC #SuperCONF #Accum",
"initialValue":5,
"initialScaleName":null,
"currentValue":10,
"currentScaleName":null,
"allocationDate":"2026-07-16 14:25:33.019",
"expirationDate":null,
"lastUpdaterId":952014,
"lastUpdaterExternalId":null,
}
Parameter Explanation
|
Parameter |
Explanation |
|---|---|
|
type |
Event type identifier for this event category, e.g. |
|
skill-external-id |
External id of the skill if available (mapped from an external system). Null if no external id is configured. |
|
timestamp |
Unix timestamp (milliseconds) of when the event was emitted. |
|
summary |
Human-readable summary string describing the event — includes event type, user, and skill for quick log inspection. |
|
personId |
Internal id of the user whose skill value changed. |
|
clientId |
Internal id of the client (tenant) the user belongs to. |
|
skillId |
Internal id of the skill/competence affected by this change. |
|
skillname |
Display name of the skill. |
|
initialValue
|
The skill value before this change was applied. |
|
initialScaleName
|
Name of the scale used for the initial value (if the skill uses a named scale rather than a numeric-only scale). Null if not applicable. |
|
currentValue |
The new/updated skill value after this change. |
|
currentScaleName |
Name of the scale used for the current value. Null if not applicable. |
|
allocationDate |
Date/time the (new) skill value was allocated to the user. |
|
expirationDate |
Date/time the skill value expires, if the skill has an expiry configured. Null if the value doesn't expire. |
|
lastUpdaterId |
Internal id of the user (or system account) that triggered this skill value update. |
|
lastUpdaterExternalId |
External id of the updater if available. Null if no external id is configured. |
Global Functions and Related Topics