Agree with others that your purpose is better served by knowing your data. Given what you have revealed, you can simply describe the four events and lay them out with xyseries. index=application_na sourcetype=my_logs:hec appl="*" message="***"
| eval event = case(match(message, "Received request"), "DoPayment start",
match(message, "Sending result"), "DoPayment end",
match(message, "Sending request"), "OtherApp start",
match(message, "Received result"), "OtherApp end")
| eval _time = strftime(_time, "%F %T.%3N")
| xyseries interactionid event _time Obviously regex's used in the match functions are just to illustrate what you can do. But xyseries can achieve what you want without complex transformations. Using your mock data, the output is interactionid DoPayment end DoPaymet start OtherApp end OtherApp start 12345 2025-06-26 07:55:58.017 2025-06-26 07:55:56.317 2025-06-26 07:55:57.512 2025-06-26 07:55:56.717 Here is an emulation you can play with and compare with real data | makeresults format=csv data="interactionid,_time,message
12345,2025-06-26 07:55:56.317,TimeMarker: WebService: Received request. (DoPayment - ID:1721 Amount:16 Acc:1234)
12345,2025-06-26 07:55:56.717,OtherApp: -> Sending request with timeout value: 15
12345,2025-06-26 07:55:57.512,TimeMarker: OtherApp: Received result from OtherApp (SALE - ID:1721 Amount:16.00 Acc:1234)
12345,2025-06-26 07:55:58.017,TimeMarker: WebService: Sending result @20234ms. (DoPayment - ID:1721 Amount:16 Acc:1234)"
| eval _time = strptime(_time, "%F %T.%N")
| sort - _time
``` above emulates
index=application_na sourcetype=my_logs:hec appl="*" message="***"
```
... View more