Hello my friend!
In your process, you have 2 events, message intermediate throw event, and an end event, and this is incorrect… you should only have one arrow (flow) leaving each task.
What you can do is connect this task to a gateway to decide which path to take based on a condition.
Another thing, why do you have a send task, and then a message intermediate throw event, if they both basically serve the same thing?
If your idea is to just send a message to inform the other flow, you can use just one of these for each occasion, and it will make your process much more beautiful, correct and easier to understand.
In your timer, you set that you want to “Repeat” 2 times, but you created an interruptive timer, that is, when your instance reaches that point, the timer would count down 5 seconds and your instance would leave that point…
An interruptive timer would make your instance leave that location.
A non-interruptive timer would keep its instance there, but would create a new token for this instance to perform other tasks, which will follow the designated flow. So you should think about this when modeling.
Another situation… if you click on your timer, you will see that it is not connected to the task…
Because when events are connected to the edge of the task they become “Boundary events”, and this is the main reason why your timer does not work.
Below I will leave a print of your flow with some improvements for you to base your knowledge on.
I hope I helped, and if you have any questions, just call!
William Robert Alves