Exchange 2013: Public Folder Migrations


In this article we take a look at Modern Public folders and outline how to migration the legacy version to the Modern (exchange 2013) version.

author: marc dekeyser | Posted On Wednesday, September 10, 2014 4:27 PM | Comments (0)

Issues with CU6 for Exchange server 2013: An update


Update on some of the issue related to Exchange 2013 CU6: - Databases unexpectedly fail over in a co-existence environment with E2007 - Exchange Online mailboxes cannot be managed by using EAC after you deploy E2013 CU6 - You cannot route ActiveSync traffic to E2007 mailboxes after you upgrade to E2013 CU6

author: marc dekeyser | Posted On Tuesday, September 9, 2014 4:02 PM | Comments (0)

Lync 2013 September Update released!


We have a new update released for Lync 2013! The september update for Lync 2013 is available: http://support.microsoft.com/kb/2889860.

author: marc dekeyser | Posted On Tuesday, September 9, 2014 9:30 AM | Comments (0)

Exchange 2013: Auto Reseed


Overview

Auto reseed is a fascinating subject, introduced for the very first time in Exchange 2013 it meets a need that existed throughout legacy versions. Throughout the previous exchange versions if a disk hosting a mailbox database were to go offline it would mean that the database copy hosted on that disk would be unavailable to exchange as well.

In Exchange 2010 that would have meant one copy to be impacted, with the new storage recommendations of hosting multiple copies per volume the impact of this becomes quite a bit larger. To minimize the risk of copies being reduced for a prolonged period of time “Auto Reseed” was introduced.

Simply put, it will take a spare disk (which you assigned) and assign it to replace the failed disk, automatically reseeding the mailbox databases hosted on the failed disk.

The downside, however, is that the feature doesn’t actually does any of the prerequisite configuration for you. Installing the disk correct, creating the directories and adding spare disks to the system, as well as replacing bad disks, all requires manual actions by an administrator.

Workflow

The primary input condition for the Auto Reseed workflow is a database copy that is in an Failed and Suspended (F&S) state for 15 consecutive minutes.  When that condition is detected, the following Auto Reseed workflow is initiated:

  • Try to resume the database copy up to 3 times, with 5 minute sleeps in between each try.  Sometimes, after an F&S database copy is resumed, the copy remains in a Failed state. This can happen for a variety of reasons, so this first step is designed to handle all such cases; AutoReseed will automatically suspend a database copy that has been Failed for 10 consecutive minutes to keep the workflow running. If the suspend and resume actions don’t result in a healthy database copy, the workflow continues.
  • Next, AutoReseed will perform a variety of pre-requisite checks. For example, it will verify that a spare disk is available, that the database and its log files are configured on the same volume, and in the appropriate locations that match the required naming conventions. In a configuration that uses multiple databases per volume, AutoReseed will also verify that all database copies on the volume are in an F&S state.
  • Next, AutoReseed will attempt to assign a spare volume up to 5 times, with 1 hour sleeps in between each try.
  • Once a spare has been assigned, AutoReseed will perform an InPlaceSeed operation using the SafeDeleteExistingFiles seeding switch.  If one or more database files exists, AutoReseed will wait for 2 days before in-place reseeding (based on the LastWriteTime of the database file).  This provides an administrator with an opportunity to preserve data, if needed.  AutoReseed will attempt a seeding operation up to 5 times, with 1 hour sleeps in between each try.

Once all retries are exhausted, the workflow stops.  If, after 3 days, the database copy is still F&S, the workflow state is reset and it starts again from Step 1.  This reset/resume behavior is useful (and intentional) since it can take a few days to replace a failed disk, controller, etc..

Before you begin

Be aware that it is best to do this in a lab beforehand. The configuration is quite simple but can be very confusing. The naming conventions you use are largely up to you but need to be consistent throughout all nodes in the database availability group. The EDB and log file path have to end in “.db” and “.log” respectively and have to be in certain locations. Additionally the number of copies had to be equal on each disk. You cannot have, say, 4 copies on one disk whilst having 2 on another. So it is important to plan out what the configuration will look like beforehand.

Parameters

Currently there are 3 parameters you need be aware of when configuring Auto Reseed:

  • AutoDagVolumesRootFolderPath: Under this folder we will create mount points for the disk we assign to our exchange servers
  • AutoDagDatabasesRootFolderPath: This folder will be hosting the mount points for our databases.
  • AutoDagDatabaseCopiesPerVolume: With this parameter we specify the number of database copies each volume will host.

As you can see things already can be quite confusing and we have not even started configuring the feature! It is easiest to remember that each volume you specify for the auto reseed feature will have multiple mount points, except for our spare disk(s).

clip_image001

 

The values I used in my lab are as follows:

  • AutoDagVolumesRootFolderPath: C:\ExchVol
  • AutoDagDatabasesRootFolderPath: C:\ExchDBs
  • AutoDagDatabaseCopiesPerVolume: 2

I will have 3 disks configured, 2 disks hosting databases and 1 spare disk. My database availability group is name “DAG”. Each active disk will host 2 databases, for 4 databases in total. Naming is simple and they are as follows:

  • DB01
  • DB02
  • DB03
  • DB04

Two Exchange 2013 servers are deployed in my database availability group:

  • SFEX01
  • SFEX02

Steps

Step 1: Configuring the root paths for the databases and volumes

This is where it begins. Open the exchange management shell and enter the following:

Set-DatabaseAvailabilityGroup DAG -AutoDagDatabasesRootFolderPath "C:\ExchDbs"

This will set the root folder path for the databases to “C:\ExchDbs”.

Set-DatabaseAvailabilityGroup DAG -AutoDagVolumesRootFolderPath "C:\ExchVols"

With this command we configure the root folder path for the volumes to point to “C:\ExchVols”.

Set-DatabaseAvailabilityGroup DAG -AutoDagDatabaseCopiesPerVolume 2

And finally we configure the number of copies hosted per (active) volume to 2.

Notice that we do define which disks will be a spare disk. Exchange will automatically recognize a spare disk by it not having a mount point under the database root folder associated with it.

Step 2: Creating the directories

First of all we will have to create our root directories (the Database root path and the Volumes root path):

Md C:\ExchVols
md C:\ExchDBs

Once we have these created we have we have to work our way down and create a folder for each volume as well as a folder for each database:

md C:\ExchVols\Volume1
md C:\ExchVols\Volume2
md C:\ExchVols\Volume3

md C:\ExchDBs\DB01
md C:\ExchDBs\DB02
md C:\ExchDBs\DB03
md C:\ExchDBs\DB04

Step 3: Associate the disks with the mount points

And this is where things get funny! Each of our 3 disks need to be associated with the right folder(s).

Our first disk will be tied to the folder “C:\ExchVols\Volume1” and to the database folders “C:\ExchDBs\DB01” and “C:\ExchDBs\DB03”.

Mountvol.exe c:\ExchVols\Volume1 \\?\Volume (GUID)
Mountvol.exe c:\ExchDBs\DB01 \\?\Volume (GUID)

Mountvol.exe c:\ExchDBs\DB03 \\?\Volume (GUID)

The second disk will be tied to the folder “C:\ExchVols\Volume2” and to the database folders “C:\ExchDBs\DB02” and “C:\ExchDBs\DB04”.

Mountvol.exe c:\ExchVols\Volume2 \\?\Volume (GUID)
Mountvol.exe c:\ExchDBs\DB02 \\?\Volume (GUID)

Mountvol.exe c:\ExchDBs\DB04 \\?\Volume (GUID)

The third and last disk will be a spare disk and needs to be tied to the folder “C:\ExchVols\Volume3”

Mountvol.exe c:\ExchVols\Volume3 \\?\Volume (GUID)

Yes, you noticed that correctly, there are drives associated with multiple folders and that is what confuses most people! This structure is necessary for Exchange to pick up on the configuration correctly.

Step 4: Creating the database directories

It’s important to do this step after associating the disks with their folders as creating them before doing this step is going to cause pain as you won’t be able to do so.

md C:\ExchDBs\DB01\DB01.db
md C:\ExchDBs\DB01\DB01.log
md C:\ExchDBs\DB02\DB02.db
md C:\ExchDBs\DB02\DB02.log
md C:\ExchDBs\DB03\DB03.db
md C:\ExchDBs\DB03\DB03.log
md C:\ExchDBs\DB04\DB04.db
md C:\ExchDBs\DB04\DB04.log

Step 5: Creating the mailbox databases

Finally! Our last step… With all the folders created and the disks associated with their appropriate folder(s) we can start creating our mailbox databases.

New-MailboxDatabase -Name DB01 -Server SFEX01 -LogFolderPath C:\ExchDBS\db01\db01.log -EdbFilePath C:\ExchDBs\db01\db01.db\db01.edb
New-MailboxDatabase -Name DB02 -Server SFEX01 -LogFolderPath C:\ExchDBS\db02\db02.log -EdbFilePath C:\ExchDBs\db02\db02.db\db02.edb
New-MailboxDatabase -Name DB03 -Server SFEX01 -LogFolderPath C:\ExchDBS\db03\db03.log -EdbFilePath C:\ExchDBs\db03\db03.db\db31.edb
New-MailboxDatabase -Name DB04 -Server SFEX01 -LogFolderPath C:\ExchDBS\db04\db04.log -EdbFilePath C:\ExchDBs\db04\db04.db\db04.edb

Step 6: Rinse and repeat!

Each of the steps 1 to 4 needs to be repeated on every node in the database availability group. That means creating all of the directories, identically, and associating the disks with the right folder(s).

Step 7: Creating the database copies

Once the nodes have been configured correctly we can create the copies (in my case it’s a 2 node database availability group)

Get-mailboxdatabase DB* -server SFEX01 | add-mailboxdatabasecopy –mailboxserver SFEX02

The databases will seed and should return a healthy state:

Get-mailboxdatabasecopystatus

Auto Reseed recovery

As configuring it is just not enough I went a step further and disconnected the disk mounted hosting DB01 and DB03 (Volume1). I did this through removing the disk from Hyper-v (they are attached as SCSI disks, allowing for hot swapping).

When running the “get-mailboxdatabasecopyStatus” cmdlet we can see that our database has gone in to “Failed and suspended” status.

clip_image003

Running “get-mailboxdatabase” we can add to that and see that our databases for the failed volume are now active on our second node.

clip_image005

After our workflow went through the motions we can see that it had assigned the spare disk and seeded the database.

clip_image007

This should get completed within 15-30 minutes of detecting the issue, saving the administrator a whole heap of trouble of having to worry about replacing disks, uptime, risks calculations etc… Theoretically you could get away with having only quarterly scheduled replacement times for disks and not get in to trouble for it. Obviously, that is not a recommendation to make (seriously!) but Auto Reseed is a nifty feature that can help prioritize work and keep our nights sleep to a full night.

author: marc dekeyser | Posted On Friday, September 5, 2014 10:35 AM | Comments (0)

Another Exchange 2013 CU6 issue: Exchange 2007 users cannot sync over Activesync


It seems CU6 is not bringing much luck if you still have Exchange 2007 in your environment. There is yet another issue with this update:

Log Name: Application
Source: MSExchange Common
Date: <edited out>
Event ID: 4999
Task Category: General
Level: Error
Keywords: Classic
User: N/A
Computer: <edited out>

Description:
Watson report about to be sent for process id: 16024, with parameters: E12, c-RTL-AMD64, 15.00.0995.029, w3wp#MSExchangeSyncAppPool, M.Exchange.AirSyncHandler, M.E.A.Handler.LegacyUserAllowedToSync, System.InvalidCastException, 9619, 15.00.0995.026.
ErrorReportingEnabled: True
 

 

For some reason the 2013 mailbox breaks the legacy users sync. Microsoft is aware and working on an interim update. Current workarounds are either forwarding all traffic directly to the Exchange 2007 CAS server or reverting back to a previous update

Update 9/9/2014: A fix is available from Microsoft:
http://support.microsoft.com/kb/2997847

 

author: marc dekeyser | Posted On Wednesday, September 3, 2014 8:06 PM | Comments (0)

Exchange 2013 CU6 Issue


There’s an issue with CU6 for Exchange 2013 in coexistence mode with exchange 2007. Quite specifically if you have it installed you might experience unexpected database failovers if you have a delegate on 2007 attempting to open a 2013 mailbox.

The issue is known and an interim update should be getting released soon. The current work around is to disable MAPI access to the Exchange 2013 server and use OWA until the update is available.

 

Update 9/9/2014: A fix is available from Microsoft:
http://support.microsoft.com/kb/2997209

author: marc dekeyser | Posted On Friday, August 29, 2014 6:46 PM | Comments (0)

Exchange updates released


Today we’ve witnessed yet another release cycle for Exchange 2013, 2010 as well as 2007.

  • Exchange Server 2007 SP3 RU14 (KB2936861)
  • Exchange Server 2010 SP3 RU7 (KB2961522)
  • Exchange Server 2013 CU6 (KB2961810)

 

Not only that but a number of blog posts specifying the improvements, most notably the increase in the Exchange 2013 Public folder supported folder limits (now a whopping 100 000!)

 

 

 

 

Remember, if you are in a hybrid scenario you’ll have to stay current with the update cycles so test these in your labs and start deploying!

author: marc dekeyser | Posted On Tuesday, August 26, 2014 12:59 PM | Comments (0)

Powershell: Install Exchange


Another exchange related function (who could guess!) I recently finished is this one. It will download the exchange setup file and install the role you require to be installed. You have to provide the role you want to install, the exchange version and the organization name. Works for 2010 and 2013. Might update this in the future to include RU installations.

author: marc dekeyser | Posted On Wednesday, December 18, 2013 12:22 PM | Comments (0)

Powershell: Prepare for an Exchange installation


I’m not taking full credit for this one. This script was originally made by someone else (and as soon as I find the link to that post I’ll put it up!) to prepare for Exchange 2010 on windows 2008 and 2008 R2.

I’ve updated it for server 2012 and Exchange 2013, converted it to a function and make you choose th

author: marc dekeyser | Posted On Wednesday, December 18, 2013 12:13 PM | Comments (0)

Verify connectivity to Exchange 2013


verifying connectivity from outlook to Exchange

author: marc dekeyser | Posted On Saturday, August 10, 2013 12:12 PM | Comments (0)