The following examples show how to provision a Forefront Identity Manager Certificate Management (FIM CM) Recover request. The first example demonstrates how to do this using CreateOnlineUpdateContentChangeRequest. The second shows a more manual approach. You can use Utils.TransactionProperties to trigger an online update request and to help to ensure that only one request is created. Otherwise, each time CLMUtils.CreateOnlineUpdateRequest is called, a new request is created.

CLMUtils.CreateOnlineUpdateRequest

Visual Basic  Copy Code
Sub Provision(ByVal mventry As MVEntry)
	Implements IMVSynchronization.Provision

	Try
		If mventry("objectGUID").IsPresent And
			Utils.TransactionProperties(
			"triggerUpdate").Equals(True) Then
			CLMUtils.CreateOnlineUpdateRequest(CLMMA,
				New Guid(mventry("objectGUID").BinaryValue),
				"CLM Sample Profile Template")
		End If
	' Log and rethrow any exception.
	Catch ex As Exception
		Logging.Logging.LogException(ex,
			"Provision",
			"Caught exception",
			False)
		Throw
	End Try

End Sub 'IMVSynchronization.Provision
C#  Copy Code
void IMVSynchronization.Provision (MVEntry mventry)
{
	try
	{
		if (mventry["objectGUID"].IsPresent &&
			Utils.TransactionProperties["triggerUpdate"].Equals(true))
		{
			CLMUtils.CreateOnlineUpdateRequest(CLMMA,
				new Guid(mventry["objectGUID"].BinaryValue),
				"CLM Sample Profile Template");
	}
}
	// Log and rethrow any exception.
	catch(Exception ex)
	{
		Logging.Logging.LogException(ex,
			"Provision",
			"Caught exception",
			false);
		throw;
}
}

Provision Online Update Request

Visual Basic  Copy Code
Sub Provision(ByVal mventry As MVEntry)
	Implements IMVSynchronization.Provision

	Try
		If mventry("objectGUID").IsPresent And
			Utils.TransactionProperties(
			"triggerRecover").Equals(True) Then
			Dim targetCLMMA As ConnectedMA =
				mventry.ConnectedMAs("CertificateLifecycleManagerMA")
		
			Dim csentry As CSEntry =
				targetCLMMA.Connectors.StartNewConnector("clmRequest")
		
			csentry.DN = targetCLMMA.EscapeDNComponent("CN=" +
				Guid.NewGuid().ToString())
		
			csentry("req_type").IntegerValue = 10
			csentry("req_type_name").Value = "OnlineUpdate"
			csentry("req_profile_uuid").BinaryValue =
				New Guid().ToByteArray()
			' GUID of profile to associate request with
			csentry.CommitNewConnector().
		End If

	' Log and rethrow any exception.
	Catch ex As Exception
		Logging.Logging.LogException(ex,
			"Provision",
			"Caught exception",
			False)
		Throw
	End Try

End Sub 'IMVSynchronization.Provision
C#  Copy Code
void IMVSynchronization.Provision(MVEntry mventry)
{
	try
	{
		if (mventry["objectGUID"].IsPresent &&
			Utils.TransactionProperties["triggerRecover"].Equals(true))
		{
			ConnectedMA targetCLMMA =
				mventry.ConnectedMAs["CertificateLifecycleManagerMA"];

			CSEntry csentry =
				targetCLMMA.Connectors.StartNewConnector("clmRequest");

			csentry.DN = targetCLMMA.EscapeDNComponent("CN=" +
				Guid.NewGuid().ToString());

			csentry["req_type"].IntegerValue = 10;
			csentry["req_type_name"].Value = "OnlineUpdate";
			csentry["req_profile_uuid"].BinaryValue =
				new Guid (GUIDValue).ToByteArray();
				// GUIDValue should be the GUID of the 
				// profile template
				// you can get from
				// CLMUtils.GetProfileUuidFromProfileTemplateName or
				// manually.
			csentry.CommitNewConnector();
	}
}

	// Log and rethrow any exception.
	catch (Exception ex)
	{
		Logging.Logging.LogException(ex,
			"Provision",
			"Caught exception",
			false);
		throw;
}
}

See Also

Reference

CreateOnlineUpdateContentChangeRequest

Concepts

Forefront Identity Manager Certificate Management Connected Data Sources