Microsoft KB Archive/829736

= XADM: Cannot Move a Public Folder =

Article ID: 829736

Article Last Modified on 10/27/2006

-

APPLIES TO


 * Microsoft Exchange 2000 Server Standard Edition

-



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 &quot;Symptoms&quot; 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 &quot;More Information&quot; 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:  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

 Click to select the MAPI_NEW_SESSION check box and the MAPI_EXPLICIT_PROFILE check box, and then click OK. 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.</li> On the MDB menu, click OpenMessageStore.</li> Click Public Folders, and then click Open.

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

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

The IpObj->DeleteProps dialog box appears.</li> Click the Close button to close the IpObj->DeleteProps dialog box.</li> Click Close to quit the MAPI_FOLDER -  Properties dialog box, click Close to quit the MAPI-FOLDER -   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.</li> On the Session menu, click Session Logoff.</li> Click OK, and then click OK.</li> Close the MDB Viewer Test Application dialog box.</li></ol>

After you follow the previous steps to remove the folder property, you can successfully move the public folder.

<div class="moreinformation_section">

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 &quot;Before creating MAPI Session&quot; Set oSession = wscript.CreateObject(&quot;MAPI.Session&quot;) ' New MAPI.Session wscript.echo &quot;Before Logging On&quot; oSession.Logon Set oInfoStores = oSession.InfoStores bFound = False wscript.echo &quot; &quot; wscript.echo &quot;Looking for infostores...&quot; For i = 1 To oInfoStores.Count wscript.echo &quot;  infostore(&quot; & i & &quot;) &quot; & oInfoStores.Item(i).ProviderName & &quot;:&quot; & oInfoStores.Item(i).Name If InStr(oInfoStores.Item(i).ProviderName, &quot;Microsoft Exchange&quot;) > 0 Then If InStr(oInfoStores.Item(i).Name, &quot;Public Folders&quot;) > 0 Then Set oInfoStore = oInfoStores.Item(i) bFound = True End If       End If    Next If Not bFound Then wscript.echo &quot;ERROR: Did not find InfoStore Microsoft Exchange Server for a Public Folder Tree&quot; exit sub Else wscript.echo &quot;selected infostore &quot; & oInfoStore.ProviderName & &quot;:&quot; & oInfoStore.Name End If   wscript.echo &quot; &quot; tblFolderID(1) = oInfoStore.RootFolder.ID   tblFolderPath(1) = &quot;&quot; iNextFolder = 1 iLastFolder = 1 iLastAnchorFolder = 0 iNewsNameFolder = 0 iNewsAnchorFolder = 0

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

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

wscript.echo &quot;--&quot; wscript.echo &quot; &quot; 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 & &quot;\&quot; & SubFolders.Item(j).Name wscript.echo i & &quot;: adding subfolder &quot; & SubFolders.Item(j).Name & &quot; as &quot; & iLastFolder Next

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

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

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

End If   Set oFolder = Nothing End Sub



Keywords: kbprb kberrmsg KB829736

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.