Detection EngineeringStandard Event Schema

Standard Event Schema

Every log that UTMStack processes ends up as an event with the same set of field names, whatever product sent it. This shared layout is the standard event schema. Pipelines map vendor fields into it, and rules, dashboards, Log Explorer and compliance checks read from it, so a rule written for origin.ip works for every source that fills origin.ip.

Event structure

An event has a set of top-level fields and three areas:

  • log: vendor fields that have no standard place.

  • origin: the side that started the activity (who or what acted).

  • target: the side the activity was aimed at.

origin and target share the same list of fields.

Top-level fields

FieldTypeDescription
idTextUnique identifier of the event (a UUID).
@timestampDate and timeThe time carried by the incoming log, in RFC 3339 format (for example 2026-11-11T09:30:00Z), in UTC. No pipeline step can change it.
deviceTimeDate and timeThe time recorded by the source device. If no pipeline sets it, the engine copies @timestamp into it.
dataTypeTextThe kind of log, for example linux, wineventlog or firewall-fortigate-traffic. It decides which pipelines and rules run.
dataSourceTextThe device or integration that sent the log, for example the host name of a machine with an agent.
tenantIdTextThe tenant the event belongs to.
tenantNameTextThe tenant's name. The engine fills it in.
actionTextThe activity, for example a login, a file change or a connection.
actionResultTextThe outcome: success, failed or denied. See below.
protocolTextNetwork protocol, for example tcp, udp or http.
connectionStatusTextState of the connection, for example established or closed.
statusCodeWhole numberA numeric status, for example HTTP 404.
severityTextThe importance the source gave the event. UTMStack does not enforce a list of values.
rawTextThe original log text. Read-only: no step can change or delete it.
logObjectVendor fields with no standard place.
origin, targetObjectThe two sides of the activity. See below.
errorsList of textMessages from pipeline steps that failed on this event.
complianceMapRegulation names, each with a list of values.

Time fields

  • @timestamp comes from the sender. The engine refuses a log whose time is missing or not in RFC 3339 format.

  • deviceTime is stored as a date and time with millisecond precision. If a pipeline writes a value the database cannot read as a date, the database refuses the event. Always convert a vendor time with the reformat step before you write it to deviceTime. See Pipeline File Format and Step Reference.

actionResult values

Write actionResult as exactly one of these values, or leave it empty:

ValueUse it when
successThe action was completed.
failedThe action was attempted and did not work, for example a wrong password.
deniedThe action was refused by a policy, a firewall or a permission check.

Do not use other spellings such as failure, fail or blocked: rules compare these values as text. The threat intelligence check also reads this field: it skips events whose actionResult is failed, denied or blocked, and checks every other event, including events with no value. See Threat Intelligence: How Indicator Alerts Work.

dataSource and assets

If dataSource equals the host name or IP address of one of your tenant's assets, the engine replaces it with the asset's name.

The log area

log holds every vendor field that has no standard place, for example log.eventCode for a Windows event id or log.message for a syslog message. The json, kv and xml parsing steps write everything they extract under log..

UTMStack v12 uses log.* for these fields. Some UTMStack v11.3 filters used event.* instead; v12 does not.

The type of a log field can differ from one event to the next: a value can be a number in one event and text in another.

origin and target

Both sides support the same fields. All fields are text unless the table says otherwise.

Network

FieldDescription
ipIPv4 or IPv6 address.
hostHost name.
domainDomain name or fully qualified domain name.
portNetwork port. Whole number.
macMAC address.
urlFull URL.
cidrNetwork range in CIDR notation, for example 10.0.0.0/8.
bytesSent, bytesReceivedAmount of data transferred. Number.
packagesSent, packagesReceivedNumber of network packets. Whole number.
geolocationLocation of the IP address. See Geolocation.

Fingerprints and certificates

FieldDescription
certificateFingerprintFingerprint of an SSL/TLS certificate.
ja3FingerprintTLS client fingerprint.
jarmFingerprintTLS server fingerprint.
sshBanner, sshFingerprintSSH service identification.

Identity, web and email

FieldDescription
userUser name or account.
groupSecurity group or role.
cookieWeb session cookie.
jabberIdChat (XMPP) identifier.
email, emailAddressEmail address.
emailSubject, emailBodyEmail content.
emailDisplayName, emailXMailerSender name and mail client.
emailThreadIndexPosition of the message in a conversation.
dkim, dkimSignatureEmail authentication data.

WHOIS

FieldDescription
whoisRegistrantThe person or organisation that registered the domain.
whoisRegistrarThe company that manages the domain registration.

Processes and files

FieldDescription
processName of the program.
processStateState of the process.
commandFull command line.
windowsServiceNameInternal name of a Windows service.
windowsServiceDisplayNameDisplay name of a Windows service.
windowsScheduledTaskName of a Windows scheduled task.
fileFile name or reference.
filenameBase file name.
pathFull folder path of the file.
sizeInBytesFile size. Stored as text.
mimeTypeFile type (MIME type).

Hashes and encodings

FieldDescription
hashGeneric hash.
md5, sha1, sha224, sha256Specific hashes.
sha384, sha512, sha512224, sha512256SHA-2 variants.
sha3224, sha3256, sha3384, sha3512SHA-3 variants.
authentihash, cdhashCode-signing hashes (Windows and Apple).
hex, base64Encoded representations.

System, vulnerabilities and malware

FieldDescription
operatingSystemOperating system name and version.
chromeExtensionBrowser extension id.
mobileAppIdMobile application id.
cpeCommon Platform Enumeration name.
cveCommon Vulnerabilities and Exposures id.
malware, malwareFamilyName or family of the detected malware.
malwareTypeType of malware, for example ransomware.
pgpPublicKey, pgpPrivateKeyPGP key material.

Resources

FieldDescription
connectionsNumber of active connections. Whole number.
usedCpuPercentProcessor use in percent. Whole number.
usedMemPercentMemory use in percent. Whole number.
totalCpuUnitsNumber of processor units. Whole number.
totalMemTotal memory in bytes. Whole number.
disksList of disks, each with name, totalSpace (whole number) and usedPercent (whole number).

Geolocation

origin.geolocation and target.geolocation are filled by the geolocation step of a pipeline. See Geolocation Enrichment.

FieldDescription
country, countryCodeCountry name and ISO code.
cityCity name.
latitude, longitudeCoordinates. Numbers.
asn, asoAutonomous System Number and the organisation that owns it.
accuracyPart of the schema, but the UTMStack v12 geolocation step does not fill it.

What is kept and what is dropped

When the last pipeline step has run, the engine turns the result into an event. Four rules decide what survives. They apply silently, so check your field names carefully.

RuleWhat happensExample
Field names are cleanedEvery character other than letters, digits, dots and underscores is removed from a field name.log.event-type becomes log.eventtype. log.event_type is kept as it is.
Unknown names are droppedA field outside log whose name is not in the schema is removed, with no error.origin.hostname is dropped; the schema field is origin.host.
A wrong type drops the eventIf a schema field holds a value of the wrong type, the whole event is discarded and the engine logs "failed to convert log to event".A word in origin.port. Use the cast step to convert ports to int.
raw and @timestamp are protectedNo step can change or delete them.A delete step on raw fails with "field cannot be a reserved field" in errors, and raw stays.

An unreadable deviceTime also loses the event: the database refuses it (see Time fields).

How events are stored

Events are stored in the ClickHouse table logs. Knowing the columns helps when you write SQL in Log Explorer or compliance checks:

ColumnNotes
tenantId, @timestamp, dataType, dataSource, id, deviceTime, tenantNameOne column each.
protocol, connectionStatus, action, actionResult, severityOne column each.
statusCodeStored as text.
errorsList of text.
origin, target, compliance, logJSON columns. log keeps up to 512 typed paths.
rawThe original text.

See Log Explorer SQL Mode.

Good practice for mapping

  1. Map every address. Put IP addresses in origin.ip and target.ip, host names in origin.host and target.host, and user names in origin.user and target.user. Rules, threat intelligence and dashboards read these fields.

  2. Use the exact actionResult values. Write success, failed or denied, nothing else.

  3. Convert times and numbers. Use reformat before writing deviceTime, and cast to int before writing ports or counters.

  4. Keep vendor detail under log. Only move a value out of log when a standard field fits it.

  5. Use compliance to tag events with regulation names and values.

  6. Rely on raw. The original text is always kept, so you can check your parsing against it.