In the .xml file, change <params><param> to <vmconfig><fields><fieldset><field> (for backwards compatibility, you will also have to keep the <params> to be used by VM2 -- VM3 will ignore the <params> and only use the <config> or <vmconfig> fields, while VM2 will use only the <params> section, so you can even have different configuration options in VM2 and VM3):

In the .xml file, use <vmconfig> rather than Joomla's <config>. If present, <vmconfig> will be used by VM3 for the shipment/payment methods and the custom field configuration in VM, while <config> can/will be used in Joomla's plugin configuration for plugin-wide configuration (e.g. API keys or update keys, which are not specific to one shipment/payment method or customfield).If <vmconfig> is not present, VM3 will use <config> as a fallback. However, these params are also shown in Joomla's plugin configuration.

If you use <vmconfig>, it is not neccessary to add the vmjpluginwarning field.

All elements (child classes of the JElement baseclass) located in the elements/ subdirectory need to be converted to fields (child classes of JFormField) in the fields/subdirectory:

Input controls (on the product page to let the customer enter specific values, like a custom text) have a different form control name customProductData instead of customPlugin (typically this needs to be changed in the template called by renderByLayout, e.g. in /plugins/vmcustom/yourplugin/yourplugin/tmpl/default.php) and have a different array structure: