Here it is in 7.1.
I made a few improvements to the code to point out a few things.
First, I moved all the button terminals into the Event Structure cases that they are configured against. This is the normal way of doing this. Going with this setup and changing the buttons mechanical action to "Latch when Released", the button will always be read once, and only once each time it is clicked and it will be automatically reset to the False state after the block diagram reads it. With the button outside the loop, it never really gets read (although the Event Structure does grab it's value and pass it) so the button can never get reset using the latching actions. This allows you to get rid of the Property Nodes you are using to reset them to False.
I also got rid of all but two of the local variables (now just used to initialize the front panel items) by passing the values of the Message List and the CAN handle through shift registers. This is a much more efficient way to pass data around. It makes a little difference in a small application like this. But in a large application, the more efficient you make it, the better off you are.
There's a little more optimizing you could do in the CAN Read in the array building for the Time Stamps and ID's. If you're interested, let me know.
Ed