Processing Lists Deletes DSA Object from Metadirectory (274756)



The information in this article applies to:

  • Microsoft Metadirectory Services 2.1
  • Microsoft Metadirectory Services 2.2

This article was previously published under Q274756

SYMPTOMS

When a Microsoft Metadirectory Services Management Agent processes delete requests, the Directory Server Agent (DSA) object is deleted.

CAUSE

This behavior may occur when a delete request specifies the null-string as a distinguished name of the target object. Because the DSA object is a parent for all of the Management Agents, when the DSA is deleted then most of the directory is also removed.

This behavior may occur when both of the following conditions exist:
  • In the Lotus Notes MA, a format definition in the Delete parsing template for the list object distinguished is absent.
  • In the Microsoft Exchange (Messaging Application Programming Interface [MAPI]) Management Agent, a delete request is received which results in the variable v_zcExchangeAbridgedDN holding a distinguished name which does not exist in the Connector Space (CS).
    Ultimately, the behavior of the IMPORTT program causes the unexpected deletion. IMPORTT defaults to the DSA record when the target object's distinguished name is not specified. By convention, the root record is assumed to have an empty distinguished name as it sits at the top of the directory tree.

    Note that although only the Lotus Notes and Microsoft Exchange (MAPI) Management Agents are identified in this article, this behavior remains a possibility in any MA.

RESOLUTION

To resolve this behavior for Lotus Notes MA or Microsoft Exchange MAPI MA follow the appropriate steps.

Lotus Notes MA

To resolve this behavior, modify the template that defines the list object's distinguished name twice. The first modification must occur within the templates of existing Lotus Notes MAs. Make the second modification within the generic Lotus Notes templates that you use to create new Lotus Notes MAs.
  1. Make the first modification by modifying an existing Lotus Notes Management Agent:
    1. Use Microsoft Metadirectory Services Compass to locate the Lotus Notes MA.
    2. On the Actions menu, click Design MA.
    3. Click the Control Metadirectory tab, click the Parsing Templates tab, and then click the Delete tab.
    4. Modify the template so that it matches the following information:

      NotesDel: $v_notesObjectClass
      FullName: $v_Name
      ListName: $v_Name

    5. Click OK.
  2. Make the second modification by modifying the Lotus Notes Management Agent Setup templates:
    1. On the drive where Microsoft Metadirectory Services is installed, view the \zoomserv\data\dsgates\notes folder.
    2. Use Notepad to open the Imp.udt file.
    3. Modify the file contents so that it matches the following information:

      NotesDel: $v_notesObjectClass
      FullName: $v_Name
      ListName: $v_Name

    4. Save the file, and then quit Notepad.NOTE: The preceding steps modify the template files, as they exist on the Microsoft Metadirectory Services server. Subsequent creation of new Lotus Notes management agents automatically includes these template modifications.

      Microsoft Exchange MAPI MA

      To resolve this behavior, modify the construction template that defines the connector space object's distinguished name to ensure that a blank DN is never set. As in the Notes MA, make modifications twice to ensure that this behavior is corrected in current as well as future MAs. The first modification must occur within the templates of existing Microsoft Exchange MAPI MAs. Make the second modification within the generic Microsoft Exchange MAPI templates that are used to create new Microsoft Exchange MAPI MAs.

      1. Make the first modification by modifying an existing Microsoft Exchange MAPI Management Agent:

        1. Use Microsoft Metadirectory Services (MMS) Compass to locate the Microsoft Exchange MAPI MA.
        2. On the Actions menu, click Design MA.
        3. Click the Control Metadirectory tab, click the Construction Templates tab, and then click the Connector Space tab.
        4. Modify the second block of code in the template so that it matches the following information. It is recommended that the block be replaced with the following:
          # for objects with an unspecified object class, search for the object underneath the MA entry and  
          	# use it's "zcAliasThingObjectName" attribute as the Metaverse DN 
          	if $exist($v_msxObjectClass) = F 
          	then 
          		# Used to process a deletion
                		$v_temp1 = $parser("$v_msxObjectDn","/o=$v_orgName/$v_temp2")
                		$v_zcExchangeAbridgedDN = /$v_temp2
                		$at.dn = $search($v_zcExchangeAbridgedDN)
                		$zcoc = person
                     	###
                     	# The following section contains the new code which verifies            
          		# that the value of the distinguished name is not the null string.
                     	###
                     	if $exist($at.dn) = F
                     	then
                       		$at.dn = cn=No_dn_supplied(,$MA())
                       		$dn = $at.dn
                     	else
                			$dn = $get_attr("$at.dn",$zcAliasThingObjectName)
                     	endif
          	endif 
          
          									
        5. Click OK.
      2. Make the second modification by modifying the Microsoft Exchange MAPI Management Agent Setup templates:

        1. On the drive where MMS is installed, view the \zoomserv\data\dsgates\exchange folder.
        2. Use Notepad to open the at.st file.
        3. Modify the second block of code in the template so that it matches the following information. It is recommended that the block be replaced with the following:
          	# for objects with an unspecified object class, search for the object 
          underneath the MA entry and  
          	# use it's "zcAliasThingObjectName" attribute as the Metaverse DN 
          	if $exist($v_msxObjectClass) = F 
          	then 
          		# Used to process a deletion
                		$v_temp1 = $parser("$v_msxObjectDn","/o=$v_orgName/$v_temp2")
                		$v_zcExchangeAbridgedDN = /$v_temp2
                		$at.dn = $search($v_zcExchangeAbridgedDN)
                		$zcoc = person
                     	###
                     	# The following section contains the new code which verifies            
          		# that the value of the distinguished name is not the null string.
                     	###
                     	if $exist($at.dn) = F
                     	then
                       		$at.dn = cn=No_dn_supplied(,$MA())
                       		$dn = $at.dn
                     	else
                			$dn = $get_attr("$at.dn",$zcAliasThingObjectName)
                     	endif
          	endif 
          
          									
        4. Save the file, and then quit Notepad.NOTE: The preceding steps modify the template files, as they exist on the MMS server. Subsequent creation of new Microsoft Exchange MAPI management agents automatically includes these template modifications.

STATUS

Microsoft has confirmed that this is a problem in the Microsoft products that are listed at the beginning of this article. This behavior has been corrected in Microsoft Metadirectory Services 2.2 Service Pack 1.

The third-party products that are discussed in this article are manufactured by companies that are independent of Microsoft. Microsoft makes no warranty, implied or otherwise, regarding the performance or reliability of these products.

Modification Type:MajorLast Reviewed:10/2/2003
Keywords:kb3rdparty kbbug kbfix KB274756