Sunday, February 20, 2011

More Zimbra 6 to Exchange 2010 / Cloud

So I promised you could see the before and after of contacts and tasks. Here they are.

Migrates to Exchange like this:
Tasks come over with very few problems. What in Zimbra looks like this
Becomes this in Live @ Edu. It could just as easily be in Outlook -- but we're grooving on someone else keeping an Exchange server running for a change.
One thing to keep in mind: Migrating to Live @ Edu is slower than migrating into on-premises Exchange (by a factor of about 7). We're pretty sure it's going to be that way for the foreseeable future.





Friday, February 18, 2011

Zimbra 6 to Exchange 2010 calendar migration

It's been a year since Yahoo sold Zimbra to VMware (which reminded me of some of the scenes from prison movies involving cigarettes).

And now is when people are starting to contact us en masse asking if we can move their calendars from Zimbra 6 to Exchange 2010.

Yes, we can.

The way we do it is really convenient. We open the mySQL database and read all the calendar, contact, and task data directly and insert it into Exchange using our usual, field-proven process.
You heard that right: NO user intervention, one spot for an Admin to pull the data and insert the data.
So let's take a look at the BEFORE and AFTER.
Jimi Hendrix's calendar on Zimbra 6.0.7 looks like this:

After extraction and insertion into Live @ Edu it looks as we would expect:

Note, the tentative meeting is tentative, the accepted is accepted, and the declined doesn't appear because that's the way Exchange works. We keep all recurrences and the meetings are completely LIVE on live @ Edu.
But wait -- there's more.
Contacts and Tasks come along for the ride too.
But we'll show you those in a separate posting.

Friday, January 28, 2011

Color-coding your inserted calendar data

Something our QA department has been doing for almost a year now has suddenly struck me as a really really good idea suitable for blogging.
Did you know it's possible to color-code your inserted calendar data?
What amazes me is how simple it is.
In the following example we've inserted several times (with a minimal data set) adding additional digits to our usual Category string:

All you need do on an individual basis is Manage the categories (seen here in OWA our client of choice on the Cloud).

You can also use Group Policy to propagate this for everyone if that helps you out. See Configure Categories in Outlook 2007.

Wednesday, January 19, 2011

More on Live @ Edu vs. On-Premises Exchange Speed Differential

Live@EDU

On-Premises

Object Count

7675

7585

Total Time (seconds)

4193.25

597.01

Total Time (minutes)

69.89

9.95

Average Insertion time

0.55

0.08

Mode

0.41

0.05

Median

0.44

0.05

Max

9.29

3.5

Min

0.10

0.03


So our latest tests on inserting calendar items into Live@Edu vs. inserting into on-premises Exchange gives us a 7:1 time ratio.
That is: it is currently about seven times faster to migrate calendar data into your own Exchange server than it is to migrate it to Live@Edu. We've seen the same data set go far longer, but this is a good estimate to use in your planning purposes. Also yesterday another real-world site reported a figure similar to the one we found.
Just so you know.

Friday, January 07, 2011

Oracle Calendar to Exchange using UNIICAL / ICS formats

Yep. We have a version in-house we're using now -- so if any of you out there want to use ICS files to migrate to Exchange and are willing to be informed consent test sites drop us a line.
Oh yeah, same deal: we re-create meetings with responses and have put in tech to turn RDATE strings into real recurrence patterns (your Outlook client will thank you for that).

Sunday, January 02, 2011

iPhone Alarm Glitch Greets New Year

The title says it all, though the New York Times has some more information.
Apple of course offers no explanation because as all Apple employees know, Apple can do no possible wrong.

Monday, December 27, 2010

Oracle Calendar / Exchange Free/Busy

An odd combination today here in the Boston-Cambridge area. A request last week for Free/Busy interchange between OCS and Exchange, and a blizzard put one of us into the Zen-like frame of mind to come up with solutions that do not involve lots of custom programming.

If any sites currently in an OCS to Exchange migration with us want to try out Outlook based Free/Busy queries into Oracle Calendar, please drop your Sumatra contact a line.

We are looking for "informed consent experimental subjects."

Monday, December 20, 2010

Quotas and Live @ Edu Migrations

The calendar elves were busy this weekend migrating TWO former Oracle Calendar Server sites into Exchange in this Cloud thing.


One went into BPOS (one of the dumbest acronyms EVER!) which is in reality Exchange 2007, which does NOT have submission quotas. (So now you know where this is heading)


The other site went into Live @ Edu which, despite their having had their submission quotas removed for purposes of migration, found the quotas very much in place.


So this is about what you'll see if one of your users hits submission quota in a migration.


In this example we kept inserting meetings until we hit quota. So one went in fine (you see the guest list and responses) and one did NOT (it says "Invitations haven't been sent for this meeting").

Once your submission quota rolls over (and when is that exactly?) you can send this and it'll go out like a regular meeting invitation. Not fatal in a migration, but we agree, it is darned annoying.

Thursday, December 09, 2010

EWS, Outlook Live, Exchange Release Levels, OWA, and WTF?

Come with us on a journey to mystery.

The subject started out as Holidays but morphed into the more general one of All Day Events (ADEs).

Using EWS, it is possible to insert ADEs and we do LOTS of them in the course of a migration.
BUT, some combination of EWS, Exchange release levels, and OWA are currently giving our usually stable process conniption fits.

Start off with inserting an ADE under either Exchange 2007 rules (with deprecated Time Zone, rules, but bear with us for a moment here) into Live@Edu (not that we have a client trying to do this exactly now or anything like that).

In Outlook attached to Live @ Edu they will appear correctly (as below) if you specify Exchange 2007 SP1. But it will appear as a two day banner if you specify Exchange 2010.

JUST to keep thing really really interesting, viewing the EXACT SAME ADEs in OWA shows the 2007 SP1-defined ADE showing up correctly, and the 2010-defined ADE spanning THREE days:

If your head does not hurt you have not been paying attention.
SO, for the time being while running a holiday insertion with our tools, specify Exchange 2007 SP1. Everything will be hunky-dory.

Don't believe us? Here's the VB .net code (we use Exchange Web Services Managed API v1.1. )

Public Function ewsBuildAllDayEvent() As String

Try

Dim myUserEmail As String = "user10@test.com"
Dim myEWSURL As String = "https://sn1prd0202.outlook.com/EWS/Exchange.asmx"
Dim myExchangeVersion As ExchangeVersion = ExchangeVersion.Exchange2007_SP1
Dim myLogon As String = "admin@test.com"
Dim myPassword As String = "Gu3ssWh0"
'create Service
service = New ExchangeService(myExchangeVersion)
service.Url() = New Uri(myEWSURL)
service.Credentials = New WebCredentials(myLogon, myPassword)
service.ImpersonatedUserId = New ImpersonatedUserId(ConnectingIdType.SmtpAddress, myUserEmail)
'build appointment
Dim appointment = New Microsoft.Exchange.WebServices.Data.Appointment(service)
appointment.subject = "MyTestADE"
appointment.Start = CDate(Now.ToShortDateString)
appointment.End = CDate(DateAdd(DateInterval.Day, 1, Now))
If myExchangeVersion = ExchangeVersion.Exchange2007_SP1 Then
appointment.StartTimeZone = System.TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time")
Else
appointment.StartTimeZone = System.TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time")
appointment.EndTimeZone = System.TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time")
End If
appointment.LegacyFreeBusyStatus = LegacyFreeBusyStatus.Busy
appointment.isalldayevent = True
appointment.Save(SendInvitationsMode.SendToNone)
Return "OK"

Catch ex As Exception
Return ("ERROR: " & ex.Message)
End Try

End Function

Monday, December 06, 2010

Migrating Email? Check out this blog

Frequently we get asked about email.
We do not touch email since we're calendaring guys and enough other people handle email.
But when we see a site that specializes in it and conceptualizes migrations in ways that we ourselves espouse, we just need to let you know.
Such a site is MigrationWiz.
I hate the name (any male who has been a teenager in the USA smirks when the word "wiz" shows up anywhere), but their analyses of email migration are right on.

Thursday, December 02, 2010

Asynchronous Programming

Earlier this week I went to a Microsoft Firestarter Event on Windows Azure. The event was run by a Microsoft Developer Evangelist Jim O'Neil. Jim's talks always inspire me to tweak Sumatra's code bases, ensuring we take advantage of as much of the emerging Microsoft technology as practical. One segment of the day talked about patterns and practices, specifically, the use of asynchronous communication when interacting with cloud (and the web).

They told us about a new Asynchronous Programming module (http://msdn.microsoft.com/en-us/vstudio/async.aspx.) I'm very interested in this because many customers in Sumatra's Education market segment are migrating to Exchange in the Cloud -- Microsoft's
Live@EDU. When inserting lots of data, the variability of "network speed" makes insertion times difficult to predict. We explored changing the Sumatra code to run on multiple threads, but concluded it added more complexity to the code and didn't address the underlying bottleneck: network latency.

What I find interesting about this CTP is that the new async calls have the potential to work around latency issues without increasing code complexity. We'll be testing this in our labs in the next few weeks!

Thursday, November 18, 2010

Exchange 2010 SP1 Managed API 1.1 released

For the last two weeks I've been puzzled why the installation of the EWS Managed API SDK v1.1 does not install the API library. Turns out it was released today (two weeks after the SDK was released.) Click here for the link to the release blog posting or to the download page.

Friday, November 12, 2010

Exchange 2010 Mapping Users - A Brief Guide

Compared to taking data from a legacy system and putting it into Exchange, you'd think user mapping between the two systems would be pretty easy. Usually it is straight-forward, just incredibly tedious and time-consuming (the occasional input error does not help much).
This is a brief guide to user mapping.

Let's say we have three users with the following addresses on Oracle Calendar Server and Exchange:


We design the process so that by the time you've created your intermediate database you should already have the email addresses for these users in the Users table.

So the brief rules are:
  • Do NOTHING for OCS email addresses that are the same as in Exchange
  • Add entries to the User_Adjusted_Maps table to map OCS accounts that have different Exhcange addresses
  • Run the following queries Q_Build_CustIDs_From_MMUserids, Q_Build_CustIDs_AdjustMMUsersids, Q_1_Make_User_Map, FInd duplicates for MM_Exchange_User_Map
  • Look at the results in MM_Exchange_User_Map
  • Repeat until all of your accounts are done.
The mapping table will look like this when you're done.

A few other things to keep in mind.
If Oracle Calendar Server IDs are THE SAME as Exchange:

If Oracle Calendar Server IDs are DIFFERENT from Exchange:

  • MAP the differences (Tables)
  • Build the mapping table
  • Overlay the changes

Once you've got all your users mapped you can just edit the mapping table. But please exercise proper handling and care with it. You do not want to be wondering which version to use when starting yoru migration at midnight on a Friday.

Wednesday, November 10, 2010

UNICPOUTU unreliable in some Oracle Calendar Environments

Let us let you in on one of the open secrets of calendar migration: It's not a wise investment to put a lot of code into pulling data OUT of a legacy system. Better to use one of the utilities the legacy system uses for purposes of upgrading servers or moving users between servers. Less prone to error, it uses the legacy's capability against itself, and it allows a migrator to put their effort into getting the data INTO the target system.

Sometimes though this gets more difficult when there's bugs in the legacy system.
One of our clients (shout out to Matt in North Carolina!), discovered some data missing from the UNICPOUTU export in their Solaris environment.

Quel horreur!

It's been mentioned a little on the OCS boards, but nobody is making a big deal about it and it is unlikely Oracle is going to fix it to make breaking your OCS habit any easier.

Thus far we've seen this ONLY with OCS 10.x on Solaris (all the 9.0.4 migration systems look absolutely peachy and we've been doing 10.x for years with no issues). We suspect it's with the very latest and is more prone to happen when the export is constrained by date (so export everything and let us segment it in our tools).

So as always, keep an eye out.

Monday, November 08, 2010

Putting Holidays into Live @ Edu Server-Side

We tested our holiday insertion code on Live @ Edu and a list of holidays like this:






Note that this is an All Day Event (and you can specify if the time is to be shown BUSY or FREE):

While this is an appointment we've put into every calendar without any muss or fuss. You could use the same technology to do that for anything else you want (Shareholder's Meetings, Fire Drills, as your business and imagination dictate).

Any of you who have been through a migration with us know why we keep the "(Migrated)" tags, but you can decide to not use them.
This is scriptable so you can create holidays as you provision users if you have an automated system for so doing.


A few other things to keep in mind:


  • This runs as an EWS application from a 32-bit workstation. So all your credentials are completely under your control. If there's demand to run this as an online service we'll listen.

  • We take the default time zone of your server for all insertions. If you have users in multiple time zones and want to do this contact us -- that would be a different version.

  • You can specify a single user, a list of users, or an LDAP query to handle your insertion.


Friday, November 05, 2010

Handling Conference Rooms in a migration into Exchange


Resources are kind of a pain in the neck in a migration. You want them to take care of themselves when you're done migrating. But to get your data from your old system into your new system with the same state, you're going to need to treat them with kid gloves and lots of TLC.

So we have the following guidelines:

Put all resources in one or more OUs for ease of administration.
PRIOR to migration:

  • ENABLE all of the resource accounts via Active Directory Users and Computers
  • HIDE the accounts from the GAL
  • Configure resources NOT to AutoAccept meetings

AFTER the migration

  • Disable the accounts and add them to the GAL
  • Configure the resource for AutoAccept (if you desire first-come-first-served functionality) or
  • Use group-policy settings for managed rooms and resources

Wednesday, November 03, 2010

Exchange 2010 Permissions for Migration


Impersonation has nothing to do with Frank Gorshin or Rich Little.
It's the permission you need to give your service account to execute a full-state calendar migration.

Create a managementRoleAssignment:

new-ManagementRoleAssignment

-Name:_suImp8

-Role:ApplicationImpersonation

-User:'mysvcaccount@mydomain.com'

If you have to ask where you're doing this, please go to your Exchange Administrator.

Sunday, October 31, 2010

Exchange 2010 - Throttling During a Migration

We're all for progress as much as the next techno uber-geeks, even though sometimes it bites/kicks/stabs us in the neck/butt/back. Such is the case with throttling in Exchange 2010.

So -- when doing a migration of about any non-trivial size into 2010 you're going to have to set a new throttling policy here called "SuPolicy":

New-ThrottlingPolicy SuPolicy

Set-ThrottlingPolicy SuPolicy -RCAMaxConcurrency $null

-RCAPercentTimeInAD $null

-RCAPercentTimeInCAS $null

-RCAPercentTimeInMailboxRPC $null

-EWSMaxConcurrency $null

-EWSPercentTimeInAD $null

-EWSPercentTimeInCAS $null

-EWSPercentTimeInMailboxRPC $null

-EWSMaxSubscriptions $null

-EWSFastSearchTimeoutInSeconds $null

-EWSFindCountLimit $null

Set-Mailbox myserviceaccount@mydomain.com -ThrottlingPolicy SuPolicy

Wednesday, October 20, 2010

ResourceWatch Online Capability Beta

Anybody who has done a migration with us has gotten one of our "Shock and Awe" reports showing what your calendar use looks like.
No surprise we've been developing this capability.
If you go to our on-line beta, you'll be able to generate a really cool report on your conference room or resource use.
We've used it on ICS format files from Exchange 'natch, but Oracle Calendar seems to work just as well. We're using Microsoft SilverLight, so working with anything other than Internet Explorer we do not guarantee, but if it works for you just let us know.