Based on my findings, the issue was with your decoder. It was not decoding anything.
How the new rule engine works is:
Based on your decoders, the logs are normalized and saved in the wazuh-events-* indices.
Next, based on your rule and detector, it triggers an alert and saves it in the wazuh-findings-* indices.
The primary issue was that your decoder was not working. So no logs were saved to wazuh-events-* indices.

For your log. Add these two additional decoders to your space.
core-wazuh-message
---
name: "decoder/core-wazuh-message-custom/0"
metadata:
author: "Sakib"
date: "2026-06-04T13:15:31Z"
description: "Base decoder to process Wazuh message format, parses location part\
\ and enriches the events that comes from a Wazuh agent with the host information."
documentation: ""
modified: "2026-06-04T13:15:56Z"
references:
- "https://documentation.wazuh.com/"
supports: []
title: "Wazuh message decoder"
normalize:
- map:
- _tmp_json: "parse_json($event.original)"
enabled: true
id: "dff1f343-d262-4ad1-87af-ba4f5213e057"syslog Header
---
name: "decoder/syslog/0"
metadata:
author: "Sakib"
date: "2026-06-04T13:32:35Z"
description: "Syslog header"
documentation: ""
modified: "2026-06-04T13:36:01Z"
references:
- "https://www.ietf.org/rfc/rfc3164.txt"
- "https://www.ietf.org/rfc/rfc5424.txt"
supports: []
title: "Syslog Decoder event"
parents:
- "decoder/core-wazuh-message-custom/0"
parse|event.original:
- "<event.start/Jun 14 15:16:01> <_tmp.hostname/fqdn> <_TAG/alphanumeric/->[<process.pid>]:<~/ignore/\
\ ><message>"
- "<event.start/Jun 14 15:16:01> <_tmp.hostname/fqdn> <_TAG/alphanumeric/->:<~/ignore/\
\ ><message>"
- "<event.start/2018-08-14T14:30:02.203151+02:00> <_tmp.hostname/fqdn> <_TAG/alphanumeric/->[<process.pid>]:\
\ <message>"
- "<event.start/2018-08-14T14:30:02.203151+02:00> <_tmp.hostname/fqdn> <_TAG/alphanumeric/->:\
\ <message>"
- "<event.start/ISO8601Z> <_tmp.hostname/fqdn> <_TAG/alphanumeric/->: <message>"
- "<event.start/SYSLOG> <_tmp.hostname/fqdn><?~/ignore/ >(?: )<message>"
- "<event.start/%Y %b %d %T> <_timezone> <_tmp.hostname/fqdn> <_tmp.host_ip> <_TAG/alphanumeric/->[<process.pid>]:<~/ignore/\
\ ><message>"
- "<event.start/%Y %b %d %T> <_tmp.hostname/fqdn> <_tmp.host_ip> <_TAG/alphanumeric/->[<process.pid>]:<~/ignore/\
\ ><message>"
normalize:
- map:
- event.kind: "event"
- check:
- _tmp.hostname: "exists()"
map:
- host.hostname: "$_tmp.hostname"
- related.hosts: "array_append($host.hostname)"
- check:
- _TAG: "exists()"
map:
- process.name: "rename($_TAG)"
- check:
- _tmp.host_ip: "exists()"
map:
- host.ip: "array_append($_tmp.host_ip)"
- check:
- _tmp: "exists()"
map:
- _tmp: "delete()"
enabled: true
id: "c30ebc9a-782f-4854-9729-190c5469b8c1"And update your existing decoder.
---
name: "decoder/sshd-custom/0"
metadata:
title: "SSH Failed Login Decoder"
description: "Decoder para SSH login fallido"
author: "Alfon Laboratorio"
date: "2026-06-04T13:02:25Z"
modified: "2026-06-04T14:04:38Z"
references:
- " "
supports: []
parents:
- "decoder/syslog/0"
enabled: true
definitions:
isAuthProcess: "$process.name == sshd OR $process.name == sudo OR $process.name\
\ == groupadd OR $process.name == useradd OR $process.name == groupdel OR $process.name\
\ == groupmod OR $process.name == userdel OR $process.name == usermod OR $process.name\
\ == CRON"
normalize:
- map:
- event.dataset: "system-auth"
- event.kind: "event"
- event.outcome: "success"
- check:
- process.name: "sshd"
parse|message:
- "<_system.auth.ssh.event> <_system.auth.ssh.method> for (?invalid user )<user.name>\
\ from <source.ip> port <source.port> ssh2(?:<~>)"
- "<_system.auth.ssh.event> user <user.name> from <source.ip>(? port <source.port>)"
- "Did not receive identification string from <source.ip>"
- "subsystem request for <_system.auth.ssh.subsystem> by user <user.name>"
- "<_system.auth.ssh.session.action>: Too many authentication <_system.auth.ssh.event>\
\ for <user.name> [preauth]"
- "<user.name> [<~>][<~>]: <_system.auth.ssh.event>: <_system.auth.ssh.session.process_id>\
\ tty<~/literal/\\/>?<~/literal/s><_system.process.tty.char_device.major>"
- "<_system.auth.ssh.event>: Read from socket failed: Connection reset by peer [preauth]"
- "Received <_system.auth.ssh.event> from <source.ip>: <~>: [<~>]"
- check: "$_system.auth.ssh.event == Accepted OR $_system.auth.ssh.event == USER_PROCESS"
map:
- event.action: "logged-in"
- event.category: "array_append(authentication, session)"
- event.outcome: "success"
- event.type: "array_append(info)"
id: "653ec149-b9b0-4c9e-8ebf-4fbd300b902e"Now make the core-wazuh-message as the root decoder from Space


Next, promote the decoders to custom.
Next, make sure to configure a detector for your rule.

These is my test result.

Let me know if this works for you.