Wednesday, June 10, 2009

Cannot Add Replica's to Certain System Public Folders

I had a very interesting error with public folder replica's in an Exchange 2003 and 2007 environment. There was no information on the internet surrounding the errors I was recieving hence it was esculated to Microsoft.

The Problem

I had 1 exchange 2003 mailbox server and 2 exchange 2007 mailbox servers. I could add my exchange 2003 and the 2007 mailbox server as a replica to the following system public folders:
- EFORMS REGISTRY
- OFFLINE ADDRESS BOOK
- SCHEDULE+ FREE BUSY

However when I try and add my second exchange 2007 server as a replica to these folders I recieve the following error:

--------------------------------------------------------
Microsoft Exchange Error
--------------------------------------------------------
The following error(s) occurred while saving changes:

set-publicfolder
Failed
Error:
Cannot save the object '\NON_IPM_SUBTREE\SCHEDULE+ FREE BUSY'. Please make sure that you specified the correct Identity and that you have the necessary permissions to save it.

MapiExceptionNotFound: Unable to set properties on object. (hr=0x8004010f, ec=-2147221233)
Diagnostic context:
Lid: 18969 EcDoRpcExt2 called [length=416]
Lid: 27161 EcDoRpcExt2 returned [ec=0x0][length=516][latency=15]
Lid: 23226 --- ROP Parse Start ---
Lid: 27962 ROP: ropSetProps [10]
Lid: 17082 ROP Error: 0x8004010F
Lid: 30561
Lid: 21921 StoreEc: 0x8004010F
Lid: 27962 ROP: ropExtendedError [250]
Lid: 1494 ---- Remote Context Beg ----
Lid: 1238 Remote Context Overflow
Lid: 21970 StoreEc: 0x8004010F PropTag: 0x67870102
Lid: 21970 StoreEc: 0x8004010F PropTag: 0x678A0102
Lid: 21970 StoreEc: 0x8004010F PropTag: 0x3D210102
Lid: 21970 StoreEc: 0x8004010F PropTag: 0x668F0040
Lid: 21970 StoreEc: 0x8004010F PropTag: 0x67870102
Lid: 21970 StoreEc: 0x8004010F PropTag: 0x678A0102
Lid: 21970 StoreEc: 0x8004010F PropTag: 0x668F0040
Lid: 21970 StoreEc: 0x8004010F PropTag: 0x3D210102
Lid: 21970 StoreEc: 0x8004010F PropTag: 0x67870102
Lid: 21970 StoreEc: 0x8004010F PropTag: 0x678A0102
Lid: 21970 StoreEc: 0x8004010F PropTag: 0x67870102
Lid: 21970 StoreEc: 0x8004010F PropTag: 0x678A0102
Lid: 21970 StoreEc: 0x8004010F PropTag: 0x668F0040
Lid: 21970 StoreEc: 0x8004010F PropTag: 0x678D0102
Lid: 3362 StoreEc: 0x8004010F
Lid: 9206 StoreEc: 0x8004010F
Lid: 4559 StoreEc: 0x8004010F
Lid: 1750 ---- Remote Context End ----
Lid: 26849
Lid: 21817 ROP Failure: 0x8004010F
Lid: 25761
Lid: 1940 StoreEc: 0x8004010F
Lid: 25297
Lid: 21201 StoreEc: 0x8004010F




--------------------------------------------------------
OK
--------------------------------------------------------

Error from 2007 pubic folder management console:



Error from powershell:



Error from PFDavAdmin:



The Resolution

I spoke to a Microsoft exchange architect named Indarraaj. He informed me that this is this error is by design. You can only have one exchange 2003 and one exchange 2007 server as a replica at these parent level public folders. However if you look at the sub folders, it is possible to add all your servers as replica's. As long as you add all your servers as replica's to your sub folders you will be fine.

I asked him why this was not documented on the internet anywhere, as I did research this pretty intensively and there was hardly any information! He said there is a KB article for this however it is a Microsoft internal KB which is not available externally for the public! I think this is pretty strange, if this error is by design, shouldn't Microsoft at least document this if every exchange organisation around the world experiance this issue at a given time when migrating from exchange 2003 to 2007?

Anyway all in all just check the child public folders and ensure that the replica's are set right on them.

8 comments:

  1. Thanks for this , and also for your other post about the AddReplicaToPFRecursive.ps1 script!
    Carol

    ReplyDelete
  2. Praise the Lord! Thank for this info!

    ReplyDelete
  3. Thanks!
    that was helpfull

    ReplyDelete
  4. Extremely helpful. Thank you!

    ReplyDelete
  5. But that explanation doesn't help if you are trying to remove a Exchange 2007 server and decommission it - which is what I am trying to do. It looks as if we are stuck leaving it running for this one folder replication...

    ReplyDelete
  6. I agree with Anonymous of September 13, 2011.

    From what I have found, NOBODY has the "STEPS TO DE-COMMISSION the old 2007 server," (moving to 2010)

    1) How can we tell when replication is completed?
    2) How can we then properly "decommission" the old 2007 server? Can I safely 'remove the old replica 2007 server' somehow???

    Thanks!

    ReplyDelete
  7. Well I'm not going to go into all the steps to removing an Exchange 2007 server... however I will cover public folder replication.

    So you have created your Ex2010 server and you have added all public folders you have added your Exchange 2010 server as a "replica" to all public folders you want replicated. This can be done recursively using PFDavAdmin (Exchange 2003/2007 tool which can add a server recursively to lots of public folders) or using a script AddReplicatoPFRecursive.ps1 which I have explained in more detail here:
    http://clintboessen.blogspot.com/2009/06/mass-setting-replication-partners-with.htmlhttp://clintboessen.blogspot.com/2009/06/mass-setting-replication-partners-with.html

    Note: ExFolders is the Ex2010 version of PFDavAdmin.

    1) How can we tell when replication is complete?

    Well first you need to understand how replication works. Public folder replication works by the servers simply emailing other servers. For example two servers are replicating public folders... server1 will simply send loads 300K by default emails to server2 containing public folder content which is then played into the database of server2. You can verify if replication is occuring by looking at the SMTP logs of your receive connectors by enabling verbose logging on the connector. I have never changed the SMTP email size for replication from 300K however if you want to you can change this on the public folder database objects with Set-PublicFolderDatabase -ReplicationMessageSize.

    So this is how you can "if" the server is replicating. How do you know if replication is complete? Run the command Get-PublicFolderStatistics -server server1 and PublicFolderStatistics -server server2 then look at the item count of each of your public folders. If the item count matches then you know all content has been replicated.

    2) How can we then properly "decommission" the old 2007 server? Can I safely 'remove the old replica 2007 server' somehow???

    To decomission the old server you need to remove it as a replica from all public folders or the Ex2010 server will try and "send emails" containing public folder traffic to something that doesnt exist. You can recursively remove it as a replica using ExFolders on the Exchange 2010 server or run the RemoveReplicaFromPFRecursive.ps1 script with the correct parameters.

    Last item which is important to understand. How do users know which server/public folder database they are going to communicate with? Well this is set per mailbox database. All mailboxes within a mailbox database will use the public folder mailboxes Mailbox Databases. To view what public folder database a mailbox database is set to run Get-MailboxDatabase | fl

    ReplyDelete
  8. Nice and very helpful information i have got from your post. Even your whole blog is full of interesting information which is the great sign of a great blogger.

    Lenovo - ThinkPad Helix Ultrabook Convertible 11.6" Touch-Screen Laptop - 4GB Memory

    Lenovo - ThinkPad T430 14" Laptop - 4GB Memory - 500GB Hard Drive - Black

    ReplyDelete