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.