Tuesday, March 22, 2011

Manage Multiple Calendar Permissions with Exchange 2010 Shell

To edit all Calendars and set Default Calendar permission to Reviewer:

$Mailboxes = Get-Mailbox -ResultSize unlimited
$Mailboxes | ForEach {Set-MailboxFolderPermission $_":\Calendar" -User Default -AccessRights Reviewer}

Note:
  • Use different Set-MailboxFolderPermission cmdlets when using Outlook in different languages (English, Dutch etc).
    Example cmdlet to use with Outlook Dutch client (calendar translates to agenda in dutch): Set-MailboxFolderPermission mailbox:\Agenda -User Default -AccessRights Reviewer
  • The Set-MailboxCalendarFolder cmdlet configures publishing or sharing settings on a calendar folder of a specified mailbox. So, this cmdlet should be used when configuring Internet Calendar sharing.

Monday, March 14, 2011

Exchange 2010 Topology discovery failed, error 0x80040a02 (DSC_E_NO_SUITABLE_CDC)

Strange issue today with an Exchange 2010 CAS/HUB/MBX Server. Event Viewer:
  • Unable to initialize the Microsoft Exchange Information Store service.   - Error 0x96f.)
  • MSExchange ADAccess 2114 Error: Process MSEXCHANGEADTOPOLOGYSERVICE.EXE (PID=1360). Topology discovery failed, error 0x80040a02 (DSC_E_NO_SUITABLE_CDC).
Solution:

Default Domain Controllers Policy:
Computer Configuration/Windows Settings/Security Settings/Local Policies/User Rights Assignment: Manage Auditing and Security Log

Manage Auditing and Security Log contained only BUILTIN\Administrators

Manage Auditing and Security Log should contain at least:
AD-NetBIOS-Name\Exchange Servers, BUILTIN\Administrators

Monday, March 7, 2011

Exchange Database Corruption

Recently a customer was facing Exchange database corruption. Event Viewer:

Event Type:      Error
Event Source:    ESE
Event Category: Database Corruption
Event ID:          447
Description:
Information Store (2864) First Storage Group: A bad page link (error -338) has been detected in a B-Tree (ObjectId: 483242, PgnoRoot: 6816401) of database...

The safest way to solve this error was to create a new DB and then perform a mailbox move to prevent the use of eseutil /p which would probably result in some data loss. Troubleshooting steps:

1. Dismount DB
2. eseutil /mh: DB in Clean Shutdown status
3. Make offline DB backup
4. Mount DB to check if DB will mount (no problem in this case).
    Otherwise I had to use eseutil /p option.
5. Dismount DB
6. eseutil /k returned: 0 Bad Pages
7. eseutil /g returned:
    Database is CORRUPTED
    Operation terminated with error -1206 (JET_errDatabaseCorrupted)
8. Create new DB and enable Circular Logging
9. Move all mailboxes to new DB and disable Circular Logging

Wednesday, January 26, 2011

Quick jump to Exchange dirs from Exchange Shell

cd $exbin            jump to \Exchange Server\bin
cd $exinstall        jump to \Exchange Server\
cd $exscripts      jump to \Exchange Server\scripts

Autodiscover failed (0x800C8203)

Problem: Exchange autodiscover process did not work so Outlook automatic profile creation did not work. No problem manually configuring OL profile.

Outlook Test E-mail AutoConfiguration: Autodiscover to https://fqdn/Autodiscover/Autodiscover.xml failed (0x800C8203)

Everything ok after running: Test-OutlookWebServices -ClientAccessServer CAS-Server

Cause: Outlook retrieved wrong smtp address during automatic profile creation. Outlook automatic profile creation worked after correcting e-mail address and also Outlook Test E-mail AutoConfiguration.

Friday, January 21, 2011

Exchange 2007/2010 Move Mailbox process and not yet initialized mailboxes

After creating a mailbox it will be initialized when you access the mailbox for the first time with Outlook/OWA and default mailbox folders will be created in the language of the client.

The following options are available to change the language of the default mailbox folders after mailbox initialization:
1.    User runs Outlook with parameter: outlook.exe /resetfoldernames
2.    User changes default folder language from within OWA: Options, Regional Settings, Rename default folders so their names match the specified language
3.    Admin (Exchange 2010 only): Set-MailboxRegionalConfiguration mbx -Language xx-XX -DateFormat "d-M-yyyy"-LocalizeDefaultFolderName:$true
Language examples: nl-NL, en-US


Some time ago I did a GroupWise to Exchange 2007 migration with Quest Migration Manager for Exchange. I ran into one issue:

I had created 1000 mailboxes in one Exchange database which would be accessed with Outlook 2007 Dutch client. Before starting the mailbox migration from GW to E2K7 I distributed the mailboxes over 4 E2K7 databases with a mailbox move.

After migrating a mailbox I saw english mailbox folders under Outlook 2007 Dutch client. The following happened: move mailbox process created new mailboxes and moved the contents from the empty source mailbox. This resulted in default english mailbox folders. The solution was simple: first create mailboxes and distribute them directly over the 4 databases. Then perform mailbox migration from GroupWise to Exchange. Then access mailbox with OL 2007 Dutch client: only Dutch mailbox folders.


I've tested a mailbox move with Exchange 2010 SP1:
1.    Create mailbox (no access with OWA/Outlook)
2.    Move mailbox to another database
3.    Access mailbox with Outlook 2007 Dutch client: default mailbox folders in English language
4.    Set-MailboxRegionalConfiguration mailbox -Language nl-NL -DateFormat "d-m-yyyy"-LocalizeDefaultFolderName:$true
This step can be performed while Outlook is online and results in default mailbox folders in Dutch language.

So, a mailbox move initializes a mailbox which results in default mailbox folders in English language. Maybe Microsoft can build in an extra check? Mailbox move process should not move mailboxes which have not been initialized. Just delete and recreate is sufficient in this case. I have reported this ‘issue’ to Microsoft.