The overloaded methods of Activate and Valdidate were added in v.1.5 to enable individual license states to not affect the entire software license state.
This is useful in the scenario where software has independent products contained within it.
In this case you may not want to affect the entire license state (activated/deactivated) of the containing software itself.
CpsServiceResult Activate(string email, string transactionId, string fullname, string softwareCode)
CpsServiceResult Validate(string licenseId, string licenseHash)
The Activate method populates the CpsServiceResult return value with a license ID and licence hash value.
These values can be stored within the app and used for the Validate method in the flow of your logic re independent products within your software.
Common ways of storing license state for each product can occur within a database, text files or Settings property of your app.