Skip to main content
Question

security_result issue

  • December 8, 2025
  • 2 replies
  • 22 views

lukeeeen


I am attempting to parse the following log by using UDM mapping but I am facing the following error:

generic::unknown: pipeline.ParseLogEntry failed: LOG_PARSING_CBN_ERROR: "generic::invalid_argument: failed to convert raw output to events: failed to convert raw message 0: field \"idm\": index 0: recursive rawDataToProto failed: field \"read_only_udm\": index 0: recursive rawDataToProto failed: field \"security_result\": index 0: recursive rawDataToProto failed: field \"action\": failed to make strategy: received non-slice or non-array raw output for repeated field"

 

This is the log piece:

{

"threatType": "General Malware",
"status": "Blocked"

}


and this is the parsing code:

json {
source => "message"
array_function => "split_columns"
on_error => "error_not_json"
}

if [status] == "Allowed" {
mutate { replace => { "security_result.action" => "ALLOW" } }

} else if [status] == "Blocked" {
mutate { replace => { "security_result.action" => "BLOCK" } }
}

if [threatType] == "Phishing" {
mutate { replace => { "security_result.category" => "PHISHING" } }

} else if [threatType] == "General Malware" {
mutate { replace => { "security_result.category" => "SOFTWARE_MALICIOUS" } }
}

if [security_result] != "" {
mutate {
merge => { "event.idm.read_only_udm.security_result" => "security_result" } }
}

Does anyone have any suggestions for resolving this issue?

2 replies

ErikaB
Community Manager
Forum|alt.badge.img+10
  • Community Manager
  • December 9, 2025

Hi ​@lukeeeen 

 

This is a great question, and we've actually created a detailed resource that specifically addresses this topic in depth. To give you the most comprehensive guidance, I recommend checking out our Adoption Guides, specifically Part 2 as it contains several sections for repeated fields like security_result. 

 

Hope this helps! 


JSpoorSonic
Forum|alt.badge.img+9
  • Bronze 3
  • December 11, 2025

Try something like this:

You replace your action to a variable.action (e.g. result_action.action, then you merge it to security_result.action, which you then merge to the event.

 

if ![no_action_found] {
      if [allowed] == "1" {
        mutate {replace => { "result_action" => "ALLOW" }}
      }  else if [allowed] == "0" {
         mutate {replace => { "result_action" => "BLOCK" }}
      } else { 
        mutate {replace => { "result_action" => "UNKNOWN_ACTION" }} 
      }    
      mutate {merge => {"security_result.action" => "result_action"}}      
      if ![no_rule_info] {
        mutate {
          replace => {"security_result.rule_name" => "%{rule_info}"}
        }
      }
      mutate {merge => {"event1.idm.read_only_udm.security_result" => "security_result"}}