One solution to the connectivity issue is to install a VPN on all of the external devices and communicate with the OSSEC server using the VPN. This is what we do for our clients and it works without any issues. With regard to storing events, there is an older Windows event collector called Snare that had functionality to store alerts when the device was not connected to the network. You can download the source code for this tool (called Snare Core) to see what they are doing from this link:
https://sourceforge.net/projects/snare/files/Snare%20for%20Windows/4.0.2.0/
Just a note that Snare is not the same as OSSEC, and does not have anywhere near the functionality of OSSEC (it is just an event collector with relay capability). It also has issues on Windows 2012 Servers, and the community version has not been supported since 2013. However, if you want some ideas on how OSSEC could be modified to store alert data, this is good reference example. You will need to be a C/C++ programmer to understand the code. I have had this as a back burner project to look at it for some time. If I ever get around to doing this, I will post it back to the OSSEC project. We used Snare in the early version of our Red Gravity cybersecurity tool, but abandoned it for OSSEC once we realized that OSSEC had greater stability, was better supported, and ran on all platforms without issues. The Snare code is also useful if you want to see how to set audit policy, group policy, and modify the Windows registry in C++. Hope this helps.
Best Regards,
Dave Stoddard
Network Alarm Corporation
12401 Prosperity Drive, Zone 4
Silver Spring, MD 20904-1694
dgs at networkalarmcorp dot com