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 CreateRecoverRequest. The second example shows a more manual approach. You can use Utils.TransactionProperties to trigger a recover request and to help to ensure that only one request is created. Otherwise, each time CLMUtils.CreateRecoverRequest is called, a new request is created.

CLMUtils.CreateRecoverRequest

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

			CLMUtils.CreateRecoverRequest(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["triggerRecover"].Equals(true))
		{
			CLMUtils.CreateRecoverRequest(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 Recover 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 = 2
			csentry("req_type_name").Value = "Recover"
			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 = 2;
			csentry["req_type_name"].Value = "Recover";
			csentry["req_profile_uuid"].BinaryValue =
				new Guid (GUIDValue).ToByteArray();
									 // GUIDValue is the GUID of the profile to associate the request with

			csentry.CommitNewConnector();
	}
}

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

See Also