Thanks for your answer.
The documenation only say it "will automatically snapshot any running VMware virtual machines before taking a scheduled or manual ZFS snapshot". This is not explicit.
Anyway my main concern is about having to perform multiples "vmware snapshot" on the same dataset for several ESXi hosts.
Is it working and safe ?
The documentation is accurate. The point is that you want esxi to snapshot the VM (and thereby preserve it with it's virtual memory intact) before freenas snaps the dataset. As I read it, that quote is accurate per vmware-snapshot task.
If you are using several ESXi hosts you should be using vcenter (per the documentation). I'm not sure freenas allows configuring a vmware snapshot for a given dataset to connect to multiple ESXi servers. Which is why there is a requirement to use vcenter, which would do the communication to all of the ESXi servers if needed. But lets say it does. i.e you configure multiple vmware-snapshots, one to each esxi server. And on each of those you list a datastore that is hosted on the freenas dataset (which is the same for all of them). I'm not sure how freenas treats this case. I can imagine a couple ways freenas might do this: (1) run all vmware-snapshot jobs, then snap the dataset, or (2) run a vmware-snapshot job and immediately snap the dataset. (2) would end up with multiple freenas snapshots of the dataset in quick succession. I have no idea if this would work as I've not tested it. But as I read the quote above, I suspect (2) is how the system would approach it.
I can tell you that using vcenter as the host in the vmware-snapshot task does work with multiple esxi hosts and it creates a single freenas snapshot of the target dataset.
Also, note that any VM with passthrough will not snapshot. Just a reminder.