I've been designing a licensing system for small software deliverables.
Nice opportunity to show you the free and rather pleasant on-line flowcharting tool, Gliffy, in action.
Why is this process so complicated?
(1) We have a client-side click-once application as well as a server-side web application
(2) The client-side application connects to the server via a Windows Communications Framework (WCF) component that is installed into our web site.
(3) We are integrating with Paypal and GoogleCheckout
(4) We have 2 kinds of trial license and there two kinds of expired trial license.
(5) We are providing the user with an alternative way of getting their license key if they don't want to let the application connect to the internet. (We could come back to this part as a phase 2.)
The flowcharts below can be seen full page at: Licensing Process for small software deliverables and Server-side function to used to return the license key and Checking, repairing and updating the license (client side procedure)
This is the working draft of my licensing process:
This is a bit more detail on a specific function within the process ie. the Server-side function to used to return the license key
Checking, repairing and updating the license (client side procedure):