Wednesday, November 20, 2013

Arcserve Exchange 2003 mailbox restore - Invalid destination path specified. please make a selection or enter a valid path for destination \\machine\dbaxchg2

I've come across a recent problem when trying to restore an Exchange 2003 mailbox at brick level to an Exchange 2010 environment using Arcserve.  The initial concern here is restoring from an old tape which was taken using an old version of Arcserve from an Exchange environment which no longer existed.

In short, I couldn't restore to the Exchange 2010 server when trying to restore to an alternative location.  I was attempting to use Arcserve 16.5 to read the tape and restore the data to an Exchange 2010 server which has the Arcserve 16 agent installed.

When I initially tested the restore, I ran a merge on the tape in Arcserve so I could see the available sessions.  To restore the mailbox I selected the source mailbox by drilling down to individual mailbox, I set the destination as the Exchange 2010 server and selected a subfolder of the Administrators mailbox also at brick level.  The message I received at the point of submitting the job was "Invalid destination path specified. Please make a selection or enter a valid path for destination \\machine\dbaxchg2" at the point

What was clear is the Exchange instance identity was different.  It listed my Exchange 2010 server as \\servername\dbaexsis\ instead of \\servername\dbachg2\ which was included in the error message.

I spoke to CA who confirmed that you cannot restore an Exchange 2003 mailbox to Exchange 2010 and said you need to set-up an Exchange 2003 server to restore too.  Obviously it really wasn't possible to install an older version of Exchange into a domain which already had a higher version listed in the schema.

So…I created an all in one VM as a DC, DNS and Exchange server, set-up an Administrator mailbox.  I rolled out the 16.5 Exchange agent onto the server for restore purposes.  I had to manually add a host entry file into the Arcserve backup server; this was because I couldn't look up the server by name due to being a separate domain.  I entered the details of the AD server in Arcserve so it would then list my Exchange 2003 VM.  You enter this by right clicking on Exchange organisation in Arcserve.  Alternatively you can specify the server manually as a restore destination.

The same error occurred at the point of submitting the job though.  It was still clear that the Exchange identity was the issue as the new server was listed as \\servername\dbaexsis\.

To resolve the issue I had install the 11.5 SP4 Arcserve agent onto the Exchange 2003 server, run through the set-up of the brick level agent.  Once that was done, the server instance showed as \\servername\dbachg2\ and I could then restore the mailbox to the Exchange 2003 environment.  We're keeping the VM, should we need it again.

Ben Owens

Tuesday, November 12, 2013

Cannot remove Exchange 2007 active cluster (GxClusPlugIn)


We are coming towards the end of our Exchange upgrade project.  The best part about these projects is removing old services and getting rid of old hardware or freeing space on the SAN array.

Whilst trying to decommission our old Exchange 2007 CCR cluster, I received the following error message

Welcome to Microsoft Exchange Server 2007 Unattended Setup

Preparing Exchange Setup

The following server roles will be removed

Clustered Mailbox Server
Mailbox Role
Management Tools
Performing Microsoft Exchange Server Prerequisite Check

Clustered Mailbox Role Checks ......................... FAILED

The clustered mailbox server removal cannot continue: The specified clustered mailbox server exists, but its resource group contains at least one non-Exchange cluster resource (GxClusPlugIn (mail) (Instance001)).
Mailbox Role Checks ......................... COMPLETED

The Exchange Server Setup operation did not complete. For more information, visit and enter the Error ID.

Exchange Server setup encountered an error.

Ok, slightly cryptic. This is what I have completed up to this point

Removed Exchange from passive node
Evicted passive node from Cluster
Attempt to remove Exchange from active node with the following command /mode:uninstall /removeCMS /CMSName:mail

So....what the heck is GxClusPlugin? I start looking around "Programs and Features" and remember we use Galaxy Commvault for backups. A quick Google search confirms my theory.

So I remove the GXClusPlugin from add/remove programs.

Once I removed these items from the server, I tried to remove Exchange once again....Bingo it works!

Welcome to Microsoft Exchange Server 2007 Unattended Setup

Preparing Exchange Setup

The following server roles will be removed

Clustered Mailbox Server
Mailbox Role
Management Tools

Performing Microsoft Exchange Server Prerequisite Check

Clustered Mailbox Role Checks ......................... COMPLETED
Mailbox Role Checks ......................... COMPLETED

Configuring Microsoft Exchange Server

Clustered Mailbox Server ......................... COMPLETED
Mailbox Server Role ......................... COMPLETED
Exchange Management Tools ......................... COMPLETED
Removing Exchange Files ......................... COMPLETED

The Microsoft Exchange Server setup operation completed successfully.


Wednesday, October 09, 2013

Exchange 2010 Multi-Mailbox search fails over 100mb

Hi All

We are now coming to the end of our Exchange 2010 upgrade project and everything has gone pretty well so far.

From time to time our administrators are asked to complete searches in Exchange.  This could be for a number of reasons e.g Data Protection request or a disciplinary query.

In Exchange 2007 we used to complete multi mailbox searches using a third party tool which would use MAPI to search every users' mailbox for items which matched our search terms.  This process was extremely slow (90 hours to cover 2000 mailboxes) and not particular reliable.

In Exchange 2010 Microsoft released a feature called Multi-Mailbox search.  This allowed administrators to search all of the mailboxes using the search index which is built into Exchange.  This means the searches in Exchange 2010 are much much quicker.  It also means that this search will look at attachments which is excellent, although does create far more results to review.

MSExchange Link for more information on Multi-Mailbox search

We did hit one issue whilst testing this search after all of the mailboxes had been migrated.  The search would fail against a large number of mailboxes.  It would retry 6 times and eventually fail and move onto the next folder.  This was bad news as the rest of the folder might contain extremely important information.

  • Log Name:      Application
    Source:        MSExchange MailboxSearchDate:          10/2/2013 2:05:26 PMEvent ID:      21000Task Category: (21)Level:         ErrorKeywords:      ClassicUser:          N/AComputer:      Server01.domain.comDescription:Batch copy for MailboxSearch 'Test 2' on mailbox 'Joe Blogs' was retried '5' times but failed on all instances. The last exception encountered was: 'Microsoft.Exchange.Data.Storage.PartialCompletionException: Move/Copy messages failed. ---> Microsoft.Mapi.MapiExceptionPartialCompletion: MapiExceptionPartialCompletion: Unable to copy message(s). (hr=0x40680, ec=0)Diagnostic context:    Lid: 21750     Lid: 18122   StoreEc: 0x4DA        Lid: 25510     Lid: 25270   StoreEc: 0x4DA        Lid: 19830     Lid: 25290   StoreEc: 0x4DA        Lid: 55847   EMSMDBPOOL.EcPoolSessionDoRpc called [length=45]    Lid: 43559   EMSMDBPOOL.EcPoolSessionDoRpc returned [ec=0x0][length=118][latency=0]    Lid: 23226   --- ROP Parse Start ---    Lid: 31418   --- ROP Parse Done ---    Lid: 16465     Lid: 24657   StoreEc: 0x4DA       at Microsoft.Mapi.MapiExceptionHelper.ThrowIfErrorOrWarning(String message, Int32 hresult, Boolean allowWarnings, SafeExInterfaceHandle iUnknown, Exception innerException)   at Microsoft.Mapi.MapiUnk.ThrowIfErrorOrWarning(String message, Int32 hr)   at Microsoft.Mapi.MapiFolder.CopyMessages(CopyMessagesFlags flags, MapiFolder destFolder, Byte[][] entryIds)   at Microsoft.Exchange.Data.Storage.CoreFolder.<>c__DisplayClass24.<InternalMoveOrCopyItems>b__1e()   at Microsoft.Exchange.Data.Storage.CoreFolder.ExecuteMapiGroupOperationMethod(String operationAttempted, StoreObjectId[] sourceObjectIds, MapiGroupOperation mapiGroupOperationCall)   --- End of inner exception stack trace ---   at Microsoft.Exchange.Data.Storage.CoreFolder.ExecuteMapiGroupOperationMethod(String operationAttempted, StoreObjectId[] sourceObjectIds, MapiGroupOperation mapiGroupOperationCall)   at Microsoft.Exchange.Data.Storage.CoreFolder.ExecuteMapiGroupOperationInternal(StoreObjectId[] sourceObjectIds, MapiGroupOperationInternalMethod method)'.
    Source:        MSExchange MailboxSearch
    Date:          10/2/2013 2:05:26 PM
    Event ID:      21003
    Task Category: (21)
    Level:         Warning
    Keywords:      Classic
    User:          N/A
    Batch copy for MailboxSearch 'Test 2' on mailbox 'Joe Bloggs' failed on folder 'DPATEST' failed even after retries, and it will be skipped. The exception encountered was: 'Microsoft.Exchange.Data.Storage.PartialCompletionException: Move/Copy messages failed. ---> Microsoft.Mapi.MapiExceptionPartialCompletion: MapiExceptionPartialCompletion: Unable to copy message(s). (hr=0x40680, ec=0)
    Diagnostic context:
        Lid: 21750  
        Lid: 18122   StoreEc: 0x4DA     
        Lid: 25510  
        Lid: 25270   StoreEc: 0x4DA     
        Lid: 19830  
        Lid: 25290   StoreEc: 0x4DA     
        Lid: 55847   EMSMDBPOOL.EcPoolSessionDoRpc called [length=45]
        Lid: 43559   EMSMDBPOOL.EcPoolSessionDoRpc returned [ec=0x0][length=118][latency=0]
        Lid: 23226   --- ROP Parse Start ---
        Lid: 31418   --- ROP Parse Done ---
        Lid: 16465  
        Lid: 24657   StoreEc: 0x4DA     
       at Microsoft.Mapi.MapiExceptionHelper.ThrowIfErrorOrWarning(String message, Int32 hresult, Boolean allowWarnings, SafeExInterfaceHandle iUnknown, Exception innerException)
       at Microsoft.Mapi.MapiUnk.ThrowIfErrorOrWarning(String message, Int32 hr)
       at Microsoft.Mapi.MapiFolder.CopyMessages(CopyMessagesFlags flags, MapiFolder destFolder, Byte[][] entryIds)
       at Microsoft.Exchange.Data.Storage.CoreFolder.<>c__DisplayClass24.<InternalMoveOrCopyItems>b__1e()
       at Microsoft.Exchange.Data.Storage.CoreFolder.ExecuteMapiGroupOperationMethod(String operationAttempted, StoreObjectId[] sourceObjectIds, MapiGroupOperation mapiGroupOperationCall)
       --- End of inner exception stack trace ---
       at Microsoft.Exchange.Data.Storage.CoreFolder.ExecuteMapiGroupOperationMethod(String operationAttempted, StoreObjectId[] sourceObjectIds, MapiGroupOperation mapiGroupOperationCall)
       at Microsoft.Exchange.Data.Storage.CoreFolder.ExecuteMapiGroupOperationInternal(StoreObjectId[] sourceObjectIds, MapiGroupOperationInternalMethod method)'.
    Source:        MSExchange Mid-Tier Storage
    Date:          10/2/2013 2:05:33 PM
    Event ID:      3003
    Task Category: Discovery
    Level:         Error
    Keywords:      Classic
    User:          N/A
    Search 'SearchStatus\2e0e5de4-30a3-46db-8bff-0dd831a341c7' has following error:
    An error occurred when searching Joe Bloggs. The message is 'Move/Copy messages failed.'.

    Log Name:      Application
    Log Name:      Application

Initially we couldn't work out why this was occurring, my colleague (John Manley), looked into this further and worked out that the Discovery Search mailbox did not have items over 100mb.  This was a big find and once we had a common reason for the search failing it made the next steps easier.

Our company has a much smaller global transport limit configured in Exchange, but this is typically covering messages which were sent and received before this limit was imposed.

We tested the search with the Transport Limit off, but the same problem occurred.  We moved the Discovery Search mailbox to its own DB but the problem still occurred.

Eventually we found that although the MaxSendSize and MaxReceiveSize for every user in the Exchange Organisation was unlimited, the Discovery Search mailbox was set to 100mb.

We set this mailbox to be unlimited.  This change takes a number of hours to propagate through Exchange, but once replicated the searches begain to return results greater than 100mb......yay!

Hopefully this will save someone a few painstaking hours of trawling log files etc.


Thursday, October 03, 2013

Solarwinds - Error: "Network connection failed. HResult: No

During our Exchange 2010 upgrade project we noticed the monitoring on one server stopped working.

We use a product called Solarwinds, this uses a combination of Powershell, WMI and SNMP to monitor services on hardware and software from around the business.

We noticed that Solarwinds would return the following error message when polling this particular server

Network connection failed. HResult: No data to return. Error: Unable to connect to the specified computer, or the computer is offline.

After a quick search online we found the following Solarwinds KB

It recommends restarting the WMI service on the server. We completed this but the issue remained.

One of my learned colleagues kept searching and found that the Remote Regsitry service was set to Manual. He set it to Automatic and started the server.

Immediately the polling began to work!

So if you have this problem, check the Remote Registry service!


Cheers to John Manley for finding this!

Monday, September 23, 2013

Exchange 2010 Migration Script


I have been off the radar recently, knee deep in an Exchange 2007 to 2010 upgrade project.  It is something I have worked with a huge amount in the past, but I have really enjoyed getting to know how Exchange works and designing a cool system for my employers.

Exchange 2010 is such a great step forward.  We have moved all of the storage off the SAN and gone for 3 mail servers with DAS and JBOD.  So far it is working pretty well.

Anywho, we needed to migrate around 2000 mailboxes from 2007 to 2010.  In our old 2007 environment storage groups were created based on a users first intial of their first name e.g.  Storage Group S would hold me Sam Owens.  This was fine, but clearly there are lots of people whose name who begin with J and S.  You guessed it, the storage groups were massively diverse and difficult to keep on top of.

Also naming the storage groups in this way leads you to make assumptions.  I saw a number of users who were created and stored in the wrong group.  If you were troubleshooting an issue, this assumption would lead you down the wrong path and probably waste your time.

So, as part of the migration I wanted to level the databases as much as possible.  Now there are a few ways to do this.  First you could do it on amount of users, mailbox item count, or size.

I decided to go for the latter of these options and try to level the new DBs in 2010 by size.  To achieve this I created a custom powershell script.

What does it do?

It will load a list of usernames from a txt file.  For each user in this list, it checks all of the mailbox databases and sort them from smallest to largest.

It then submits a move-request for the smallest DB for the current user.  The try, catch, finally block will email the admin if there is an exception (users doesn't exist, permissions error etc.)

A do loop which starts which checks the move status, if an exception or error is found, the next mailbox move will be attempted.  If the move is under 50% complete it will sleep for 5 seconds and check again.

At the end it will email the administrator to let them know the last mailboxes are migrating.

I am sure that a powershell guru could clean this up, but it worked well for us.

Just change the $PSEmailServer to your SMTP relay address and the email addresses you want informed of progress.

$PSEmailServer = ""

$users = get-content "c:\temp\userlist.txt"

foreach ($item in $users) 
$MailDBs = @(get-MailboxDatabase -status | sort DatabaseSize | Select Name, DatabaseSize)

$goahead = 0
$exception = 0

New-MoveRequest -identity $item -TargetDatabase $MailDBs[0].Name -ErrorAction Stop
$exceptionmsg = $Error[0].Exception 
Send-MailMessage -From "[email protected]" -To "[email protected]" -Subject "Mailbox Migration" -Body "The mailbox $item failed due to error $Exceptionmsg"
 $exception = 1

$goahead = 0

$percent = get-MoveRequestStatistics -identity $item
$Status = get-MoveRequest -identity $item | select status 

if($exception -eq 1) {$goahead = 1}

if($status.status -eq "Failed") {$goahead = 1
Send-MailMessage -From "[email protected]" -To "[email protected]" -Subject "Mailbox Migration" -Body "The mailbox $item has failed to migrate"
if($percent.percentcomplete -gt 50){$goahead = 1}

Write-Host $item mailbox move is at $percent.percentcomplete %
sleep 5}

Until($goahead -eq 1)

Write-Host $item mailbox move has failed or is over 50% and next task will complete

Send-MailMessage -From "[email protected]" -To "[email protected]" -Subject "Mailbox Migration" -Body "The script on has finished, all mailboxes have migrated or are migrating"

Wednesday, July 03, 2013

Poor Performance of Citrix Receiver 3.4

My company are in the process of upgrading our Citrix XenApp image to include hotfixes and new versions of software for Flash, Reader and the Citrix Online plugin.

Currently we use plugin 12.1 which works pretty well overall.  The only real issue we see with this is connecting to other companies access gateway infrastructure if they are using Web Interface 5.3 using IE9.  We have a workaround for this, but fixing the problem would allow us to ditch a couple of servers.

So we planned to upgrade the plugin to the latest version which supports PNA.  Version 3.4 is the latest versions available to download from the Citrix website.

We installed it using the string I have discussed numerous times on this site.  This ensured that the receiver element was at a minimum.

We tested this for a while and noticed that performance to Citrix XenApp application based on XenApp 6.0 was great, but when connecting to our old farm which is based on Citrix Presentation Server 4.0 the performance was awful!  The screen refresh was incredibly slow, mouse clicks wouldn't register and overall it wasn't acceptable.

We decided to install the previous version (3.3) which is still available on the Citrix website.  This is unusual, typically software vendors remove old versions of software when a new release has arrived.  This could suggest there is a known issue with 3.4.

Once 3.3 was installed, performance to both our farms was perfect!

So if you have installed version 3.4 and are having performance problems check out a downgrade and let me know how you get on.


Friday, June 28, 2013

HDX mobile - XenDesktop 7

The curiously named XenDesktop 7 was released this week, the fact that XenDesktop 6 does not exist was an interesting twist.  This was named project Avalon and now includes XenApp as part of the same stack rather than a separate architecture.  The latest release of XenApp was 6.5 and maybe Citrix decided to bring this in-line.

Any way!  Citrix showed a demo of a flash offloading mechanism for iPad with XenDesktop 7 at Synergy and Citrix Mobility London.  This recognised that an iPad was being used and instead of just sending screenshots to the client it translates the video to H.264 and sends it to the iPad for local rendering. 

The results in the demo were amazing and I couldn't wait to get my mitts on the code to test.  Unfortunately this feature didn't exist in the Tech Preview so I had to wait patiently for the full release to come out.

Below is a comparison of XenApp 6.0 (2008 R2) and XenDesktop 7.0 (windows 8) watching a flash video of the Wimbledon coverage on the BBC sport website.  The result was pretty amazing.

XenApp 6.0

XenDesktop 7.0

As you can see the video performance in XenDesktop 7 to the iPad is far superior to previous version.  Apologies for the poor focus, maybe I will get AirServer working to get a better video at some point.  This rendering does use a fair amount of CPU on the backend side (in this environment Windows 8).  The iexplore.exe process takes around 25% of CPU and a new process called "Citrix Graphics" takes another 25%.  As this is the first release, hopefully Citrix can improve this performance overhead further down the line.

My thoughts immediately turn to other platforms, will Citrix use this mechanism to deliver rich Flash animation and videos to platforms which cannot use their native Flash redirection (Wyse ThinOS and other SoC platforms)?  Will they abandon native flash redirection altogether. 

Lets wait and see!


Friday, June 21, 2013

Citrix Mobility London 2013

Citrix announced at the start of the year that Synergy Europe would be held in London this year.  This was great news for Citrix enthusiasts who couldn't convince their respective bosses that expenses for flights and hotels to Barcelona would represent a good ROI.

Unfortunately Citrix cancelled this London event.  The reason is that Citrix wanted to host more events around Europe rather than having one flagship event.

I attended Citrix Mobility London 2013 yesterday at the Old Billingsgate Market.  The venue was pretty nice and just the right size for the amount of people who attended.  The overall theme was "Work is not a place".  This makes sense as their technologies are allowing people to be very mobile and complete their work in most environments.

The first session was run by Gordon Payne and demo god Brad Peterson.  They talked about Project Avalon and Merlin (XenDesktop 7 and desktop & Apps as a service).  This session was fantastic, having seen Brad in demo videos online before it was great to see him in action live.   

The most impressive demo was regarding HDX mobile.  Brad connected his iPad mini to his Windows 8 virtual machine using XD7 and starting watching a Flash video.  Normally this would be choppy as the server would need to render the content and pass the screenshots to the iPad screen.

Not now!  XD7 recognises that the iPad doesn't have a local flash player so it cannot use HDX flash acceleration.  It does have a local H.264 decoder locally, so Citrix converts the content to H.264 and fires down the raw commands to be rendered locally.  The result is amazing!!

Also Brad showed the ability of using a CAD/CAM type application on the iPad mini.  He opened photoshop and played with a lot of filters and the performance was phenomenal.  This news is not new, but seeing it for yourself is pretty nice.

This session also covered (as expected!) the mobility innovations that Citrix have been working hard on.  These include the purchase of zenprise (MDM) and introduction of Worx applications.  These work in the same way as Good or Divide to separate a work container for mail, contacts, calendar etc. from the users own data.  This is great for the BYOD explosion which I am assured will occur soon enough (/sarcasm).

Sharefile integration to on-premise network drives and sharepoint installations was demoed along with native file editing.  This is awesome, Good has these abilities but not without switching between 3 different applications.

There were other sessions throughout the day discussing connecting cloud platforms, general case studies and how to provision desktops and apps as a service.  These sessions were good but nothing in comparison to the first session.

Overall I had a great day, I met up with some old customers from my days at Citrix, had a lovely lunch (mini sausages and mash with a red onion chutney and lemon posset!)

The only criticisms I have of the day were the lack of technical deep dive, the uncomfortable seats and the annoying purple/pink lights which beamed into your eyes!!

I will leave you with a comment which was reiterated by Gordon Payne throughout the day is that IT is a team sport.  This was backed up by the announcement that Citrix and Cisco are working collaboratively and Cisco will be provided Netscaler in their Nexus series.

I hope Citrix continue the theme of holding more smaller events on different parts of their suite of products and hope they include more technical sessions also.


Wednesday, June 12, 2013

Configuring Blackberry Enterprise Server 5 with Exchange 2013

This is an overview on the pre-requisites, considerations and changes required in migrate from BES from working with Exchange 2010 over to Exchange 2013 with CU1.  The following was tested on a Windows 2003 mixed mode domain and forest functional level where BES Express had already been installed and configured.

Update....when I wrote this article originally it was aimed at updating a current Blackberry server to work with Exchange 2013.   If you want to migrate your mailboxes over a period of time rather than moving them all at once, you should look to setting a separate BES server which points to the Exchange 2013 server whilst leaving your current BES server pointing to Exchange 2010.  In order to migrate the users from one independent database to another to you can the Blackberry Transporter Tool.  I found this tool to be excellent as it didn't require any interaction on the BB phones themselves;  As far as the end user was concerned, business as usual.  Check out this link with regard to the BB Transport Tool - .

System Requirements

  • The migration is very much all or nothing for BB mailboxes.  The BES service account will only allow BES to serve devices where the user’s mailbox resides on the same mailbox server.  You cannot serve BB mailboxes on Exchange 2010 and Exchange 2013 at the same time.
  • If you wish to get BES Express serving two Exchange environments, such as 2010 and 2013, you could look to migrate users from one BES server to another using the BlackBerry Enterprise Transporter Tool.  This tool is excellent, allows you move user/BB devices from one BES server to another with no interaction required by the end user.
  • Timing your mailbox moves with the BES server changes and BESADMIN mailbox move is crucial. Out of hours will cause the least disruption and allow the most time for the mailbox moves to complete.

Migration Steps
  • Log onto the server as the BES service account, this typically BESADMIN.
  • If MAPI and CDO is not version 6.5.8309.0, uninstall from Add/Remove Programs, restart the server, Install the new version and restart the server once again.
  • Stop all the Blackberry services on your BES server.
  • Backup the current BlackberryAgent.exe, CalHelper.exe, CalHelperWS.exe and EWS.dll from \Program Files\Research In Motion\BlackBerry Enterprise Server\ and place to one side.
  • Update and overwrite BlackberryAgent.exe, CalHelper.exe, CalHelperWS.exe and EWS.dll from the from \\isls06\support\Server\Blackberry\Blackberry Enterprise Server Express 5.0.4 Update for Exchange 2013\BESUPDATE\
  • Open up regedit and navigate to key HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\.  Right click on Windows Messaging Subsystem and select New String Value.  Set the name as RPCHTTPProxyMap_BES and the string value as *=https:// .
  • Open up a CMD window as administrator.  Change your current directory to \Program Files\Research In Motion\BlackBerry Enterprise Server.  Type the below following command "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\regasm" /tlb ews.dll and press enter.  Next type CalHelperWS /regserver and press enter.
  • Go to https:///ecp, click on recipients>migration and move the BESADMIN mailbox over to a database on the Exchange 2013 server.
  • Once the mailbox move has completed, log into the mailbox in OWA to initialise the mailbox.
  • Run Blackberry Server Configuration, click on Blackberry Server tab and then select Edit Mapi Profile. Update the server name to point towards your new Exchange 2013 server.
  • From the BES installation media, navigate to the Tools directory in a CMD window and run the following command TraitTool.exe -global -trait EWSEnable -set true
  • Move over the mailboxes which have Blackberry devices associated from Exchange 2010 to Exchange 2013.
  • Restart the BES server.


Your BES user devices should then be able to sync and send/receive email.  In order to help troubleshoot problems you should reference the Application log on the BES server which should let you know about Blackberry Messaging Agent issues.  You can also use a program called IEMSTEST.exe which can be found in the \Program Files\Research In Motion\BlackBerry Enterprise Server\Utility\ directory.  You can use this program to report whether Blackberry can successfully access a mailbox using the MAPI configuration you have in place.

Drop a post in you have any questions.

Ben Owens

Monday, April 15, 2013

Upgrade Samsung Galaxy Ace 2 (I8160) to Android Jelly Bean

There has been talk of Samsung working on an Android build of Jelly Bean for the Samsung Galaxy Ace 2 (I8160) for quite some time.

A couple of leaked versions of the build have been available since the end of February and during March, but these contained various bugs as you might expect.

On April 2nd, an official release was available on and available for install using KIES or OTA, but only for Portuguese customers on the TMN network.  This was curious as this network didn't actually sell the phone.  It could be a way of getting the early adopters to test this version before the big operators like Telefonica and Vodafone build and release a version themselves.

There are many online guides on how to manually download the firmware and apply it to your device, but if you make the direct jump from Gingerbread (2.3) to Jelly Bean (4.1.2) you will likely have RAM issues.

The gingerbread versions only allocated around 500MB for RAM whereas Jelly Bean needs more than this.

The fix for this is the install one of the leaked versions first which include a PIT file.  This will effectively repartition the RAM allocation and provide the Jelly Bean OS with 624MB.  This amount of RAM is sufficient for Jelly Bean to run comfortably.

I will not bother reinventing the wheel, so to upgrade to Jelly Bean you will complete the following guides in order (I will take NO responsibility for any bricked phones etc.  If you are unfamiliar with this process read forum sites like XDA-Developers before going ahead with this procedure.)

To install the leaked version of Jelly Bean for Samsung Galaxy Ace 2 follow this guide

Once this has complete, follow this guide to install the official version of Jelly Bean

Once this is complete you should have a Jelly Bean (official TMN) Samsung Galaxy Ace 2 with 624MB RAM

You will notice the many applications which are not required and TMN branding.  Most of these are easy to remove with the exception of the boot screen animation which is a little more tricky but not impossible to remove.



I originally forgot to mention getting Root access after applying this firmware.  There are a number of method of doings this, but I followed guide below which seemed to be the simplest method and didn't require CWM.

Other links

Firmware guide for Samsung Devices

Location for downloading any Samsung firmware

Edit custom boot animations

Wednesday, February 13, 2013

Citrix Online Plugin 14

Hi All

One of my more popular posts discusses the ability to extract Citrix Online Plugin 13 from Citrix Receiver 3.2.  Whilst doing some testing with Receiver 3.3 it was apparent that Citrix have included Citrix Online Plugin 14 with 3.3 onwards.

Support Information from Receiver 3.3
<?xml version="1.0" encoding="UTF-8"?>
<Diagnostic version="1.0">
  <Receiver version="">
      <Name>Self-service Plug-in</Name>
      <Name>Online Plug-in</Name>
      <Name>Online Plug-in</Name>
    <Errors />

Remember, PNA has been removed from the standard Receiver download, you need to get a different version first.  This is discussed in a different blogpost which is below.

Once you have downloaded the correct Receiver executable you can just install the Online Plugin as before.

or if you just want the code, here it is

CitrixReceiverEnterprise.exe ADDLOCAL="ICA_Client,SSON,USB,DesktopViewer,Flash,PN_Agent,Vd3d" ENABLE_SSON="Yes"

I have sinced realised that Online Plugin 14 actually comes as part of Project Excalibur.  This is the project to fuse XenApp and XenDesktop together.  I can't see any notable differences but it is fair to say I haven't tested it thoroughly.



Friday, February 08, 2013

IE9 hang......with no window?

Hi there

Recently we have had an issue with our published XenApp 6 desktop platform not performing very well.  We looked into the normal metrics and we saw the CPU usage on particular servers could be high.

Initially we checked the process list and saw that iexplore.exe for one user would usually be the hungry process, taking lots of CPU.  This was originally associated with someone browsing to a site they shouldn't have.  The DFSS service which is on by default for Windows 2008 R2 RDS servers stopped this being a tragedy as other processes recevied CPU time when required, but there is only so far DFSS can go.

Some information on DFSS

On further inspection (actually calling the user to understand their experience) it was clear that no process window was open at all and that the iexplore.exe process had simply hung.  Ending the process had no effect on the user whatsoever.  Some of the users mentioned that IE had become unresponsive, but the window closed correctly.

Now this was difficult to track, I couldn't find a way to identify this hung process with RDS or XenApp.  I tried all the normal methods like ProcDump, WhatisHang, ProcessExplorer....but all of them didn't recognise the process was in a hung state.

Trying to reproduce the fault was very difficult, however not impossible.

Open 1st tab with
Open 2nd tab with the browser hang test from Microsoft

Click the button which says Click to Hang Temporarily

Click the red Close button in the top corner
Click button Close all tabs

What occurred in our environment was the iexplore.exe process remained after closing the window and would take lots of CPU processing.  Like this!

See iexplore.exe taking 20%.....but no IE9 window is open.

After some investigation I remebered that a group policy was created call Set Tab Proccess Growth.  The idea behind this registry key is to decrease the amount of processes loaded within an Internet Explorer window.  By default RDS sets this figure to 1, which means a new iexplore.exe process will open with every tab.  This is fine, it allows each tab to have it's own process.  If one of these hangs or crashes, the rest should be unaffected. 

The downside is the extra memory usage it creates e.g.  a 4 tab IE9 window uses 230MB, however if we change this value to 0 (1 iexplore.exe process for unlimited tabs) the memory usage is only about 170MB.  It doesn't sound a lot, but multiply that by 20 people and another 1GB of RAM is required on the server.

In our environment it was set to 0 to decrease the memory overhead.

Changing this value back to default (1) solves this issue in my repro environment.  We are testing this across the board but I am confident that this will solve the problem.

This setting can be change in Group Policy under

Computer configuration > Windows Components > Internet Explorer > Set tab process Growth (not configued or 1)

User configuration > Windows Components > Internet Explorer > Set tab process Growth (not configured or 1)

Or in registry by editing keys

HKCU\Software\Microsoft\Internet Explorer\Main\  DWORD value TabProcGrowth = 1
HKLM\Software\Microsoft\Internet Explorer\Main\ DWORD value TabProcGrowth = 1

More details on this feature can be found here.

My thought is that this feature does not play nicely with IE9 hang resistance feature at all.  I do not have definitive proof of this, but this GPO never had a problem with IE8 previously.  I suspect that as each tab shares the main iexplore.exe process, it cannot resist the hang as designed. 

Some more details on IE9 Hang Resistance below.


Tuesday, January 08, 2013

Citrix XenApp Load 100000


Recently we upgraded Citrix User Profile Manager on our XenApp server from 3.2 to 4.1.2.  After a reboot nobody could login correctly.

I ran QFARM /LOAD and saw that the load was 10000.  Clearly this means the server is fully utilised.  The load evaluator in use reports full at either Memory 90%, CPU 90% or user load of 30.  None of these thresholds were being breached.

I changed the load evaluator in Citrix to the default (user load =100) and then people could login again, but changing the load evaluator back to the custom defined one would make the load 10000.

I logged onto the VM and tried to run performance monitor and got the following error message

This proves that the Data Collector was unable to check the memory usage on the server and therefore set the load at the maximum of 10000.

I open CMD as administrator and ran the following command on the server

lodctr /R

more information on this command can be found at the following Microsoft site

This rebuilt the counters.  Opening performance monitor would no longer show the error.  After a reboot the value for QFARM /LOAD was normal again.

It is a bit of an odd one, but useful to note!