Initially, a new user account must be established for the customer. Once the account has been set up, the customer decides which features and options the site should incorporate: for example, how much disk space, FTP capability, creation of virtual directories, and whether or not databases are required. You can also build control panels or dashboard applications that let customers create and manage these features.
While there are a number of ways that these capabilities can be implemented into the Control Panel, Provisioning Sample in C# describes how to implement the provisioning aspect of these features through managed code. The article describes how to provision a new user account, create content storage, create an application pool, create a site, create a binding, creat a root application, creat a virtual directory, and create an FTP site.