Procedures

In Microsoft Provisioning Framework (MPF), a procedure is a blueprint for executing the steps of a provisioning request. A procedure can be one of the following:

Every request contains a single procedure (which can, in turn, contain calls to other procedures). MPF executes each step in the order it appears. The XML structure of a procedure is defined in a provider or derived from a combination of lower-level procedures.

For specialized needs, you can write a custom procedure that chains calls to other procedures, usually from multiple providers. For more information, see Developing Custom Namespaces. To associate the procedure with MPF, it is incorporated into a namespace registered in the configuration database. Procedures are configurable as follows.

Property Description
Procedure name Identifies the name of the procedure. You can change this at any time. However, modifying a procedure name can cause problems if other procedures call it. If you do modify a procedure name, be sure to update the XML of all other procedures that call that procedure.
Access type A procedure is either public or private (default). A public procedure can be called from an incoming request outside of MPF, but a private procedure can only be called from within MPF.
Request type Specifies which functions a procedure can invoke.
  • Read: Invokes only an execute function to process the request with no rollback function.
  • Write: Invokes both an execute function to process the request and a rollback function to implement after a failure.
  • Two-phase enabled: Invokes an execute function and a prepare function to process the request. It also invokes either a commit function or a rollback function, depending on whether the prepare and process actions complete successfully.
Execute as Specifies the user credentials with which MPF invokes the procedure. Only credentials previously defined in Provisioning Manager can be selected. This option does not display for read-only namespaces, such as the Error Provider namespaces, and the field is not enabled unless at least one user credential exists in the configuration database. For more information on Execute as, see Basic Authentication.
Audit Specifies whether procedure calls are saved to the audit log. This setting corresponds to the auditEnabled attribute in the namespace XML procedure node.

In addition to marking a procedure for audit, you can also configure the audit level for procedure calls. For more information, see Provisioning Engines.

Auto-generate performance counters Specifies whether to automatically implement performance counters for the procedure. Note, however, that a performance counter does not show up in the performance monitor until the first time a procedure runs.
Save data for rollback Specifies whether to automatically save the input data that enables the rollback of a failed procedure. It is recommended that you not change this property. Doing so can cause data and system corruption if a transaction fails.
XML Implements procedure steps for calling a provider or another procedure. You can modify a procedure's XML from Provisioning Manager, but this practice is not recommended. Instead, you should modify and test the XML outside of the production environment, then import it once testing is complete.
Security Specifies who can execute each procedure and determines the permissions to allow or deny each user. By default, permissions propagate from the namespace to its procedures, so changes to permissions apply to all procedures. However, you can override this default behavior for individual procedures.
See Also

Architecture, Procedure Examples, Provisioning Schema, XML Schema for Procedures