SOME OF THIS NEEDS TO GO TO PRODUCT UPDATE
Throughout its life, a product will be moved through a number of versions. The version number for a product is read from the product descriptor of the product node, which is in turn derived from the version number of the product node.
If, after a subscriber has installed a product, a later version becomes available, they are offered an "update" option when looking at the subscription in the product store. If they select this option, the product link on the subscription is updated to the latest version, which may have a knock-on effect on permissions.
As well as updating the subscription, the user can also update individual installs (these are listed on the subscription together with the product version number that applied when the install was created or last updated). This is achieved by running the update script on the product. If no specific update script is defined, Default Update Script can be used which simply updates all node versions in the install using a NodeExport service call with the the submit option to upate all node versions (a more up-to-date version of this is required for the latest calling conventions). Complicated products may required more complicated update scripts, including logic to update through intermediate versions by calling previous update scripts.
Additional checks are made to determine whether draft versions of the product should be made available to the user, based on the draftPermissions property in the product descriptor.