Runtime events

The Operational Decision Manager runtime emits events that can be used to monitor applications and diagnose issues.

A runtime event sends information on a running application to a monitoring system. The following list shows common events:

Contention events
These events collect information about monitor lock contentions.
Garbage collection events
These events collect information pertaining to garbage collection. They help in diagnostics and debugging, including determining how many times garbage collection was performed, and how much memory was freed during garbage collection.
Exception events
These runtime events capture information about exceptions that are thrown.
Interop events
These runtime events capture information about Common Intermediate Language (CIL) stub generation.
Loader and binder events
These events collect information that are related to loading and unloading assemblies and modules.
Method events
These events collect information that is specific to methods. The payload of these events is required for symbol resolution. In addition, these events provide helpful information such as the number of times a method was called.
Thread events
These events collect information about worker and I/O threads.
Type events
These events collect information about the type system.
Tiered compilation events
These events collect information about tiered compilation.

Examples

The following list shows examples of some of the events, depending on how you set the ruleset properties.

Minimal event
Do as follows:
  1. Set the event.emitter.enabled property to true.
  2. Set the other emitter-related properties to false, or just set the event.emitter.trace property to false.
You get a minimal event that contains the execution duration:
{
"business-events-envelope-version": "1.0.1",
"business-events-extension-version": "odm/1.0.0",
"category": "odm:Execution",
"id": "string",
"timestamp": "2025-06-05T17:27:14.096+02:00",
"type": "odm:Execution:EXECUTION_SUCCESS",
"source": {
"type": "ruleset",
"id": "/test_deployment/1.0/loan_validation_production/1.0"
},
"data": { "odm": { "total-duration-ms": 5 } }
}
Event with decision trace
Do as follows:
  1. Set the event.emitter.enabled property to true.
  2. If necessary, set the event.emitter.trace property to true. (By default, the it is already active.)
  3. Set the other emitter-related properties to false.
You get an event that contains the decision trace, which lists executed ruleflow tasks and fired rules:
{
"business-events-envelope-version": "1.0.1",
"business-events-extension-version": "odm/1.0.0",
"category": "odm:Execution",
"id": "string",
"timestamp": "2025-06-05T17:21:58.901+02:00",
"type": "odm:Execution:EXECUTION_SUCCESS",
"source": {
"type": "ruleset",
"id": "/test_deployment/1.0/loan_validation_production/1.0"
},
"data": {
"odm": {
"total-duration-ms": 18,
"decision-events": [
{
"type": "task",
"end-date": 1749136918918,
"start-date": 1749136918906,
"decision-events": [
{
"type": "task",
"end-date": 1749136918907,
"start-date": 1749136918907,
"name": "loanvalidation>initResult"
},
{
"type": "task",
"end-date": 1749136918912,
"start-date": 1749136918911,
"name": "loanvalidation>validation"
},
{
"type": "task",
"end-date": 1749136918913,
"start-date": 1749136918913,
"name": "loanvalidation>computation"
},
{
"type": "task",
"end-date": 1749136918914,
"start-date": 1749136918914,
"name": "loanvalidation>eligibility"
},
{
"type": "task",
"end-date": 1749136918917,
"start-date": 1749136918915,
"decision-events": [
{ "type": "rule", "name": "insurance.defaultInsurance" }
],
"name": "loanvalidation>insurance"
}
],
"name": "loanvalidation"
}
]
}
}
}
Event with input and/or output parameters
Do as follows:
  1. Set the event.emitter.enabled property to true.
  2. Set the event.emitter.input property to true and/or set the event.emitter.output property to true.
You get an event that contains the input and/or output parameters, and the decision trace if you set the event.emitter.trace property to true (or do not set it at all because it is active by default). For example, if you set all emitter-related properties to true, you get the most complete event possible:
{
"business-events-envelope-version": "1.0.1",
"business-events-extension-version": "odm/1.0.0",
"category": "odm:Execution",
"id": "string",
"timestamp": "2025-06-05T17:24:46.220+02:00",
"type": "odm:Execution:EXECUTION_SUCCESS",
"source": {
"type": "ruleset",
"id": "/test_deployment/1.0/loan_validation_production/1.0"
},
"data": {
"odm": {
"total-duration-ms": 7,
"input-parameters": {
"loan": {
"numberOfMonthlyPayments": 3,
"startDate": 1010156982000,
"amount": 3,
"loanToValue": 1.051732e7,
"duration": 1
},
"borrower": {
"firstName": "string",
"lastName": "string",
"birth": 1275634317000,
"yearlyIncome": 3,
"zipCode": "string",
"creditScore": 3,
"spouse": {
"firstName": null,
"lastName": null,
"birth": 1749137086219,
"yearlyIncome": 0,
"zipCode": null,
"creditScore": 0,
"spouse": null,
"latestBankruptcy": { "date": null, "chapter": 0, "reason": null },
"ssn": {
"areaNumber": "",
"groupCode": "",
"serialNumber": "",
"digits": 0,
"fullNumber": "--"
},
"birthDate": 1749137086219,
"ssncode": "--",
"latestBankruptcyDate": null,
"latestBankruptcyReason": null,
"latestBankruptcyChapter": 0
},
"latestBankruptcy": {
"date": 1046583680000,
"chapter": 3,
"reason": "string"
},
"ssn": {
"areaNumber": "string",
"groupCode": "string",
"serialNumber": "string",
"digits": 18,
"fullNumber": "string-string-string"
},
"birthDate": 1275634317000,
"ssncode": "string-string-string",
"latestBankruptcyDate": 1046583680000,
"latestBankruptcyReason": "string",
"latestBankruptcyChapter": 3
}
},
"output-parameters": {
"report": {
"borrower": {
"firstName": "string",
"lastName": "string",
"birth": 1275634317000,
"yearlyIncome": 3,
"zipCode": "string",
"creditScore": 3,
"spouse": {
"firstName": null,
"lastName": null,
"birth": 1749137086219,
"yearlyIncome": 0,
"zipCode": null,
"creditScore": 0,
"spouse": null,
"latestBankruptcy": {
"date": null,
"chapter": 0,
"reason": null
},
"ssn": {
"areaNumber": "",
"groupCode": "",
"serialNumber": "",
"digits": 0,
"fullNumber": "--"
},
"birthDate": 1749137086219,
"ssncode": "--",
"latestBankruptcyDate": null,
"latestBankruptcyReason": null,
"latestBankruptcyChapter": 0
},
"latestBankruptcy": {
"date": 1046583680000,
"chapter": 3,
"reason": "string"
},
"ssn": {
"areaNumber": "string",
"groupCode": "string",
"serialNumber": "string",
"digits": 18,
"fullNumber": "string-string-string"
},
"birthDate": 1275634317000,
"ssncode": "string-string-string",
"latestBankruptcyDate": 1046583680000,
"latestBankruptcyReason": "string",
"latestBankruptcyChapter": 3
},
"loan": {
"numberOfMonthlyPayments": 3,
"startDate": 1010156982000,
"amount": 3,
"loanToValue": 1.051732e7,
"duration": 1
},
"validData": true,
"insuranceRequired": true,
"insuranceRate": 0.04,
"approved": true,
"messages": [],
"yearlyInterestRate": 0.0,
"monthlyRepayment": 0.0,
"insurance": "4%",
"message": "",
"yearlyRepayment": 0.0
}
},
"decision-events": [
{
"type": "task",
"end-date": 1749137086227,
"start-date": 1749137086223,
"decision-events": [
{
"type": "task",
"end-date": 1749137086223,
"start-date": 1749137086223,
"name": "loanvalidation>initResult"
},
{
"type": "task",
"end-date": 1749137086224,
"start-date": 1749137086223,
"name": "loanvalidation>validation"
},
{
"type": "task",
"end-date": 1749137086224,
"start-date": 1749137086224,
"name": "loanvalidation>computation"
},
{
"type": "task",
"end-date": 1749137086225,
"start-date": 1749137086225,
"name": "loanvalidation>eligibility"
},
{
"type": "task",
"end-date": 1749137086226,
"start-date": 1749137086226,
"decision-events": [
{ "type": "rule", "name": "insurance.defaultInsurance" }
],
"name": "loanvalidation>insurance"
}
],
"name": "loanvalidation"
}
]
}
}
}