Archive | Exchange Server RSS feed for this section

Recurring Appointment Silliness in Outlook

I was asked to troubleshoot an interesting issue today for a manager of another department… you know, one of those informal “can you come here and look at this really quick” type of things. He had a daily, reoccurring appointment set up for lunch every day.  On one of the days he needed to set up lunch with a couple of people, so he opened that day’s occurrence of the appointment and invited the two attendees. We should note that all attendees were in the same time zone (that’s relevant information if you look the issue up on TechNet).

Today, he was asked to move the lunch forward several days. So, in order to do so, he went to that day and deleted that days’ occurrence of his generic “Lunch” appointment, and then attempted to move the customized one with attendees to that day.

When doing so, he got the following error:

Cannot reschedule an occurrence of the recurring appointment “[appointment name]” if it skips over a later occurrence of the same appointment

There are two things going on here… one is end user perspective, and the other is the reality of how Outlook is viewing that appointment.

To the end user, when he customized that specific occurrence of that reoccurring appointment, that appointment became a standalone event… one that he felt he should be able to move anywhere.

The reality of the situation though is that Outlook still sees that as one reoccurring event, not a standalone appointment. So when he attempted to move it forward several days, Outlook sees that reoccurring event trying to jump ahead of the same event on the day’s in-between.

The solution was simply to educate the user, and he created an independent event for his lunch meeting which could then be freely moved around.

The Definitive Guide to Troubleshooting Outlook Calendaring Issues.

If you work in an environment with multiple versions of Outlook crossing multiple time zones (especially those in the US with Daylight Savings Time), I absolutely promise you that you will see a lot of issues, particularly with Outlook 2010 now in the mix. Knowing everything below should give you the information you need to bring an issue to resolution without escalating it… which is exactly why I wrote it for our help desk 😉

First, I highly recommend that you read through the following guides:

Outlook meeting requests: Essential do’s and don’ts

How to troubleshoot missing and duplicate appointments in Outlook

These guides contain a ton of useful information you should know in order to adequately troubleshoot issues related to meeting requests either disappearing or not behaving as expected.

In regards to an appointment displaying at the wrong time (generally off by 1-2 hours) for an attendee, thoroughly review this document.

How to address time zone changes by using the Time Zone Data Update Tool for Microsoft Office Outlook

If absolutely nothing else, please remember these points:

  1. If the user has Outlook installed on multiple machines, and the determination has been made to rebuild the profile, then the Outlook profile must be rebuilt on all machines, including deleting the existing OST file.
  2. It makes a BIG difference if Outlook 2010 is anywhere in the mix.  Microsoft made major revisions to how Outlook calculates meeting times with 2010.  Delegates (i.e. EA’s) and their executives should all be upgraded simultaneously to the same version of Outlook.
  3. Meeting times are calculated.  That means that an appointment doesn’t start at 1 PM CST, it starts at “7 PM -6 GMT,” and the endpoint decides what that means by performing the calculation based on what it knows about the meeting time and the organizers Time Zone.  The Exchange server plays no role in that unless you are viewing it through Outlook Web Access.  This is why a meeting start time may be different on an iPhone than it is in Outlook, because each one independently decides when that meeting really starts.
  4. If a meeting time differs from where it is supposed to be, there is a mismatch of time zone/DST settings with either the meeting organizer, their delegate, the attendee, or the person that forwarded the meeting request.  Any Outlook client that touched that meeting request must be thoroughly vetted.  Again, if 2010 is in the mix (particularly the end point), that’s a big issue and the user should be taught how to use the Time Zone Data Update Tool.
  5. Time zone settings are set in both Windows and in Outlook.  The DST settings are set in Windows.  All of them are equally important and you should verify they match.
  6. An end user should ALWAYS have the “Automatically Adjust for DST” flag set in Windows unless they live in a time zone that does not recognize DST.  Simply setting the clock +/- one hour is insufficient.
  7. When looking at the Outlook calendar, always switch to “View by Category” or use Outlook Web Access in order to know 100% that a meeting isn’t really there.
  8. If a meeting does not exist in Outlook, Outlook Web Access, or on a mobile device, then it simply does not exist.  It’s gone for good and will need to be recreated.  None of us can bring it back so light a candle and say a prayer.
  9. Remember, OST files get corrupted, NK2 files get corrupted, and PST files are just flat out evil.  Know what each of those does and how to correct them.  Read up on ScanPST.exe, you can use it for OST files too.

…and last but not least, at my very first job in IT my manager drilled this in to me:  “We do not work on unpatched software.” That means the very first thing you should do with Outlook is verify it is on the latest service pack (and it wouldn’t hurt to check for hotfixes).  It won’t always fix the issue, but at least you are working with the latest code.

Mail Enable All Existing Distribution Groups within an OU

Using the EMC to mail enable a distribution group is incredibly inefficient as you can only perform the action on one group at a time.  The EMS isn’t much better as there is not a native command to target every group within a specific OU.

Why would you need to mail enable a distribution group?  Well, remember with Exchange 2007/2010, you could create a new group in Active Directory Users & Computers, and even make it a Universal Distribution Group, but Exchange won’t see it until you mail enable it.  In my case, I had to import a LARGE number of groups from a recent aquisition, so I had them in AD but did not have them mail enabled yet.

In order to do this, we need to create a new PowerShell script with the following code:

Get-Group -OrganizationalUnit "OU=users,DC=domain,DC=com" | ?{ $_.GroupType  -Match "Universal" } | %{ 

# Check to see if the group is mail enabled or not.   

   If ($_.RecipientType -eq "Group") {
      Enable-DistributionGroup $_.DistinguishedName

Just change the “OU=users,DC=domain,DC=com” to whichever OU you are targeting and you should be good to go.

How to create a report of all mailbox sizes in Exchange 2007/2010

It’s often a requirement to get a good report of mailbox sizes for all users.  This was pretty straightforward in earlier versions of Exchange, but in 2007 & 2010 it’s a little more complex… you need a good script to do it.

This can be very useful if you want to get an idea of your heavy users or if you need to plan a migration.  Whatever your reason, it’s a handy script that creates a nice text file in whatever directory you run it from.

Please make sure you edit this so that the command is all on one line, and then you should be good to go!

Get-MailboxStatistics | Sort-Object TotalItemSize -Descending | ft DisplayName,@{label="TotalSize(KB)";expression={$_.TotalItemSize.Value.ToKB()}},ItemCount > GetMailboxStats.txt

How to Add Your Exchange 2010 Server as a Replica for all Public Folders

If you’re in a position where you must continue to use Public Folders with Exchange 2010, and you need to add your new Exchange 2010 server as a replica on a plethora of Public Folders, it’s surprisingly easy to add it to the list of replicas for every Public Folder.

You probably already know that simply adding it as a replica to the parent folder doesn’t quite do it.  However, Microsoft has a script built for Exchange 2010 that will do all of the hard work for you.

Simply open the Exchange Management Shell and navigate to the \scripts folder in your Exchange installation directory.  Once there, do the following:

  1. Run .\AddReplicaToPFRecursive.ps1
  2. Type in “\” when it prompts for the TopPublicFolder
  3. When it prompts for Server To Add, just type in the name of your Exchange 2010 server that is hosting the public folder database.

That’s it, the script may take a while to run (it won’t give any indication that it is doing anything), but it will ultimately complete.  When it does, you should see your 2010 server as a replication partner on every single public folder, which you can validate by running this command:

Get-PublicFolder –Recurse | fl Name, Replicas

Note that it might take a few minutes for the added servers to show up if you have a large number of replicas.

More details from Microsoft are available here:

How to Use Windows Server Backup to back up Exchange 2010 Database Availability Groups (DAG)

Unless you’re comfortable with entrusting your data to DAG & circular logging, backing up Exchange 2010 on a routine basis is critical in order to protect your data and truncate the database logs.

While Microsoft has several articles on using Windows Backup for Exchange 2010, none of them really spell out a start to finish solution for a DAG environment.

In order to configure Windows Backup for an Exchange 2010 environment employing DAG’s, the following need to be accomplished.

  1. If not installed already, install the Windows Server Backup Feature, but NOT the command line tools (those are still 32-bit and incompatible)
  2. Uninstall the Windows Server Backup Features “Command-line Tools” if installed.
  3. Create a registry entry to disable the Microsoft Exchange Replication service VSS writer (see below for step-by-step).
  4. Restart the Microsoft Exchange Replication service.
  5. Set to Automatic and then start the Microsoft Exchange Server Extension for Windows Server Backup service.
  6. Configure your backup using Windows Server Backup (see below for step-by-step).

Registry Change

This was taken from which has additional information on using Windows Backup with Exchange 2010… I highly encourage everyone responsible for their Exchange environment to read it thoroughly:

If a server hosting the data being backed up is a member of a database availability group (DAG) and hosts both active and passive database copies, you must disable the Microsoft Exchange Replication service VSS writer. If the Microsoft Exchange Replication service VSS writer is enabled, the backup operation will fail.

To disable the Microsoft Exchange Replication service VSS writer, perform the following steps:

  1. Log on to the server by using an account that has local administrator access, and then start Registry Editor (regedit).
  2. Navigate to HKEY_LOCAL_MACHINE\Software\Microsoft\ExchangeServer\v14\Replay\Parameters.
  3. Add a new DWORD value named EnableVSSWriter, and set its value to 0.
  4. Exit Registry Editor and then restart the Microsoft Exchange Replication service.

Configure Windows Backup

You only need to specify the drives that have an Exchange database on them that you wish to backup.  In my environment, I have one database per drive, and I only back up the drives that typically run the Active copy of the database.   i.e. every Exchange mailbox server in my environment has a Windows Backup job configured to back up only the drives that have an active database.  There is no reason to back up the passive database copies on every server.

By configuring it this way, that Exchange Agent for Windows Backup automatically knows that you’ve backed up the database and will truncate the logs shortly after the backup completes on all servers in the DAG.

The following was taken from which has additional information on using Windows Backup with Exchange 2010… Again, I highly encourage everyone responsible for their Exchange environment to read it thoroughly:

You need to be assigned permissions before you can perform this procedure. To see what permissions you need, see the “Mailbox recovery” entry in the Mailbox Permissions topic.

  1. Start Windows Server Backup.
  2. In the Actions pane, click “Configure Performance Settings…”
  3. Change the Performance Settings to Custom, and then configure at least your DAG volumes to Incremental, though I would recommending changing all volumes to Incremental (this will cause a fresh, full backup to occur every 14 days)
  4. In the Actions pane, click Backup Once. The Backup Once wizard appears.
  5. On the Backup options page, select Different options, and then click Next.
  6. On the Select backup configuration page, select the type of backup that you want, and then click Next.
    1. Select Full server (recommended) to back up all volumes on the server.
    2. Or, select Custom to specify which volumes should be included in the backup. If you select this option, the Select backup items page appears. Select the volumes to be backed up, and then click Next.
  7. On the Specify destination type page, select the location where you want to store the backup, and then click Next. If Remote shared folder is selected, the Specify remote folder page appears. Specify a UNC path for the backup files, and then do one of the following to configure access control settings:
    1. Select Do not inherit if you want the backup to be accessible only by a set of specified user credentials, and then click Next. Type a user name and password for a user account that has write permissions on the computer that is hosting the remote folder, and then click OK.
    2. Or, select Inherit if you want the backup to be accessible by everyone who has access to the remote folder, and then click Next.
  8. On the Specify advanced options page, select VSS full backup, and then click Next.
  9. On the Confirmation page, review the backup settings, and then click Backup.
  10. On the Backup progress page, you can view the status and progress of the backup operation.
  11. Click Close when the backup operation has completed.

How to add Proxy SMTP Address from Exchange Management Shell

Microsoft’s article related to adding an email address to an existing mailbox in 2010 is here:

However, I really didn’t like how they do it as it relies on multiple line entries to add a single address.  So I sought out the command below to be able to add an address with a single line.

Set-Mailbox [user alias] -EmailAddresses (((Get-Mailbox [user alias]).EmailAddresses)+="")

Better yet, by using Excel and some nifty concatenate work, you can make yourself a nice spreadsheet to apply multiple changes at once.  If you didn’t already know, you can copy and paste in multiple commands at once, and the Exchange 2010 Powershell will process each line as an independent command.

…scripting for dummies I guess : )

Dreaded "Red X" with OWA in Exchange 2010

It appears that after applying Hotfix Rollup 2 in Exchange 2010 Service Pack 1 (and I’d wager this may be an issue in the future), some users are getting the following error in Outlook Web App:

exchange 2010 owa “Couldn’t find a base theme (folder name=base)”

…along with a bunch of Red X’s where the images should be.

Turns out the issue is that, for a variety of reasons, Update Rollup 2 installed with insufficient permissions to apply some settings.

In order to fix this issue, you need to right-click on Exchange Management Shell, select Run As Administrator, and then run the following command:

C:\Program Files\Microsoft\Exchange Server\V14\Bin\UpdateCas.ps1

After running that command, restart your server and OWA should work properly again.

EMS Command to Set Legacy Outlook Web Access in Exchange 2010

If you will be running Exchange 2003 & 2010 simultaneously with mailboxes in both environments, you’ll need to run the Set-OWAVirtualDirectory command on each CAS Server in your organization.  The command to run is:

Set-OWAVirtualDirectory -Identity "CASServer\owa (Default Web Site)" -Exchange2003URL

Simply change the relevant parts to reflect the settings in your environment.  This will tell Exchange 2010 OWA to redirect for clients with Exchange 2003 mailboxes to the appropriate OWA server.

Exchange 2010 Database Accessability Group Witness Server Requirements

In the Exchange Server 2010 Database Accessibility Group (DAG) documentation (, it states the following:

“The witness server and its directory are used only for quorum purposes where there’s an even number of members in the DAG.”

This is semi-confusing during the planning stages of an Exchange 2010 infrastructure, as you must have a witness server regardless of how many mailbox servers are members of a DAG.  It’s just that the witness only comes in to play when their are an even number of active members in a DAG.

Even a little more confusing is that a witness server is typically just an Exchange Hub Transport server that does not have the mailbox role installed (i.e. a Witness can never host a copy of the database it’s witnessing).  So, if your environment consists of dedicated mailbox servers separated from the Client Access and Hub Transport roles, you really don’t have to install any additional servers.

In our environment, we’re taking Microsoft’s recommendation of using only mutli-role servers, so we had to set up a dedicated Hub Transport server to act as the Witness for our DAG.

While you can set up a Windows Server as a witness without Exchange installed on it (see the above article), it’s really not a good idea as that prevents your Exchange administrators from properly managing the entire environment from within Exchange (and we get cranky when we can’t control everything).

Additionally, while your mailbox-role servers must be running the Enterprise Edition of Windows Server to be a part of the DAG, the Hub Transport (Witness) server does not need to be running Enterprise Edition, even though it is a proper part of the DAG.