CORBA and XML can be achieved using XML templates and these mechanisms. What is more, this is possible without writing custom filters and rules. In other cases, custom filters and rules may be needed to transform the data and perhaps gather sufficient data. In more elaborate provisioning scenarios, this procedure will be repeated several times within a single client application. For example, bringing up a device may mean configuring each interface using a service template. We now describe the different components mentioned above. 6.9.4 Provisioning Templates The provisioning template is a parameterised XML file and its DTD is an extension of the configuration DTDs so that the configuration module can be leveraged directly. The purpose of the extensions is to support the parameterised forms for inventory, network and user input, and flexible updates of the network inventory database. The provisioning-specific tags are: Template: Wraps one or more configuration tasks in a template that includes tags to support user input and inventory updates. The goal is to allow almost any data in the task to be parameterised and displayed in forms for user input. Similarly, any of the data can be used to update the inventory database. Stage: There should be at least one stage tag in the template to be provisioned, otherwise an exception to the template is raised. The tag controls the workflow of data gathered during template processing. Inventory Input: This is to gather inventory data before initializing the template for the client. Network Element Input: This is to gather network data directly from the network elements before initializing the template for the client. The sub-tags correspond exactly to the configuration tasks, except those that are strictly for uploading data. Form: This tag allows the user to specify forms for user input parameters that will be gathered at runtime, including display information for automatic form gener- ation on the client. Inventory Update: The inventory database updates should be allowed for