Example: Deprovisioning an Object After a Specified Time
You can use the IMVSynchronization.Provision method to trigger deprovisioning on a single connector or multiple connectors to an MVEntry object after a specified time.
Note This sample only works if you run the management agent containing the remaining connector space object in full-synchronization mode, which is a very time-consuming operation in a large metadirectory.
The following example shows you how to deprovision an object from the metaverse after a specified time. For example, you can use this example to schedule an activity for an object in the metaverse, such as implementing a Time To Live scenario. The example assumes that the metaverse object has two additional attributes: DateofTermination and TimeToLive. These attributes are set during import attribute flow on the metaverse object.
Public Sub Provision( _
ByVal mventry As MVEntry) _
Implements IMVSynchronization.Provision
' If the function returns true, the account is expired. Disconnect the
' metaverse object from the connector space.
If AccountTTLExpired(MVEntry("DateofTermination").Value, MVEntry("TimeToLive").Value) Then
MVEntry.ConnectedMAs.DeprovisionAll()
End If
' Continue with normal provisioning.
End Sub
Public Function AccountTTLExpired(ByVal TerminatedDate As String, _
ByVal TTL As String) As Boolean
' If the TerminatedDate and TimeToLive attributes contain values, then
' add the attributes and compare to the current date. If the current date
' is more than or equal to the TerminatesDate and ToLiveTime value,
' the function returns true.
Dim TTLExpired As Boolean = False
If TerminatedDate.Equals("") Or TTL.Equals("") Then Exit Function
Try
Dim StartTTLDate As Date = CDate(TerminatedDate)
Dim DaysToTTL As Double = CDbl(TTL)
Dim TimeToLiveDate As DateTime
TimeToLiveDate = StartTTLDate.AddDays(DaysToTTL)
If Now >= TimeToLiveDate Then
TTLExpired = True
End If
Catch
' Handle exceptions here.
End Try
AccountTTLExpired = TTLExpired
End Function
void IMVSynchronization.Provision (MVEntry mventry)
{
// If the function returns true, the account is expired. Disconnect the
// metaverse object from the connector space.
if (AccountTTLExpired (mventry["DateofTermination"].Value, mventry["TimeToLive"].Value))
{
mventry.ConnectedMAs.DeprovisionAll();
}
// Continue with normal provisioning.
}
//...
public bool AccountTTLExpired(string TerminatedDate, string TTL)
{
// If the TerminatedDate and TimeToLive attributes contain values, then
// add the attributes and compare to the current date. If the current date
// is more than or equal to the TerminatesDate and ToLiveTime value,
// the function returns true.
if (TerminatedDate.Equals(""))
{
return(false);
}
if(TTL.Equals(""))
{
return(false);
}
try
{
//Convert TerminatedDate to a DateTime object
DateTime StartTTLDate;
StartTTLDate = Convert.ToDateTime(TerminatedDate);
//Convert the TTL string to a double
double DaysToTTL = Convert.ToDouble(TTL); //TTL
DateTime TimeToLiveDate = new DateTime();
//Add DaysToTTL to StartTTLDate to get TimeToLiveDate
TimeToLiveDate = StartTTLDate.AddDays(DaysToTTL);
if (DateTime.Now >= TimeToLiveDate)
{
return(true);
}
}
catch
{
// Handle exceptions here.
}
return false;
}
See Also
Send comments about this topic to Microsoft
Build date: 2/16/2009