Thank you for your posting. You have two general options when you need to store many custom field values. Both involve the creation of a custom message type as you state.
The first approach is to create custom fields in the message, and store the values in the fields. This is purely a native GroupWise Object API technique, and is beyond the scope of what I can describe here. Nonetheless, have a look at: http://developer.novell.com/ndk/doc/gwobjapi/gwobjenu/data/hrgfssmm.html, specifically the Fields property of the message object. In a nutshell, you need to create a field definition associated with an account if it doesn’t exist, then create one or more fields associated with the message via the Fields property. Your applet reads and writes values to these fields.
The second approach, and probably the one I would recommend, is to use XML to store the field values, then store the XML in the body text of the custom message. This has the advantage of not having to define potentially large numbers of field in your GroupWise system, and is more easily extensible. When the message is opened by the recipient, your applet parses the XML contained in the body of the message and populates the custom form. You can find an example of creating a message containing XML data in the example applet called ‘TUT333 – MIIRalert.vbf’.
I hope this information is sufficient to get you started. Feel free to post any specific questions you may have.