Best way to add Custom Data to Analytic Event

I’m developing an application using Milestone AI Bridge, and I’m experiencing performance issues with my current implementation. I’d like to get guidance on the best way to structure custom analytics data.

Current Implementation

I’m sending Analytics Events to AI Bridge using this JSON structure:

{
 
    "@context": "http://www.insights.data/2021/06/analytics-event.jsonld",
    "id": "1DDBEAA1-4EDB-4D30-AAF1-9E35ADABCFE8",
    "type": "AnalyticsEvent",
    "name": "LicenseDetected",
    "class": "LicenseDetected",
    "timestamp": "2025-11-09T09:10:18.184321Z",
    "fromSource": {
        "type": "Reference",
        "uuid": "e30a31a5-68b3-493d-ae8a-a5378fbbf91c"
    },
    "involvedObject": [{
        "type": "Object",
        "class": "Vehicle/Car/Ford/Mondeo",
        "confidence": 0.8,
        "readout": "G:SUL (12345) T:TAXI C:B S-125 L-120 V-PS",
        "description": "{\"violations\":{\"driver-seatbelt\": false,\"passenger-seatbelt\": false, \"uses-phone\": false,\"child-in-front-seat\": false},\"speed-violate\": false,\"speed\": \"20 KM/H\"}",
        "color": "Red",
        "hasOutline": { /* polygon data */ }
    }]
}

The Problem

Currently, I’m storing structured data in two ways:

  • readout field: Contains encoded string like “G:SUL (123243) T:TAXI C:B S-125 L-120 V-PS” where:
    • G: City
    • T: Vehicle Type
    • C: Color
    • S: Speed
    • L: Legal Speed Limit
    • V: Plate Source
  • description field: Contains JSON string with violation data

The issue: When searching through thousands of records in our plugin, we have to parse these strings on every search operation, causing significant performance delays.

Questions

  • Is there a better way to send structured custom data
  • Can I define custom fields in the Analytics Event schema
  • What’s the recommended approach for complex LPR data that needs to be:
    • Displayed in XProtect Smart Client
    • Searchable by individual fields (governorate, vehicle type, speed, etc.)
    • Efficiently queried across thousands of records
  • I found a field in the “Central.Event_Active” table named ObjectData, what is this field , it is always empty.

Hello Abaas,

Unfortunately, at this moment, there is not a more performant approach to run a search on events and custom data and you are doing it the right way.

Regards,

Fer

Hello Fernando,

Okay but when checking the Event_Active table there is a field named ObjectData which has no limit which will be useful for storing custom data, it value for all events is null and i couldn’t figure what to send in the ai bridge json to get stored in this field and when i checked the code, you are saying the following

  /// <summary>
  /// Additional data associated with the object. It can contain any string, for example a JSON object with multiple parameters. The string size limit is set to the maximum of the SQL Server.
  /// </summary>
  [DataMember(EmitDefaultValue = false, Order = 15)]
  public string Data
  {
    get => this.DataField;
    set => this.DataField = value;
  }

@Fernando Guzman​ I will appreciate it if you can help with that

Hello Abaas,

Unfortunately, AI Bridge does not write any data on that field you are mentioning.

Regards,

Fer