I would adjust your udnp poller to do an enumeration map to map the values to up or down. That will allow you to send the "friendly" status in the alert. However, it looks like this poller does not poll the name of the tunnel.
There are a couple of ways that you can do this:
1) Create a poller that polls the entire VPN connection tunnel. I don't have a fortinet device, so I can't confirm, but it looks like your table will be 1.3.6.1.4.1.12356.101.12.2. I also have never setup up an alert a tabular poller.
2) If you don't have many VPN's that you are trying to monitor, you can set up a poller for both the VPN name and the the vpn status. You'll have to use the results from the table in option 1. Name each poller uniquely for the vpn. Then, for the alert, you poll the status. Then to get the name, you would use the ${SQL: <sql query>} to execute a sql query in the alert provide the correct name. I currently do something similar to this include in my down alerts for a site if the ups for the location went on to battery. I'll include the details of this below. If you would like a little guidance on building the query, I'll try to help if I can find time.
Example of alert: I have custom properties called Location_Name and AlertGroup. My ups device are in an alert group called "UPS". If a ups is not present at the location, I map the value to UPS NOT PRESENT.
${SQL:SELECT TOP 1 CustomPollerAssignmentView.CurrentValue FROM (CustomPollerStatus INNER JOIN CustomPollerAssignmentView ON (CustomPollerStatus.CustomPollerAssignmentID = CustomPollerAssignmentView.CustomPollerAssignmentID)) INNER JOIN Nodes ON (CustomPollerAssignmentView.NodeID = Nodes.NodeID) Where (Location_Name='${Location_Name}' and AlertGroup='UPS') AND CustomPollerAssignmentView.CustomPollerName='upsOutputSource' Union Select 'NO UPS PRESENT' Where NOT Exists (SELECT 1 FROM (CustomPollerStatus INNER JOIN CustomPollerAssignmentView ON (CustomPollerStatus.CustomPollerAssignmentID = CustomPollerAssignmentView.CustomPollerAssignmentID)) INNER JOIN Nodes ON (CustomPollerAssignmentView.NodeID = Nodes.NodeID) Where (Location_Name='${Location_Name}' and AlertGroup='UPS') AND CustomPollerAssignmentView.CustomPollerName='upsOutputSource')}
You'll see that this is two separate queries joined by the union. The 2nd query is nearly identical the first and is used to return NO UPS PRESENT is there are no rows returned in the query.
One of the item to note. There cannot be any carriage returns in your query due to the way alert manager parsers the query.
Hope this helps.