Feb 13 2017

This operation requires a unique source object, but multiple objects have been found. Please remove any wildcard characters and check the data source for corruption.

You receive an error as per below when trying to restore a user’s mailbox in Exchange from a Recovery Database:

This operation requires a unique source object, but multiple objects have been found. Please remove any wildcard characters and check the data source for corruption.

I’m currently busy with a hand over at work and the engineer that will be taking over from me ran into this error when trying to restore a user’s mailbox. The Recovery Database has been created and the data has been restored to the database. The database is mounted and he was trying to run the below from the Exchange management Shell:

Restore-Mailbox -Identity “UserSurname, UserName” -RecoveryDatabase RecoveryDB -RecoveryMailbox “UserSurname, UserName” -TargetFolder RestoredEmail

He then received the error as another user in the restored database has the same Name and Surname. To get around that you need to do the following:

  1. Open the Exchange management Shell.
  2. Run: Get-MailboxDatabase -id RecoveryDatabaseName | Get-MailboxStatistics | FL > pathToYourTextFile.txt (This will dump the data in a list format)
  3. Hit Enter to export the Mailbox Statistics results to the text file.
  4. Open the text file and hit ctrl+F to open the search function.
  5. Search for the user you are trying to restore.
  6. Make a note of the user’s MailboxGUID as you will use the MailboxGUID in your restore cmdlet.
  7. Run: Restore-Mailbox -Identity “The Mailbox GUID You got from step 6” -RecoveryDatabase RecoveryDB -RecoveryMailbox “UserSurname, UserName” -TargetFolder RestoredEmail

Your restore will now copy the user’s data from the Recovery Database to the mailbox of the user as specified in your cmdlet.


Nov 14 2016

VB.Net application unable to connect to some Exchange 2010 mailboxes

We had an interesting issue last week where a Visual Basic .Net application could connect to some mailboxes but could not connect to other mailboxes on Exchange 2010. The application uses MAPI to connect to the mailboxes.

We were however able to access the affected mailboxes using Outlook and with the MFCMAPI tool from the application server. We moved the affected mailboxes to other servers and databases but the application could still not connect to the affected mailboxes. We then added our CAS Array name and IP in the application server’s host file and checked the Exchange RCA logs.

We could not see any connections from the application server to the affected mailboxes but could see connections to the working mailboxes in the RCA logs.

The error from the application were as below but note that it was misleading as it stated it authenticated, connected but could not expand the mailbox store.

ProcessMails() LogonExchangeMailbox Success
———————————————————————————
Date Time : 2016-11-07 06:30:17
Error : Error in IMAPISession::OpenMsgStore: MAPI_E_FAILONEPROVIDER
ulVersion: 0
Error: The information store could not be opened.
Component: MAPI 1.0
ulLowLevelError: 0
ulContext: 649
Source : at Microsoft.VisualBasic.CompilerServices.LateBinding.LateGet(Object o, Type objType, String name, Object[] args, String[] paramnames, Boolean[] CopyBack)
at Microsoft.VisualBasic.CompilerServices.NewLateBinding.LateGet(Object Instance, Type Type, String MemberName, Object[] Arguments, String[] ArgumentNames, Type[] TypeArguments, Boolean[] CopyBack)
at MailReader.Form1.ProcessMails(String sToDoFolder, String sDuplicateToDoFolder, String sTiffFolder, String sDuplicateTiffFolder, String sExchangeServer, String sInboxUser, String sInboxName, Int32 maxItems, Int32 branchRef)

We then resolved the issue by doing the following:

  • Opened Exchange Management Shell
  • Ran this cmdlet against a working mailbox: get-mailbox mailboxSMTPaddress@domain.com |fl *legacy*
  • Made a note of the output
  • Ran the above cmdlet against a non working mailbox and compared the outputs.

The output of the working mailbox:

ServerLegacyDN : /o=yourdomain/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Configuration/cn=Servers/cn=MailboxServerName
LegacyExchangeDN : /o=yourdomain/ou=exchange administrative group (fydibohf23spdlt)/cn=recipients/cn=MailboxAlias

The output of the non working mailboxes:

ServerLegacyDN : /o=yourdomain/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Configuration/cn=Servers/cn=MialboxServerName
LegacyExchangeDN : /o=yourdomain/ou=SomeOU/cn=recipients/cn=MailboxAlias

The fix:

We then used AD Attribute Editor to change the LegacyExchangeDN on non working mailboxes (LegacyExchangeDN : /o=yourdomain/ou=SomeOU/cn=recipients/cn=MailboxAlias) to reflect the working mailboxes’ LegacyExchangeDN (LegacyExchangeDN : /o=yourdomain/ou=SomeOU/cn=recipients/cn=MailboxAlias)

Waited for replication and the application could once again access all the required mailboxes.


Oct 21 2016

Logging in to a shared mailbox using IMAP on Exchange 2010 using Outlook or a 3rd party application

I keep forgetting the correct way in which the username needs to be used when using IMAP to logon with your account to a shared mailbox.

To logon to a shared mailbox you need to provide the domain first then / and then the account you want to authenticate with and another / then the shared mailbox you are trying to access. Below is an example.

domain/accountThatNeedsToauthenticate/AliasOfTheSharedMailboxYouAreTryingToAccess


Sep 13 2016

Error due to mismatch of GUID: Recipient “NameOfRecipient” has mismatched Archive GUID

You receive the error “Recipient “NameOfRecipient” has mismatched Archive GUID” when you try and off board a mailbox from Exchange Online to on premises Exchange.

Follow the below steps o resolve the issue and migrate the mailbox back to the on premises Exchange environment:

  1. Logon to Exchange Online using Powershell.
  2. Run: get-mailbox user | fl *archiveguid*
  3. Make a note of the GUID
  4. Open Exchange Management Shell on premises
  5. Run: Get-RemoteMailbox User | fl *archiveguid*
  6. You should see that the GUID on prem is different to the GUID from Exchange Online
  7. To resolve, in Exchange Management Shell on prem run: Set-RemoteMailbox User -ArchiveGuid “GUID you got from Exchange Online”

The above should work without any issues but we had an issue where the mailbox in question was migrated from Exchange 2007, we want to migrate it back to an Exchange 2010 DAG and received the below error when trying to set the GUID as per step 7 above:

Property Archive GUID can’t be set on on this object because it requires the object to have version 0.10 (14.0.100.0) or later. The object’s current version is 0.1 (8.0.535.0)

To resolve the above error follow the below steps:

  1. Open Active Directory Users and Computers
  2. Make sure you choose view -> Advanced Features
  3. Browse to the User, right click on the user and choose Properties
  4. Click on the Attribute Editor Tab
  5. Look for MSExchVersion and open it
  6. We had to change the version to Exchange 2010 from 2007. Thus change the data to 44220983382016
  7. Click OK
  8. Wait for replication and run the Set-RemoteMailbox User -ArchiveGuid “GUID you got from Exchange Online” again from Exchange Management Shell on prem.
  9. Wait for replication
  10. Run get-mailbox User | fl *archiveguid* and make sure the GUID has now been changed to the GUID you found in Exchange Online
  11. Proceed to migrate the mailbox to on prem after the GUID has been set

The Exchange Version AD Attributes are:

Exchange 2010: 44220983382016

Exchange 2007: 4535486012416

We used the below 2 web articles / blogs which assisted us greatly. Please check out these articles as well as they were the sources used to resolve the above mentioned issues:

Paul Cunningham’s ExchangeServerPro.com website:

The Article which describes how to get the Archive GUID and set it on prem.

Technotip blog.

Here we found the attribute values for the Exchange versions.

 

 


Sep 7 2016

There is currently no route to the distribution group expansion server

You see the error “There is currently no route to the distribution group expansion server” in a stuck message from your Exchange Hub Transport server submission queue.

To resolve this:

  1. Make note of the distribution group in the recipient information tab.
  2. Search for the Distribution Group in Exchange Management Console
  3. Right click on the group and choose properties
  4. Go to the Advanced tab
  5. Untick the box next to “Set expansion server”

You might have to restart the Hub Transport or SMTP service depending on your Exchange version.

We found this happened because the Expansion server was removed from the environment and not accessible. Another cause could also be the deletion of a routing group in Exchange 2003.

 


Dec 17 2015

Provisioning Layer initialization failed error when running a cmdlet in Exchange Management Shell

I’ve had the below error a few times this year when trying to open the Exchange Management Shell or running a cmdlet.

ScriptingAgentInitializationFailed

To get this working browse to another Exchange 2010 server and copy the ScriptingAgentConfig.xml file from the working server and paste it in the same directory (as per below) on the non-working server.

The file can be found under your Exchange Installation by default c:\Program Files\Microsoft\Exchange Server\V14\Bin\CmdletExtensionAgents\


Jan 8 2015

Unable to connect a disconnected mailbox – User not found error when trying to connect a mailbox to a user in Exchange

We’ve had a few instances where we need to disconnect a mailbox and reconnect it to a new user account for a user. This should be easy right? Well not always.

It’s happened more than once where we try to use the Exchange Management Console to connect the mailbox to the user account but Exchange can’t find the user account. Have a look in Active Directory and the account shows up. You then try to connect the mailbox to the user account using the Exchange Management Shell with the same results. user not found.

See below on how to get this issue resolved:

1. Open adsiedit.msc (start, run and type adsiedit.msc)
2. Search for the user
3. Open the properties for the user you need to connect the mailbox to
4. Search for the msExchRecipientTypeDetails property
5. For users, change the value from 1 to 0

Wait for replication and then reconnect the mailbox to the user account.

Thanks goes to our colleague Waleed for sharing this with us.

 


Jan 8 2015

E-Mail delivers to Deleted Items folder

We had a shared mailbox where all the mail sent to the mailbox delivered to the deleted items folder. To resolve this do the following:

1. Open Exchange Management Shell
2. Type Get-CalendarProcessing “mailboxname” | fl and press enter
3. If AutomateProcessing shows AutoAccept in the returned results then run the next cmdlet
4. Set-CalendarProcessing “mailboxname” -automateprocessing none
5. Wait for replication and check that Get-CalendarProcessing “mailboxname” | fl shows that it’s set to :none

We verified after running the above that mail delivered to the mailbox deliveres to the Inbox as expected.

 

 


Jul 26 2013

Meeting requests sent to a room mailbox, replaces the Subject, with the Senders name

We received a call today where a meeting request sent to a Room mailbox shows the meeting organiser’s name in the subject line.
This can be rectified by running the following:

Exchange 2010/2013:

Set-CalendarProcessing -identity “meeting room name” -DeleteComments $true -AddOrganizerToSubject $true -DeleteAttachments $true -DeleteSubject $true

Exchange 2007:

set-mailboxcalendarsettings -identity “meeting room name” -deletesubject $false -addorganizertosubject $false

Hope this makes your life a bit easier.


May 30 2013

When installing Exchange 2010 you receive “The start mode for the Net. TCP Port Sharing service must be set to Automatic before Setup can continue”

During my lab testing and installing Exchange Server 2010 on Windows Server 2008 R2 I keep receiving this pre-requisite that fails.

The start mode for the Net. TCP Port Sharing service must be set to Automatic before Setup can continue.

As far as I know (I might be wrong) this pre-requisite only fails the readiness check on Windows Server 2008 R2. In order to set the Net.TCP Port Sharing Service to Automatic at start-up do the following:

  1. Open Power Shell on the Windows 2008 R2 Server that you are trying to install Exchange 2010.
  2. Type: Set-Service NetTcpPortSharing -StartupType Automatic
  3. Hit enter.
  4. Run the Exchange installation wizard again and you should be good to go.

A good idea is to run the cmdlts on each of the Exchange server roles before you start installing Exchange 2010 as per this Microsoft article.