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.

Thursday, July 02, 2015

Two ways to grant access to a Resource in #MSFTExchange

A client asked us to explain the difference in the two ways for an end user to have "delegate" rights to a conference room.  It is confusing -- Microsoft calls them both "delegation"  and tried to explain them in a recent Exchange Team Blog post, Booking Delegation Vs. Classic Delegation.

Here is the summary:

1. Grant delegate permission using Outlook or OWA (aka "Classic Delegation")
2. Grant delegate permission using Exchange Control Panel (aka "Booking Delegation")

There are three problems with the "Classic Delegation" for conference rooms:
  • First, since rooms are "disabled accounts", it's hard to log into them.  
  • Second, Classic Delegation creates two rules -- one visible (IPM Subtree folders), and one invisible (think NON-IPM Subtree folders.)  When you change/remove a classic delegate, the hidden rule does not always get deleted and thus still remains in force. (Why? Outlook tries to be helpful, and when it sees there is a hidden rule, it uses the hidden rule.) 
  • Third, the classic delegation rules run at a higher priority than  booking delegation rules.  More ways to confuse administrators.
Moral of this story: don't use Classic to delegate access to rooms. Sumatra urges all our migration customers NOT to migrate delegates -- once set they are difficult to remove (see our post from '08).


Sumatra recommends you assign room delegates using the "Booking Delegation" approach.  You can either use Exchange control panel to assign booking delegates, or PowerShell.  We prefer PowerShell.

There are several things you must do, depending upon how you want to handle room reservation requests

For auto-booking:
Ensure automated processing of meeting requests is set.
Example: Set automated processing for conference room 101B
Set-MailboxCalendarSettings cr_101b -AutomateProcessing AutoAccept

For a managed room:
1. Ensure automated processing of meeting requests is disabled.
Example: Disable automated processing for conference room 101B
Set-MailboxCalendarSettings cr_101b -AutomateProcessing None

2. Decide on your room administrators,  grant them permission, and allow the room to receive requests but NOT allow direct booking.  (You and also play with Book-in and Request-In policies starting with this old but good Technet Article....this is beyond the scope of our post, though.)
Example: Allow Russ Iuliano to manage Auditorium meeting requests. 
Set-CalendarProcessing Auditorium -AllBookInPolicy $false -AllRequestInPolicy $true -ResourceDelegates "Russ Iuliano"

3. Grant administrators permission to send on behalf of the room.
From time to time, you may not
Example, Grant delegate "riuliano" send as permissions on behalf of Room CR 101B
Add-ADPermission cr_101b -Trustee riuliano@sumatra.com -AccessRights "Send As"

Finally, You can read more about creating and managing room booking on Microsoft Technet.

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).

Tuesday, June 02, 2015

Follow-up to #CalDAV to #MSFTExchange calendar migration tool - round 2

If you have read #CalDAV to #MSFTExchange calendar migration tool - round 2 and said "all very well and good, but I want to LEAVE Microsoft Exchange for some other calendar server" -- WE CAN DO THAT.

We  can already read calendar data directly from the Exchange server and insert it full-state into another Exchange Server or Office 365, as you see here:



Taking all the data out of the source is (for us) simple, inserting it into another target is certainly within our expertise.

If you have at least 1000 users or a realistic budget we can discuss this.

Thursday, May 28, 2015

#CalDAV to #MSFTExchange calendar migration tool - round 2

It's been almost exactly a year since we did a sanity check on this #CalDAV to #MSExchange calendar migration tool.

Since then we've field-proven full-state migration of Oracle Calendar Server to Exchange using ICS files -- which means we could insert ICS FULL-STATE for any of the other iCalendar standards based calendars.  You know -- Zimbra, Apple, Google being the only ones that matter these days.

Let us know if you have more than 500 users and want to give it a spin.

Tuesday, May 26, 2015

Speeding an Oracle Calendar to #MSFTExchange Migration by Parallel Insertions

If you have more than a few hundred users, you can run multiple instances of the Oracle Calendar Server to Microsoft Exchange migration code.

Let's say you have 1000 users and want to break it down by half.  Say from A to M and N through Z.  You can set up two separate instances as follows:



Who "Blank" to M?  Because numbers sort BEFORE "A" so things beginning with numbers are lost if you do not do "Blank" as your start.

Then "N" to "Z":


Just to be safe I'd run each of these on separate machines, but you use the SAME mapping tables for each.

Make sense?

Oh -- and if you want to insert just ONE calendar to test, this is the way to do it:
Put the same name in each endpoint box.

And this is an Oracle Calendar to Office 365 migration in action:

Thursday, May 21, 2015

Oracle Calendar Designate to #MSFTExchange Delegate Rights Migration

We at Sumatra are no strangers to the issues of delegate/proxy/designate migration into Microsoft Exchange 2013 / Office 365.

We just refuse to do it ourselves anymore.

Why?  Because while we can give you the best possible technical solution, it is not always the best social or political solution for a given environment.  Someone's gonna grumble.  And we do not need that.

If YOU on the other hand can manage your organization sufficiently well for your purposes, we're fine with it.

Here's what you do.

Let's start at the back, where we insert calendar delegate rights into Exchange.

You need the command Add-MailboxFolderPermission in PowerShell.
This format which can be executed in PowerShell to set calendar permissions on Exchange. as we do here:  


Which means in Outlook looking at an Exchange server the user will see this in Calendar Properties:


So working backwards, you need to get Designate permissions on the Oracle Calendar Server side.

Say you need to get Designate rights for Russ Iuliano from OCS:

uniaccessrights -ls -grantor %1 -grantee "S=Iuliano/G=Russ" -n 1 -p PASSWORD >>russ_rights.txt


The output of UNIACCESSRIGHTS is relatively straight-forward to read:

"S=Iuliano/G=Russ"
Grantee: S=Iuliano/G=Russ/UID=riuliano/ID=257/NODE-ID=1
Designate Right: CONFIDENTIALEVENT=VIEWTIME/CONFIDENTIALTASK=MODIFY/NORMALEVENT=
MODIFY/NORMALTASK=MODIFY/PERSONALEVENT=REPLY/PERSONALTASK=
MODIFY/PUBLICEVENT=NONE/PUBLICTASK=MODIFYEvent Viewing Right: CONFIDENTIAL=ALL/NORMAL=ALL/PERSONAL=ALL
Grantee: S=Whiplash/G=Snidely/UID=swhiplash/ID=260/NODE-ID=1Event
Viewing Right: CONFIDENTIAL=NONE/NORMAL=ALL/PERSONAL=TIME
                    

Depending on how you implement your OCS Delegate to Microsoft Exchange Mapping you need to parse the UNIACCESSRIGHTS output into this format which can be read in PowerShell to set calendar permissions on Exchange.

You need to execute this from PowerShell.  Needless to say this command should be called something like russ_rights.ps to execute in PowerShell. 

To launch PowerShell: Start > All Programs > Accessories > Windows PowerShell > Windows PowerShell right-hand click and "Run-As administrator"

The parser we'll leave to you and write about in a future blog post.

Thursday, May 14, 2015

Full-State @Oracle Calendar Server Migration into @MSFTExchange Database Configuration


For full-state Oracle Calendar Server migrations, the Sumatra code creates a small database to store Guest responses.  Don't fret -- in contrast to our first-generation methods this one does not require you to ever open or modify the database.

The database will require you download and install the Microsoft Access Database Engine 2010 Redistributable.

For x32, install the AccessDatabaseEngine.exe.
For x64, install the AccessDatabaseEngine_x64.exe

The Sumatra code sets the database provider in the configuration XML file based upon the operating environment. 

For x32, the provider is:  Provider=Microsoft.ACE.OLEDB.12.0;Data Source=
For x64, the provider is: PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=

Here are the lines in the XML as setup for an x64 system.  Note we include provider “sample” lines so you can copy the provider setting appropriate to your environment.

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=
PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=



Wednesday, May 13, 2015

If you fall asleep in meetings....

... make sure your boss is not a psycho North Korean strongman.  Seriously, an anti-aircraft gun was the exit interview?  That sounds like a 1966 Batman TV cliffhanger.  Makes a US human resources drone look good.

I did once have a boss at ON whose motivational motto was something like "Garth, your beatings will continue until your morale improves.  Party on! -- Wayne."  Then there was the coke-head at Wang who'd get spontaneous nosebleeds and had fantastic reasons for not coming into work:"I got mugged at an ATM" and "paint fell on my show dogs."

Truth is as weird as fiction.  

Thursday, April 23, 2015

Why are the Russians Binge-Reading this Blog?

Dear Binge Readers in Russia,

You never write and we never get any inquiries, but periodically throughout the week we get a few hundred views from you guys in the space of an hour.

What goes?

Tuesday, April 21, 2015

New Option on Oracle Calendar Server Migrations to #MSFTExchange

When we recreate response states from Oracle Calendar Server 10.x to Exchange we have a new option:


As a default your un-responded meeting invitations are "Tentatively Accepted."

However, you can also set this to "Accept"  "Decline" or "Do not apply a response."

I cannot see a reason you would want to Decline all instances -- but (and I am still flabbergasted) we got asked for it.

One thing that is possible is that if you originally Do not apply a response (i.e., leave them as invitations in user inboxes, you can then go back and "Accept" or :Tentatively accept" since we are keeping track of the responses.

UNDO gives you the option to limit removing guest responses by our alpha limits.


This capability is in oCalReader v 5.0.7.

Thursday, April 16, 2015

Meeting Responses in a Full-State Oracle Calendar Server to Exchange Migration

How do we deal with Meeting responses in a full-state migration from Oracle Calendar 10.x to Exchange?
  • The response options in Exchange are Accept, Decline, Tentative, and No Response
  • Oracle Calendar Server allows you to NOT respond to a meeting and it still shows up in your calendar. So in the field lots of people do not bother to actually Accept. Migrating these meetings to Exchange, we insert a non-response as “tentatively accepted” more as a sensible convenience than anything else.
  • Exceptions to guest responses to recurring meetings are not inserted. E.g., if a guest accepts all but declines a few occurrences, or declines the recurring meeting but accepts a few occurrences.  The latter situation actually cannot happen in Exchange but is possible in OCS.

Tuesday, April 14, 2015

Oracle Calendar Migration to #MSFTExchange #Office365 - Full State via new methods

We've further developed our oCalReader methodology so that now in addition to doing a partial migration it will also execute a full-state calendar migration from Oracle Calendar Server 10.x into Microsoft Exchange or Office 365.

You can see the new configuration options below:


A couple of notes on this:

RESOURCES
  • Works best for resources that are booked on a first-come-first-served basis.
  • Does not work well when the resource owns the meeting.  You cannot have a resource organize a meeting in Exchange!
  • Requires a manual mapping of resource names to Exchange SMTP addresses (since resources in Oracle Calendar server don’t contain email addresses, or, worse, point to the admin managing the resource.)
The mapping file looks like this (OCS Resource name on the left, Exchange SMTP on the right) :



You can get your resource names from OCS with UNIUSER.  A command something like this:

uniuser -resource -ls "R=*" -n 1 -p PASSWORD >resources.txt

should export them.

The new buttons "Guest Response" and "Cleanup" come into play if you are running individual migration steps.