Namespace Architecture

The XML-based procedures implemented using Microsoft Provisioning Framework (MPF) and the other components of Microsoft Provisioning System (MPS) are essential to the implementation of any provisioning request.

What a Namespace Is

Namespaces are the XML-based mechanism that Microsoft Provisioning Framework (MPF) uses to link providers and procedures with MPF. Namespaces are used to group procedure calls.

Each namespace must be registered in the configuration database. Providers and the procedures used to implement the functionality of a provider must belong to a namespace.

Using Provisioning Manager or Configuration Database WMI Provider, you can configure the following namespace properties.

Table: Namespace Properties

Property Description
Namespace name Identifies the name of the namespace. Modifying a namespace name can cause significant problems. If you must modify a namespace name, you should create a new namespace with the new name, then copy the XML and other namespace information (including permissions) from the old namespace. After you have followed these steps, you can delete the old namespace.
Provider source Identifies the provider, if any, that the namespace calls. The identifier is the Component Object Model (COM) PROGID of the provider.
Description Provides a brief description of the functionality provided by the namespace.
XML Displays the procedures of a namespace that are registered with the configuration database. These procedures call a provider or another procedure, including procedures of other namespaces. You can modify a namespace's XML from Provisioning Manager, but this is not recommended. Instead, modify and test the XML outside of the production environment, then import it once testing is complete.
Security Specifies who can execute all procedures of the namespace. By default, permissions propagate from the parent to the child. Adding or deleting a user in a namespace adds or deletes the user permissions in all procedures of the namespace unless you configure a procedure so that it does not propagate permissions.

You can use Provisioning Manager's Export option to export the XML of a namespace.

How a Namespace Works

A namespace contains one or more related procedures. The namespace contains the XML that invokes the functionality of an underlying provider or another procedure. Every namespace procedure has an input schema and (optionally) an output schema. The input schema optionally validates data supplied to the procedure. The output schema defines the format for data returned by the procedure.

All procedures implemented in Microsoft Provisioning System must be part of a namespace registered in Microsoft Provisioning Framework (MPF).

Example of a Namespace

In the following example, the namespace, called New Namespace, contains one procedure, New Request.

<namespace name="New Namespace" 
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <procedure name="New Request" type="write" access="public">
	<execute namespace="Test Namespace" procedure="Write Request">
	<forEach name="organization" root="data" 
		path="organizations/organization"/>
	<before source="organization" destination="executeData">
		<xsl:template match="organization[@type='primary']">
		<primaryOrg>
			<xsl:value-of select="@name"/>
		 </primaryOrg>
		</xsl:template>
		<xsl:template match="organization[@type='secondary']">
		 <secondaryOrg>
			<xsl:value-of select="@name"/>
		</secondaryOrg>
		</xsl:template>
	</before>
	<after source="executeData" destination="data" 
		destinationPath="orgSignup" mode="merge"/>
	</execute>
  </procedure>
</namespace>

In the procedure example:

Namespace Implementation in Microsoft Provisioning System

The two types of namespaces included in Microsoft Provisioning System are provider namespaces and non-provider namespaces.

All namespaces must be registered in Microsoft Provisioning System in order to be available to incoming provisioning requests. Registered namespaces can be accessed through Provisioning Manager, which is the Microsoft Management Console (MMC) snap-in used to administer Microsoft Provisioning Framework (MPF). Each of these procedures is registered with the configuration database. MPF uses the XML schema for the procedure element in both namespaces and requests.

Most namespaces, except the read-only namespaces, can be modified to meet specific functionality requirements. Read-only namespaces, which are indicated by the red highlighting for the namespace in the console tree of Provisioning Manager, are critical to the operation of MPF.

New namespaces can also be created and implemented. Although Provisioning Manager supports creation of namespaces directly in MMC, this is not recommended, especially in a production environment. To implement new namespaces, create them outside of Provisioning Manager by using a text editor to create the required XML files, and then register each namespace with MPF by using Provisioning Manager to import it.