The UDP Event enricher is a service that runs in a Kubernetes cluster and processes all authenticated, valid Caliper event data. The Event enricher adds Context store-sourced data associated with an event, but that is not included in an event payload, to the internal message the carries the event payload. This enables forms of downstream processing not otherwise possible with the native data alone.
The UDP event enricher service is automatically installed and configured during the UDP installation process. The configuration includes automatically establishing the networking and user access necessary for the enricher to access Context store data.
UDP ID enrichment
The primary form of event enrichment today is to add the UDP IDs for a Person and Course offering associated with their correlates in the event to the internal message carrying that event payload.
For example, suppose a Caliper event from Learning tool A hits the UDP Caliper endpoint and is authenticated and validated. The event is given to the UDP Event enricher, which extracts from the event payload the native Person identifier of "456" from Learning tool A. The Enricher looks up the UDP Person ID for identifier 456 for Learning tool A in a cache of the UDP Person keymap, identifying it as "1111". The UDP Enricher then adds this UDP Person ID to the message carrying the event
A depiction of simple enrichment. The UDP ID for the Person is added to the message accompanying the Caliper event payload.
The advantage of enriching events with their UDP IDs is that it enables the clean, consistent downstream association of Behavior data with Context data. By sharing common identifies, both classes of data can be joined, analyzed, and reported in an easy, consistent fashion.
At present, the UDP will always seek to enrich every Caliper event with a UDP Person ID and UDP Course offering ID.
In theory, events can be enriched with any data sourced in the Context data. For example, in addition to enriching an event with a UDP Person ID, it may also be useful to enrichment the event with the Person first_name and last_name elements. These elements are "labels" associated with the UDP identifiers.
Enriching events with labels can be useful for various kinds of use-cases. For example, if you're computing metrics in real-time using event stream data, it may be required to use data elements that are available in the Context store but not in the Behavioral data. Suppose that you're trying to compute, in real-time, the score a student achieved on an assignment as a percentage but you only have the score in the event data and not the total number of possible points that can be earned. The "points possible" for the assignment may be in the Context store, in which case it must be fetched in order to compute the percentage.
Configurable, arbitrary label enrichment is not yet supported by the UDP. At present, label enrichment is hard-coded into a few processes designed to support data marts.