Showing posts with label Exchange 2013. Show all posts
Showing posts with label Exchange 2013. Show all posts

Tuesday, January 26, 2016

Microsoft Exchange to Office 365 Calendar Migration Preserving Meetings as Meetings

Microsoft does not offer full-state calendar migrations from Exchange to Office 365.

Your meetings will all become appointments.  It's like printing your calendars from one Exchange system into office 365.

If you're a small site this is no big deal and easily managed.

If you're an enterprise where people live in meetings and conference room and resource allocation is crucial this can be a huge hassle which can delay your migration to the cloud.

If you use our technology your meetings will stay meetings. Problem solved.

And this shows synchronization working, again with full-state meeting migration, from one Exchange environment to another:
Since we added sync for meetings we also did it for tasks and contacts

And of course this is fully-mappable and includes our UNDO capability for easy testing and disaster recovery.

Why don't we do email as well?  Because imapsync does a superlative job for 100 Euros for any number of seats!  We cannot beat that.  Actually I do not think anyone can beat that.

Given the popularity of our MDaemon to Exchange and Zimbra to Office 365 email migration guides we're seriously considering an Exchange to Exchange email migration guide for imapsync.  Stay tuned.


If you do not need or want all that utility we have an option that runs faster but still tells you who is supposed to be in your meetings.  This is the information no one else provides you.

If you need Microsoft Exchange to Microsoft Office 365 calendar migration, feel free to contact us.

Thursday, November 05, 2015

#MDaemon to @Office365 International Migrations - Character Sets Deuxième partie

FOLDER NAMES!

Dagnabbit -- we forgot folder names in UTF-8.

This was one where the file system was replacing the “Tâches“ with “T&AOI-ches”

So we updated the code to handle it,

The latest build,  mCalreader_v4.1.17 addresses this issue.

To be safe, I recommend deleting these four lines in the XML config file and then re-running the code’s setup/configuration if you are already in a migration:

  


NB: Don’t worry if the config values look odd.  We save the localization values in “HTML-Friendly” format, so the “&” becomes “ampersand;”  (except in Blogger it gets interpreted into something not plain text)

For the curious, this is the table so you can handle your own cases:

           

Note that this is also a problem in email migration:  http://www.linux-france.org/prj/imapsync_list/msg01976.html

Tuesday, October 06, 2015

Full-state Calendar Migrations from #Oracle, #Zimbra, #MSFTExchange, etc into @Office365

There must be a forest around here somewhere, I just cannot see it through all these trees.

These are Sumatra's full-state calendar migrations into Microsoft Exchange that 
  • re-create meetings
  • keep recurrence patterns 
  • preserve guest responses. 
  • book conference rooms and resource
  • make it like your users have been using Outlook and Exchange all along. 
  • Everyone else who claims to do calendar migrations skips over all this functionality. To be fair, it is hard to execute correctly (and most of them have their hands full convincing you to do email when imapsync does it so well and so much less expensively), and it's not too important if you have a few hundred users. But it is the whole ball of wax if you're any real-sized corporation.
Exchange to Office 365
with Incremental Sync
Oracle Calendar Server to Exchange / Office 365 (via ICS files, which we still use to create live meetings):
Oracle Beehive to Exchange:
MDaemon to Exchange (we don't do full-state on this)
Meeting Maker we've been doing but we didn't do a video on it.  And at this point -- why bother?

Zimbra to Office 365:





Tuesday, September 22, 2015

Enterprise Calendar Migration @Zimbra to @Office 365 @MSFTExchange

Per request, a video of  migrating calendars from Zimbra into Office 365.

Of course this keeps meetings as genuine, functional, updateable meetings when they are migrated to the Microsoft Exchange side.




We are reading calendar data directly from the Zimbra database, a technique we also use for our full-state Exchange to Exchange migrations and our Oracle Beehive to Exchange migrations.

Wednesday, September 02, 2015

Quick guide to Enabling IMAP in @Office365 / #MSFTExchange 2013

Let's say you're going to want to start migrating email from a legacy system like Zimbra into Exchange 2013 or Office 365.  You're going to need to get IMAP running on either your on-prem Exchange environment or in O365.

This tells you how to do it.

In a few days we'll show you how to start moving your Zimbra email.  Why are we picking on Zimbra?  We're not, we're responding to market demand to move Zimbra (which is not hard to see since Exchange continues to improve linearly and Zimbra has developed in fits and starts from being independent to being a quizzical part of Yahoo to being remaindered to VMware to passed off to Telligent and now just sold to Synacor). 

There are three pieces to get IMAP working:
  1. Start the IMAP service (Exchange 2013.)  Office 365 can skip this step
  2. Enable the IMAP Connector
  3. Enable the IMAP mailbox feature for user accounts

Start the IMAP Service
The first step is to start IMAP on your Exchange 2013 server (see below).  Once set, you can then enable the IMAP mailbox feature for each user.  (Office 365 customers can skip this step.)  These are the four shell commands:

Set-service msExchangeIMAP4 -startuptype automatic
Set-service msExchangeIMAP4BE -startuptype automatic
Start-service msExchangeIMAP4
Start-service msExchangeIMAP4BE



Step 1: Start two IMAP4 services (and configure those services to automatically start if you wish.)
By default, in Exchange 2013 the IMAP4 service(s) are stopped:


To start those services: On the computer running the Client Access server role:

1. Set the IMAP4 service to automatically start:
     Set-service msExchangeIMAP4 -startuptype automatic
2. Start the Microsoft Exchange IMAP4 service.
     Start-service msExchangeIMAP4

On the computer running the Mailbox server role:
1. Set the Microsoft Exchange IMAP4 Backend service to start automatically.
     Set-service msExchangeIMAP4BE -startuptype automatic
2. Start the Microsoft Exchange IMAP4 Backend service.
             Start-service msExchangeIMAP4BE

In our case, the CAS and Mailbox server roles are on the same box:


Configure Exchange IMAP4 External Connection
This allows users to see (and thus use) the IMAP server.  Here is how via the powershell SET-IMAPSettings cmdlet, e.g.:

     Set-ImapSettings -ExternalConnectionSetting {:993:SSL}.

Note: This requires you restart IIS.
This is true even if you are working within the firewall  Thus in our case, the External Connection is the same as the InternalConnection.


Finally,  Verify things are working, using OWA’s Options select Account, then pick the “Settings for POP or IMAP access” link.



Enable IMAP for your users
Next, ensure your user mailboxes are enabled for IMAP.
You can do this one-user-at-a-time using the Exchange Admin Center (EAC):




 Set-CASMailbox jimi@sumatra.onmicrosoft.com -MAPIEnabled $True

Which can be set for all users by piping from Get-Mailbox (note that this correctly excludes resource accounts for email migration):

Get-Mailbox -resultsize unlimited ^
  -filter {isResource -eq $false} | set-CASmailbox ^
  -MAPIEnabled $True

Tuesday, August 25, 2015

#Zimbra calendar behavior with different clients: what it means for enterprise @MSFTExchange migration.

There are a few acid cases we always look for in calendar migrations.

Welcome to one of them.  Well actually three of them all at once.

We are looking at these cases of course because we are revising our full-state calendar migration from Zimbra to Microsoft Exchange, but this will also be interesting to people who wonder why their different clients can sometimes give different results when looking at the same calendar data.

Let's say Jimi Hendrix invites Janis Joplin to a recurring meeting let's say we create it on Saturday November 14 and set it for recurrence every weekday for 5 instances.  Let's also say Janis declines the series and accepts ONE instance  (on the problematic nature of this capability see our previous post).  

Now, for the FIRST weirdness.

Jimi's calendar in Zimbra using the web client looks like this:

The recurrence pattern states every weekday, but the seed instance is on a weekend day.  The Zimbra web client lets you do this perfectly fine, and data is data, so there we are.

But if we open up Jimi's exact same calendar on the exact same Zimbra server in Outlook configured for Zimbra we see something different:

A few things to notice here:  Jimi's recurrence pattern now starts on the MONDAY, which is the next instance of a weekday and continues for 5 instances. The same thing happens with a similar "wrong" seed date "Every other Tuesday" which Outlook now interprets do be on the wrong Tuesday.  Opening up the SERIES shows this:
Which is a total brain-fluck  (note spelling those of you easily offended). 

If we look at Janis's calendar in Zimbra web client and overlay Jimi's, her declines are correct and her acceptance is in the correct spot.



BUT if we take her ICS file and just look at it in Outlook (without importing it though that does not make a difference), then we see data consistent with Jimi's calendar, except that Janis looks as though she's ACCEPTED all instances (they all in fact have BUSY Free/Busy status).

Keep in mind -- we do not deny these are some weird cases.  They are also weird cases that are really easy to create and propagate and we know they exist in actual customer data.

So the question becomes: in an enterprise Zimbra calendar migration which data interpretation do we take as definitive? Even if you're doing it yourself via PSTs (for gosh sake do not use PSTs, keep an eye on this blog for your better alternative) or export files you need to be aware of the issue.

We started doing full-state calendar migrations into Zimbra a few years ago, but interest has risen in the past few weeks from some larger sites and we’ve determined there are two paths we could follow:

Option 1  is reading the Zimbra database directly and then inserting into a database exactly like the one we used for Meeting Maker migrations.  It’s a little more complicated for admins since they need to map users in database tables.  This is well-suited to a big-bang all-in migration.

Option 2  is exporting Zimbra ICS files and using our tools to insert then and re-create meetings.  This simpler to implement and execute but it will probably take longer to run the process end-to-end.  This is also easier to run in segmented bunches of users rather than as a big-bang migration.  But it will also result in the kinds of behavior you see above.

Both of these options yield the result as though users had been on Microsoft Exchange or Office 365 all along: meetings will immediately be live and updateable including resources.  Nobody else does this with calendars.

Internally we all have strong opinions about the path we’d prefer to take, but we’d rather hear more feedback from the guys who’ll have to live with it.

Drop us a line if you have strong opinions on the matter.  In the meantime we're proceeding with Option 1 (though not taking it to the limits we can) because it's just so much less work on the customer side even though it is considerably more work on ours.

Thursday, August 20, 2015

#zimbra client-side vs server-side calendar ICS exports for @MSFTExchange migration

Gotta give props to the guys at Zimbra.

Usually when there's client-side export method and a server-side export method, the results are different.

Here, exporting calendars as ICS gives exactly the same result regardless of doing it client-side (via Preferences-Import/Export)

Or server-side via zmmailbox

And here's the proof.  But stay tuned next week for some additional consequences of different clients on the Zimbra calendar and what it means for migrating calendars in a scheduling-centric enterprise.

..

Tuesday, August 18, 2015

#Oracle Calendar Server migration to #MSFTExchange: Users OUTSIDE your organization

Got this question in:
What do the partial and full Oracle calendar server migration options do with meeting invitations to guests outside the organization? 

Gentle reader of calendar migration-mindedness:

Re-sending proposals to users outside your domain is OPTIONAL, as below in yellow.


In general – this is confusing as heck to outside users, since they’ve already responded to an invitation and you probably do not keep them all informed about your migration plans. Your internal users KNOW a migration is going on (well, most of them, let's be realistic). But you have ZERO control over users outside your domain.

In general we recommend you NOT re-send them (though we've had one or two that demanded it).

We insert the address in the agenda, so it’s straightforward to keep track of these and add them post-migration if a meeting updates (which is the real issue)

Your call, but I’d treat it as a training and post-migration issue.


Thursday, August 13, 2015

@Zimbra Enterprise Calendar Migration to @MSFTExchange Options

So we have one enterprise site that is serious about migrating calendars from Zimbra to Exchange 2013.

Again, we're talking full-state, live meeting migration we do, not the semi-functional, "well it's a calendar, so what if the meeting changes don't update now?" that some folks settle for.

This has caused us to look at our migration methods for large-scale Zimbra to Exchange calendar / tasks / contact migration.  We've got a long-standing weirdness.

In Zimbra an attendee can DECLINE a recurring meeting and ACCEPT a single instance.


This is NOT allowed in Exchange.  You decline a recurring meeting in Exchange and it is gone.

So what we've done in the past is have the attendee accept the series and decline all but that one instance.

We're re-thinking this and might just make the single acceptance a one-time meeting with appropriate modifications on the master recurrence pattern exceptions.

Strong feelings about this?  Let us have your feedback.

Tuesday, August 04, 2015

Mitigating bad user behavior during an #Oracle calendar migration

Got this from the field a few weeks back:
What if we set up inbox rules on each migrating account to redirect invites and responses to some other (non-INBOX) folder - would oCalReader still be able to find them when it comes time for it to respond and clean up responses?

Please do not do this.
Since Exchange delivers the invites to the root mailbox we look at the root mailbox.
Any other folder is strictly verboten.

But -- what you can do:
  • Disable Outlook access for the migration period.
  • Hide the conference rooms in the GAL (stops a preemptive land rush from users -- this HAS happened)
  • Shut off ActiveSync/BES (handhelds are actually a bigger problem than Outlook)
  • Tell your users we know who's been naughty or nice from the logs


Saturday, July 25, 2015

Monday, July 13, 2015

#Oracle Calendar Server to #MSFTExchange Migration and Years of Historical Data

Our latest version of Oracle Calendar Server to Exchange migration will allow you to surface a keyword in our XML Configuration file.

If you're in trial with us now we've told you about it.

If you get a trial from us and this is relevant we'll clue you in on what to do.

But basically you will split up your migration into two runs: the "Current" and the "Historical" -- and for each run you want different keywords.  Why?  So that if something goes wrong in the second run you can remove only THAT data and not the data you inserted before.  At Sumatra we're always looking out for you guys.

For historic data, we recommend inserting without sending email invitations – the process will go faster and you will still have the guest list in everyone’s appointments.  Use this setting:


It’s like “printing” your calendar into Exchange.

So the meetings are not live meetings (but they’re historical so – what’s the problem?) – but everybody’s who had a meeting or appointment in their calendar will have it in their calendar post-migration.

One other thing: For testing using the date range in ocalreader's "Calendar Selection Dates" configuration option is fine.

For a production run, use OCS's UNIICAL date ranges to specify the date ranges in your ICS files.  
Why?  You ask.  Fair question.

If we interrogate the date and get a null answer in a migration into production, we’re spending cycles checking when we could be inserting.  This inefficiency adds up over lots and lots of data.

Final word: be careful managing the keyword.

Tuesday, July 07, 2015

Resources before and after your Microsoft Exchange calendar migration

Please consider this a follow-on to Russ's previous post.

We've got scads of migrations right now at various phases and something that keeps coming up is resource handling ("surprise, surprise" which I always imagine in a Gomer Pyle voice).

Before inserting calendar data into resource calendars, use PowerShell to enable all mailboxes and to disable automatic calendar processing, scheduling horizon, and conflicts.

To enable all resource accounts (pre-migration): 

Get-Mailbox -resultsize unlimited | where {$_.IsResource -eq "true"} | enable-mailbox 


This script will disable automatic calendar processing, scheduling horizon, and conflicts for ALL resources: 

Get-Mailbox -resultsize unlimited  -filter {isResource -eq $true} | 
           Set-CalendarProcessing -AutomateProcessing None
           -deletesubject:$False -AllowConflicts: $true 
           -EnforceSchedulingHorizon: $False

Post migration you can set these to whatever policies you wish -- but this allows us to re-create the calendar as it was in your legacy system.  A lot of field data has conflicts and double-bookings which get decided closer to the date.  The scheduling horizon on some legacy systems is 2039.


Post-migration to set resources to autoaccept which in Exchange 2013 is done via set-calendarprocessing:


Get-Mailbox -resultsize unlimited  -filter {isResource -eq $true} | Set-MailboxCalendarSettings -AutomateProcessing AutoAccept -deletesubject:$False -addorganizertosubject:$True


Post-migration to DISABLE all resource accounts:

Get-Mailbox -resultsize unlimited | where {$_.IsResource -eq "true"} | disable-mailuser

For private conference rooms you may want to set some policies like “book-in”, “request-in” that allow admins and other authorized people to either send in a meeting request, or be allowed to book a meeting in the room. This way the admin, as a delegate to the boss, can create a meeting in the boss’ calendar and invite a room. And everything flows through Exchange without issue.  A Look at Exchange Server 2013 Resource Mailboxes goes into good detail showing you how to accomplish that.

You don’t want to have rooms organize meetings because they are disabled accounts and cannot respond to email traffic.  Since this is a feature of the ICS exports from Oracle Calendar Server there is little we can do to remedy that situation (since OCS does not indicate the human who should be organizer). 

If you are migrating “shared” calendars, e.g., “carpool van”, “IT vacation schedule”, ”Help Desk Coverage Assignments” then create that entity as a user account in Exchange, migrate the ICS resource data into that entity, and then re-type the account from user to “shared.”  We wrote about the right sequence for migrating Shared Calendars into Exchange and setting them up.

Final note: now keep in mind: this is relevant to do the kinds of calendar migrations we do where meetings are actual meetings when you get done.  For every other kind of calendar migration out there you can ignore this and focus on having your users re-create all their meetings.

Wednesday, July 01, 2015

Which version of Exchange should you be on for a calendar migration?

For a Sumatra calendar migration you should be on the latest update to Exchange (currently Cumulative Update 9).

At the very least, CU6, owing to that fixing problems with Contact Notes.

We spent an hour last week diagnosing problems with Exchange 2013 CU 4 -- once the Exchange environment was updated the issues went away.

Tuesday, June 23, 2015

Manifesto for Calendar Server Migration

What are the current gaps in calendaring migration?

Calendaring is fundamentally different from email even though it usually uses it as a transport protocol.

Historically all migration solutions have focused on email.  Not surprising since email is a mission-critical concern.

But where email is static once you have sent or received it, calendars have a crucial difference:  they contain evolving meetings that are linked to the calendars of other individuals in the enterprise.  In Exchange changing a meeting updates the calendars of attending resources and individuals.

And in a real migration you need to take these links and the data associated with them along or you’re only doing part of the job.

Nobody except Sumatra Development does this for calendaring.

Solutions other than Sumatra's treat calendars exactly like email:  they create the events but do NOT recreate live meetings because they ignore the guest lists, responses, recurrence patterns and resource  bookings.

Think if it like this: they take a print-out of a calendar and migrate that. We call this a “flat” migration. Most do not even take recurrence patterns. 

Sumatra re-creates the state, creating live meetings with guest lists (which you might have to map to new domains or addresses), responses, recurrence patterns, exceptions, and resource bookings.

We call this “full-state.”

Even in the on-premises Exchange to Office 365 world, Microsoft focuses on email and does not even offer a calendar migration path.  So we went out and blazed our own full-state migration method.

For small sites this is a tractable (if unpleasant) problem. It's still a productivity loss, but we’re talking a couple of hundred users.

For sites of 500 or more users the productivity hit can be immense.

Put another way:  after a full-state Sumatra migration the user and resource calendar data experience a seamless transition:  as though the enterprise had been using their new calendaring system all along.  With other solutions users actually need to find and recreate their meetings to make them live and update-able.

Finally, other solutions willfully ignore the possibility of failure.

We have an UNDO strategy to gracefully remove only the data we put in in in the event of catastrophe.  (We have seen servers fail in the middle of migration).

This is of course an overview from jet plane altitude and by the time we get through the first test phase with a client we’ve brought them to tree-top level.

Our web site: http://www.sumatra.com

It shows how our migrations work, and it also highlights some of the things
we’ve done in calendaring.

In a nutshell: if it involved MS Exchange calendaring / scheduling we can do it.

Thursday, June 18, 2015

On-premises @MSFTExchange Migration to #Office365

A PowerPoint Presentation about migrating from on-premises Exchange to Office 365.

The Migration section does not specifically call out calendar migration -- but that's what we specialize in.



Towards the end the notion of a back-out plan is one of the main things we constantly harp on.  Our calendar migration can take Exchange to Office 365 preserving guest lists, responses, and recurrence patterns, and do it in BOTH directions and it includes an UNDO to selectively remove only the data inserted.

Tuesday, June 16, 2015

Microsoft Exchange Virtual Machines and your Calendar Migration Test Environment

These days everybody's doing migration testing in their virtual environments.  That's cool with us.

You should start your project by reading Best Practices for Virtualizing and Managing Exchange 2013.  It's a little dense and abstract.


But we also have a few Cliff's Notes (which is a trademark of somebody other than us which we use here metaphorically) to put in front of you for the calendar migration you are testing:


  • Space consumption is a constant battle. To sway the odds in your favor we recommend:
  • DNS vs Firewall. You want to get mail to flow locally, but not leave the testing sandbox.  This is always tricky and you should make sure you've got it right before you go to any appreciable scale with your testing.
  • Keep your Active Directory on a separate Virtual Machine from your Exchange components.  Why?
    • The Exchange VM already has enough to do – don’t add another function to its workload
    • Next, a separate VM for AD should mimic your production architecture. It allows different administrators to manage discrete roles. You might as well start by following best practices.


Keep in mind, these are guidelines for your testing phase to make sure you do not run out of space in defined and constrained virtual environments.  You will want to adopt other behavior when you move to production.

Further good reading:

Thursday, June 11, 2015

Move mailboxes between on-premises and Exchange Online organizations in 2013 hybrid deployments

Folks,

Do any of you have field experience with:

Move mailboxes between on-premises and Exchange Online organizations in 2013 hybrid deployments

?

We'd really be interested in the field stories of SPEED, RELIABILITY, and ISSUES.

You do not need to identify yourselves or even put it in the comments, we'd appreciate your confidential experiences via our contact page.

Closely related to this is Single sign-on with hybrid deployments.

Tuesday, June 09, 2015

Mapping Resource Names in Oracle Calendar Server to Microsoft Exchange Migration.

In Oracle Calendar Server, resources are database objects.

In Microsoft Exchange they are SMTP addresses with calendars.

So, while your export file names for Users should match the target SMTP address. the resource mapping file will actually map the ICS file name to the SMTP address.

For example, the export file:

             erp conference room 1 tiger.ics  


gets mapped to cr_colonial_222@YOURDOMAIN.COM

Here:



Side note: If you have parentheses in your Oracle Calendar Server resource name, for example:

                     ERP Conference Room 1 (Tiger)

Drop the parentheses or other nin-permitted characters and use the same mapping.


You will get results like this:


I.e., you will have the mapped resource as an Attendee, and the old resource name as the location (because in the source data it's just a text string we insert).