XADM: Cannot Move a Public Folder (829736)



The information in this article applies to:

  • Microsoft Exchange 2000 Server

SYMPTOMS

When you try to move a public folder, you may experience one or both of the following symptoms:
  • When you use the Move option in Microsoft Outlook to try to move the public folder, the folder is not moved, and you receive the following error message:
    Unable to move or copy folders. Can't move folder. A top-level folder can't be moved to one of its subfolders. Or, you may not have appropriate permissions for the folder. To check your permissions for the folder, right-click the folder, and then click properties on the shortcut menu. You do not have sufficient permission to perform this operation on this object. See the folder contact or your administrator.
  • If you try to drag the public folder in Exchange System Manager, you are repeatedly prompted for your credentials. After you enter your credentials in response to these prompts, you receive the following error message:
    Access Denied

    Facility: Win32
    ID no: 80070005
    Exchange System Manager
Even though you cannot move the public folder, you can still copy or delete that public folder successfully.

CAUSE

This issue occurs when the public folder is marked as a NewsGroup folder or as a NewsGroup Anchor folder. You can determine the type of folder by viewing the MAPI properties of the public folder. A NewsGroup Anchor folder has the following properties:
  • PR_IS_NEWSGROUP_ANCHOR (0x6696000B)
  • PR_INTERNET_NEWSGROUP_NAME (0x66A7001E)
  • PR_INTERNET_CHARSET (0x669A001E)
  • PR_NEWSGROUP_COMPONENT (0x66A5001E)
  • PR_PREVENT_MSG_CREATE (0x65F4000B)
A NewsGroup folder has the following properties:
  • PR_IS_NEWSGROUP (0x6697000B)
  • PR_INTERNET_NEWSGROUP_NAME (0x66A7001E)
  • PR_INTERNET_CHARSET (0x669A001E)
  • PR_NEWSGROUP_COMPONENT (0x66A5001E)
  • PR_PREVENT_MSG_CREATE (0x65F4000B)
Note The issue that is described in the "Symptoms" section of this article may also occur if you try to move a top-level folder. Verify that you are not trying to move a top-level folder. Before you perform additional troubleshooting steps, verify the permissions for both the source folders and the destination folders. Make sure you verify group permissions for those folders.

Important You cannot move the NewsGroup folders or the NewsGroup Anchor folders.

WORKAROUND

To work around this issue, follow these steps:

Step 1: List the Public Folders That Are Linked to a Network News Transport Protocol Virtual Directory

On each Exchange computer in your organization, note the public folders that are linked to a Network News Transport Protocol (NNTP) virtual directory. To do so, follow these steps:
  1. Start Exchange System Manager.
  2. If Administrative groups are enabled, expand Administrative Groups, and then expand your administrative group.
  3. Expand Servers, expand your server, expand Protocols, expand NNTP, and then expand an NNTP virtual server.
  4. Under your NNTP virtual server, click Virtual Directories.
  5. In the right pane, view the public folders that correspond to the virtual directories.
Note If a folder that has the PR_IS_NEWSGROUP_ANCHOR property exists under one of the NNTP virtual directories, you cannot move the public folder.

Step 2: Locate the PR_IS_NEWSGROUP_ANCHOR Properties

Run the script that is provided in the "More Information" section of this article to locate all public folders that have the PR_IS_NEWSGROUP_ANCHOR property.

Step 3: Remove the PR_IS_NEWSGROUP_ANCHOR Property

If the public folder is returned by the script that you used in the previous step, and this folder is not one of the public folders that is linked to a virtual directory, remove the PR_IS_NEWSGROUP_ANCHOR property. To do so, follow these steps:
  1. Start the Information Store Viewer tool (Mdbvue32.exe). This tool is located in the Support\Utils\i386 folder on your Microsoft Exchange 2000 Server CD. For additional information about the support tools that are included with Microsoft Exchange 2000 Server, click the following article number to view the article in the Microsoft Knowledge Base:

    316279 XGEN: Tools That Are Included with the Exchange 2000 Server CD-ROM

  2. Click to select the MAPI_NEW_SESSION check box and the MAPI_EXPLICIT_PROFILE check box, and then click OK.
  3. If you are prompted to configure an information service to use with Microsoft Outlook, click to select the Microsoft Exchange Server check box, and then click Next. Enter your Exchange Server and mailbox information, and then follow the remaining steps to configure the Outlook account information.

    Note You must use a mailbox account that has Owner rights to the public folder that you want to modify.
  4. On the MDB menu, click OpenMessageStore.
  5. Click Public Folders, and then click Open.

    You return to the MDB Viewer Test Application dialog box.
  6. On the MDB menu, click Open IPM Subtree.
  7. In the Child Folders list, double-click All Public Folders.
  8. Double-click the public folder that you want to change.
  9. In the Folder Properties list, click 0X6696 (PR_IS_NEWSGROUP_ANCHOR).

    Note This property is set to 1 (true).
  10. In the Operations available list, click Folder Properties, and then click Call Function.
  11. Click DeleteProps, and then type 6696 in the PropID(Hex) box.
  12. In the PropType list, click PT_BOOLEAN, and then click Add.
  13. In the Selected IpsPropTagArray list, click 0X6696, and then click Call.

    The IpObj->DeleteProps() dialog box appears.
  14. Click the Close button to close the IpObj->DeleteProps() dialog box.
  15. Click Close to quit the MAPI_FOLDER - foldername Properties dialog box, click Close to quit the MAPI-FOLDER - foldername dialog box, click Close to quit the MAPI_FOLDER - All Public Folders dialog box, and then click Close to quit the MAPI_FOLDER - IPM_SUBTREE dialog box.
  16. On the Session menu, click Session Logoff.
  17. Click OK, and then click OK.
  18. Close the MDB Viewer Test Application dialog box.
After you follow the previous steps to remove the folder property, you can successfully move the public folder.

MORE INFORMATION

How to Determine If a Folder Is a NewsGroup or a NewsGroup Anchor Folder

By default, the Internet Newsgroups folder is marked as a NewsGroup Anchor folder. Because of this, all folders that are created under the Internet Newsgroups public folder are marked as NewsGroup folders. Additionally, you can configure a public folder to be marked as a NewsGroup Anchor folder by linking it to an NNTP virtual directory. To do so, follow these steps:
  1. Start Exchange System Manager.
  2. If Administrative groups are enabled, expand Administrative Groups, and then expand your administrative group.
  3. Expand Servers, expand your server, expand Protocols, expand NNTP, and then expand an NNTP virtual server.
  4. Under the NNTP virtual server, right-click Virtual Directories, point to New, and then click Virtual Directory.
  5. In New NNTP Virtual Directory Wizard, type a name in the Newsgroup subtree box, and then click Next.
  6. Click Exchange Public Folder Database, and then click Next.
  7. Click Browse, locate the public folder that you want to link to this NNTP virtual directory, and then click OK.
  8. Click Finish.
  9. Restart the Network News Transport Protocol (NNTP) service.
After you restart the Network News Transport Protocol (NNTP) service, the public folder is marked as a NewsGroup Anchor folder. Additionally, all public folders under the public folder that you linked to the NNTP virtual directory are marked as NewsGroup folders. All folders that you later create under this folder are marked as NewsGroup folders.

How to Locate the PR_IS_NEWSGROUP Property

All the NewsGroup folders are located under NewsGroup Anchor folders. Therefore, to locate NewsGroup folders, determine if a particular folder's parent folder is a NewsGroup Anchor folder.

How to Locate the PR_IS_NEWSGROUP_ANCHOR Property

You can find the NewsGroup Anchor folders by viewing the virtual directories for each Exchange computer in your organization. To do so, follow these steps:
  1. Start Exchange System Manager.
  2. If Administrative groups are enabled, expand Administrative Groups, and then expand your administrative group.
  3. Expand Servers, expand your server, expand Protocols, expand NNTP, and then expand an NNTP virtual server.
  4. Under your NNTP virtual server, click Virtual Directories.
  5. In the right pane, view the public folders that correspond to the virtual directories.
You can also use the following Microsoft Visual Basic Scripting Edition script to locate the NewsGroup Anchor folders in your organization.

Microsoft provides programming examples for illustration only, without warranty either expressed or implied. This includes, but is not limited to, the implied warranties of merchantability or fitness for a particular purpose. This article assumes that you are familiar with the programming language that is being demonstrated and with the tools that are used to create and to debug procedures. Microsoft support engineers can help explain the functionality of a particular procedure, but they will not modify these examples to provide added functionality or construct procedures to meet your specific requirements.
#######################################################################
#######################################################################

Option Explicit

'
' Loop through all public folders to check the PR_INTERNET_NEWSGROUP_NAME
'	property and to change the PR_IS_NEWSGROUP_ANCHOR property.
'

Dim tblFolderPath(20000) ' As String
Dim tblFolderID(20000) ' As String
Dim tblAnchorFolderPath(100) ' As String

Dim iNewsNameFolder ' As Integer
Dim iNewsAnchorFolder ' As Integer

Dim iNextFolder, iLastFolder ' As Integer     ' Next folder to process, last folder is filled in the array.
Dim iLastAnchorFolder 'As Integer
Dim oSession ' As MAPI.Session

GetAllFolder


Sub GetAllFolder()

    Dim oInfoStores ' As InfoStores
    Dim oInfoStore ' As InfoStore
    Dim oFolder ' As MAPI.Folder
    Dim bFound ' As Boolean
    Dim i,j ' As Integer
        
    '   Get first folder.
    
    wscript.echo "Before creating MAPI Session"
    Set oSession = wscript.CreateObject("MAPI.Session")  ' New MAPI.Session
    wscript.echo "Before Logging On"
    oSession.Logon 
    
    Set oInfoStores = oSession.InfoStores
    bFound = False
    wscript.echo " "
    wscript.echo "Looking for infostores..."
    For i = 1 To oInfoStores.Count
        wscript.echo "   infostore(" & i & ") " & oInfoStores.Item(i).ProviderName & ":" & oInfoStores.Item(i).Name
        If InStr(oInfoStores.Item(i).ProviderName, "Microsoft Exchange") > 0 Then
            If InStr(oInfoStores.Item(i).Name, "Public Folders") > 0 Then
                Set oInfoStore = oInfoStores.Item(i)
                bFound = True
            End If
        End If
    Next
    
    If Not bFound Then
        wscript.echo "ERROR: Did not find InfoStore Microsoft Exchange Server for a Public Folder Tree"
        exit sub
    Else
        wscript.echo "selected infostore " & oInfoStore.ProviderName & ":" & oInfoStore.Name
    End If
    wscript.echo " "
    
    tblFolderID(1) = oInfoStore.RootFolder.ID
    tblFolderPath(1) = ""
    
    iNextFolder = 1
    iLastFolder = 1
    iLastAnchorFolder = 0 
    iNewsNameFolder = 0
    iNewsAnchorFolder = 0

    
    While iNextFolder <= iLastFolder
        ProcessFolder (iNextFolder)
        iNextFolder = iNextFolder + 1
    Wend

    '   Summary
    
    wscript.echo " "
    wscript.echo "----------------------------------------------------------"
    wscript.echo "went through " & iLastFolder & " folders"
    wscript.echo "Number of folders with PR_INTERNET_NEWSGROUP_NAME set : " & iNewsNameFolder & " folders "
    wscript.echo "Number of folders with PR_IS_NEWSGROUP_ANCHOR set : " & iNewsAnchorFolder & " folders "
    wscript.echo "----------------------------------------------------------"
    wscript.echo " "
    wscript.echo "Folders with PR_IS_NEWSGROUP_ANCHOR set : " 
    wscript.echo " "
    
    For j=0 To iLastAnchorFolder 
	wscript.echo "  " & tblAnchorFolderPath(j)
    Next

    wscript.echo "----------------------------------------------------------"
    wscript.echo " "
    
End Sub

'
'   Fill in folder name.
'   Verify if there are subfolders, and then add them to the array.
'
Sub ProcessFolder(i)

    Dim oFolder ' As MAPI.Folder
    Dim SubFolders ' As MAPI.Folders
    Dim j ' As Integer
    Dim strParentPath ' As String
    Dim strNewsName ' As String
    Dim strNewsAnchor ' As String
    
    Set oFolder = oSession.GetFolder(tblFolderID(i))
    
    '   Adding Child folders.
    
    strParentPath = tblFolderPath(i)
        
    Set SubFolders = oFolder.Folders
    For j = 1 To SubFolders.Count
        iLastFolder = iLastFolder + 1
        tblFolderID(iLastFolder) = SubFolders.Item(j).ID
        tblFolderPath(iLastFolder) = strParentPath & "\" & SubFolders.Item(j).Name
        wscript.echo i & ": adding subfolder " & SubFolders.Item(j).Name & " as " & iLastFolder
    Next

    Set SubFolders = Nothing
    
    '   Dealing with PR_INTERNET_NEWSGROUP_NAME and PR_IS_NEWSGROUP_ANCHOR properties.
       
    On Error Resume Next
    strNewsName = ""
    strNewsAnchor = ""
    strNewsName = oFolder.Fields.Item(1722220574).Value
    strNewsAnchor = oFolder.Fields.Item(1721106443).Value
                                            
    On Error GoTo 0
    
    If Len(strNewsName) > 0 Then
        wscript.echo i & ": " & tblFolderPath(i) & " has PR_INTERNET_NEWSGROUP_NAME =" & strNewsName
	iNewsNameFolder = iNewsNameFolder + 1

    Else
        wscript.echo i & ": " & tblFolderPath(i) & " PR_INTERNET_NEWSGROUP_NAME is not set"
    End If

    If Len(strNewsAnchor) > 0 Then
	iLastAnchorFolder = iLastAnchorFolder + 1
	tblAnchorFolderPath(iLastAnchorFolder) = tblFolderPath(i)
        iNewsAnchorFolder = iNewsAnchorFolder + 1

    End If
    
    Set oFolder = Nothing
    
End Sub

#######################################################################
#######################################################################

Modification Type:MajorLast Reviewed:6/30/2005
Keywords:kbprb kberrmsg KB829736 kbAudITPRO