Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
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