Need to convert Global groups to Universal groups? Do you have messages to global groups disappearing?

I was working a case last week where my customer had messages to distribution groups disappearing.  There were two parts of the answer to this one.

They were global groups.  Even if we are hitting the issue in KB283051, it should be intermittent, but it was happening every time for this customer.  Here is a summary of what is happening with these:  With Global groups, the group will replicate to all GC's in the forest, but the group membership will only replicate to the local DC's.  So, if for some reason Exchange can't contact the local GC you will see this issue.  (General troubleshooting on this one would involve turning up diagnostic logging for dsaccess - topogy to medium & wait 15 minutes for the 2080 event and then check the event logs on any in site DC's that we aren't able to contact.) 

After looking some more, we found that none of their exchange 2007 servers were seeing any local DC's.  They were only seeing the root level DC's.  This ended up being a problem with  the group membership of the Exchange 2007 servers.  They were not a member of the Exchange Servers Group with a default exchange 2007 security group.  Once we added the Exchange 2007 server to the Exchange Servers group, the Exchange 2007 servers were able to discover the local DC's.  (OK, we are half way there.)

So, once we got the exchange server to see local GC's, we expect the original issue to only be intermittent but we don't want it to ever happen.  You can do this one of two ways: 

1.  Convert the global groups to universal

2.  hard code the GC's that exchange will use (Please only do this as a temporary fix, not a permanent solution.)

We don't really recommend hard coding the GC's for various reasons, so then we look at converting the groups.  This customer had thousands of them and manually doing this will be a mess.  Luckily, you can do this with the Exchange Management Shell.  Here is the syntax: 

     Get-DistributionGroup | where { $_.Grouptype -Like "Global*" } | Set-Group -Universal