Provisioning extensions can be used to build provisioning module extensions and expose that functionality via the provisioning APIs. The user written extensions can also work with the templates and extends the template processing capabilities in three ways.
Extensions can support special processing of template data as part of every client interaction, i.e., sending and initializing template to client, initializing the provisioning activities after user input and sending the results back to the client. This includes bypassing some or all the template-based provisioning functions on the server.
Extensions can implement special parameters in the template, which will be processed by the application extensions.
Extensions can implement special configuration or other tags, so that these tags are processed by the application extensions at any of the stages of processing. For example, all the network configuration can be done in the application extension by bypassing the regular configuration and processing the new tags defined for this purpose in the XML templates.
For more details refer to the section Writing Provisioning Extensions.