Thursday, April 15, 2010

New one-step mapping method OCS to Exchange


 

Mapping OCS Users & Resources to Exchange Accounts

First, we assume that you have already imported the "users.txt", "resources.txt", and "foreign.txt" into the database using the xCalReader.

There is really only ONE step: Run the query Q_Build_MM_Exchange_User_Map_From_Users



 

THAT'S IT!

We urge you to review the mapping table "MM_Exchange_User_Map" to ensure all accounts have been mapped, and that all accounts have an email address.


 

What happens if I want to change the email address for a few users in the Users table?

Edit the table User_Adjusted_Maps. You must copy the userid, UserNum, and mmLogin from the Users table, although we recommend you copy ALL fields. This makes review easier because you know who the accounts belong to! Add the exchange alias (exch_alias) and exchange SMTP address (exch_email). In the following example, we changed Peter W's email to peterw@nl.th....


 



 


 

What happens if users do not have email in the Users table?

Look in the "Exchange_email_Src" tab for "***Missing Email***", or look for unusual email in the exchange_email tab.



 

Is there a "query" to copy all users with blank emails in the Users table to the User_Adjusted_Maps table?

Yes. It's called "Q_Add_Users_with_Missing_Emails_to_User_Adjusted_Maps"

You will have to add the Exchange Alias and Exchange email address, AND the Exchange type. The choices are "Individual" for a user or group calendar account, and "Resource" for a conference room.


 

I do not see that query in my database?

You must have database version Blank_Conversion_DB_v8.13.0.0413.mdb or greater


 

Meeting Maker sites migrating to Exchange

You can use the exact same queries and methods above, but make sure the email you want to have in Exchange is associated with the MM account you are migrating using MM Admin.

Tuesday, April 13, 2010

Web-Based Meeting Schedulers via Mashable

I'm posting this up here for those of you who are interested.

Mashable has a review of four web-based meeting schedulers.

4 Web-Based Meeting Schedulers Reviewed

I actually tried Tungle and found it more trouble than it was worth (but that was at least a year ago). And why on earth would anyone name an app Doodle?

Since we deal with corporations I do not think this any of these are going to be high on the agenda among our loyal readers -- but you should see what the twenty-somethings in your organization are going to be trying to integrate with Exchange.

Saturday, April 10, 2010

Migrating Large Oracle Calendar installations to Exchange by Subsets

Migrating Subsets of Larger Oracle Calendar Server Installations

April 9, 2010

Background: In re-creating meetings as live meetings from OCS, Sumatra uses the calendar of the meeting ORGANIZER as the definitive source for guest status. Since Exchange is a message-based system, it is crucial that in re-creating the calendar state calendar invitation come from the meeting owner. However, in the case where migrations must be done in phases, it is desirable to maintain as much as possible information from users external to the subset being migrated. This process deals with that.

As an example, let's say that we have an OCS installation in Europe that consists of about 2000 users in the Local users (NL) and 20,000 FOREIGN users (FR). Let's say the NL server is the first to migrate.

We have two issues, NL users as guests of meetings originated by FR users, and FR users as guests of meetings originated by NL users, as per the following table.

  

As Owner

  

NL

FR

As Guest

NL

OK

Case FR OWNER => insert as appointment in NL calendar?

FR

Mail Contact

NOT YET MIGRATED


 

Process Change xCalReader Phase

  1. Create an additional Users export file of the FOREIGN users and name it FOREIGN.TXT

  1. Use the following command to generate this file from the FOREIGN OCS server:

uniuser -ls -format "%s%:%g%:%uid%:%id%:%node-id%:%email%:" -n 1 -p jimmorrison >foreign.txt

NOTE the additional %email% which will give us the email of that user as defined in OCS. We will need this information for the foreign users.

  1. Place this file in the same directory as your USERS.TXT and UNICPOUTU export files. This means both of these files will be read and populated into the database at the same time before any calendar data.
  2. You will have a new option in xCalReader to ANNOTATE calendar items from Foreign (FR) users.
  3. Server NODE numbers MUST be different between the USERS.TXT and the FOREIGN.TXT files (see below – we want to assure that our created User ID numbers are unique – and NODE is one of the concatenated elements in this)

Notes

In converting the users, invitations to NL users from FR users will be appointments in calendars. When the FR users who are OWNERS migrate, these will be overlayed with LIVE meeting data in Exchange. The user can then delete (or keep as they will) the appointment knowing that the meeting data will be updated with changes.

 

Using a mail contact has the following requirements and repercussions:

 

We do not (*think*) French users must be on NL server as MailContacts. Valid regular email addresses should be enough to generate invitation from NL owners to FR guests– but we want to encourage you to try it. French users will then receive Outlook calendar invitations to their mail accounts.

French users can accept/decline/ignore, Sumatra process does not create state for these users.

NOTE: this means there will be the original OCS meeting and the new meeting in their calendars, but the new Exchange/Outlook one will be the one updated when a NL user makes changes.


 

Code changes in xCalReader will act so as to

  1. Automatically read FOREIGN users

  1. Convert meetings from foreign users into appointments in guest calendars
  2. Allow for an administrator defined "Tag" for foreign user originated meetings.


 

Process Change User Mapping Phase

User mapping proceeds as documented, except the FOREIGN users will need to be mapped as well. We're documenting this and will forward ASAP.


 

Process Change SuExchange2007

Code changes in SuExchange2007 will act so as to

  1. Automatically validate foreign users
  2. Not generate error messages for foreign user validation
  3. Create FOREIGN users as guests

This will be transparent to current operation but will require testing.


 


 

Things we want you to be aware of

We already know we are not going to get access to any of your data – so we need you to be looking at it for us.

  1. Once both USERS.TXT and FOREIGN.TXT are in – we need you to make sure there are no duplicated USER IDs in the USER table. We can tell you how to do this if need be.
  2. We need you to test this first in miniature and then in full-scale as quickly as possible.
  3. We could really use sample data from you "users.txt" and "foreign.txt", plus a user's export file that has foreign user meetings (both as an owner, and as a guest)

Monday, March 22, 2010

Resource Forest Redux


We just re-wrote the sections on our migration manual dealing with Resource Forests in Exchange 2007/2010 -- here's the early version

  • The "User Forest" - I started with an existing AD 2003 Domain - ad03.herring.sumatra.local (windows server 2003)
    • Create a user account "Blarney Stone", alias = bstone in the herring.sumatra.local domain
  • The "Resource Forest" - a new VM: "Resource" forest domain called Sherwood: ex07res.sherwood.sumatra.local. The CAS server is "ex07res"
    • In AD Domains & Trusts:
      • Ensure DOMAIN AND FOREST levels are windows 2003
      • Created a TWO-way: forest trust between the Resource & User forests (Sherwood to Herring) Note: A resource forest trust is a configured ONE-way trust between the Resource & User domains. If you do this, the service account won't be able to see AD, and thus won't be allowed to access anyone's mailbox.


Example of the TWO-WAY forest trust between the resource (Sherwood) and the user forest (Herring) (Shown from Active Directory Domains and Trusts)




  • In AD Users & Computer on the RESOURCE FOREST ("sherwood"):
    • Added the computer ex07res to built-in group windows authorization access group
    • Create a service account deleg8 in the resource forest (A new USER account).
  • Use Exchange Management Console to:
    • Create LINKED mailboxes "Blarney Stone" alias = bstone (in sherwood.sumatra.local) Linked to bstone (in herring.sumatra.local)
    • Remember to reconfigure IIS to use SSL and have OWA default site property (in the server configuration) to use forms-based authentication
  • In AD Users & Computer on BOTH the RESOURCE FOREST ("sherwood") AND on the USER FOREST (herring):
    • Right-hand click on the domain, get properties, and in the security tab Grant Deleg8 FULL ACCESS to AD. You'll have to go into advanced and set these permissions "for this object & all child objects". If you don't see the security tab, turn on Advanced Features under the View menu.


Example of granting FULL Control to this object & all child objects (Deleg8 on Sherwood

(Shown from Active Directory Users & Computers)




  • In Exchange Management Shell, on the Resource Forest (sherwood), run this against your CAS server, "ex07res"
    • Add impersonation between the (resource forest) service account AND the user account:
      • Add-AdPermission -Identity (Get-ExchangeServer -Identity "ex07res").Identity -User sherwood\deleg8 -ExtendedRights ms-Exch-EPI-May-Impersonate, ms-Exch-EPI-Impersonation, send-as, receive-as -accessrights genericall -inheritanceType All
      • Add-AdPermission -Identity "Blarney Stone" -User sherwood\deleg8 -ExtendedRights ms-Exch-EPI-May-Impersonate, ms-Exch-EPI-Impersonation, send-as, receive-as -accessrights genericall -inheritanceType All
    • Grant Full access to the (resource forest) service account AND the user account:
      • Add-MailboxPermission -Identity "Blarney Stone" -User sherwood\deleg8 -ExtendedRights fullAccess -InheritanceType All


  • In the Sumatra UI on a 32-bit machine:
    • Run the code as the resource service account (sherwood\deleg8)
      • I assume you've already granted that account local login rights, and made it a local administrator so you can read/write from the disk)
    • The forest: "herring.sumatra.local"; the SMTP domain: "sherwood.sumatra.local"
    • CAS server: ex07res (https://ex07res/ews/exchange.asmx)
    • Access calendar using: IMPERSONATE
    • Test user: bstone (SMTP address: bstone@sherwood.sumatra.local)





  • Other Notes and Deviations from the Sumatra documentation:
    • Something changed between Exchange 2007 RTM and SP1/SP2. we've had to change our process.
    • Microsoft's David Sterling said that EWS expects there to be some sort of AD object in the resource forest to represent the cross forest account, and unfortunately, a foreign security principal is not enough. He wrote out instructions here: http://msexchangeteam.com/archive/2008/04/18/448727.aspx. BUT it doesn't work because he recommends duplicating a SID between the User and Resource forests. That generates lots of AD errors for that service account, and breaks OWA access (as that service account).
    • The tool to set permissions on the RESOURCE forest (Sherwood) MIGHT cause you problems because it does not explicitly set permission inheritance. So the permissions might allow you to validate against the mailbox, but NOT insert calendar data. Here was the tool: http://msexchangeteam.com/files/12/attachments/entry447730.aspx


  • Use the Get-Mailbox -resultsize unlimited add-mailboxpermission to set permissions for all accounts, e.g., Get-Mailbox -resultsize unlimited Add-AdPermission -User sherwood\deleg8 -ExtendedRights ms-Exch-EPI-May-Impersonate, ms-Exch-EPI-Impersonation, send-as, receive-as -accessrights genericall -inheritanceType All

    PowerShell example of using get-mailbox (you might see warnings if you've already applied the ExtendedRights to some mailboxes.




  • We set AD access on both the RESOURCE and the USER forests
  • We were able to add a test item using impersonation. Delegation was not working.
  • After the migration:
    • Remove the service account's full access permissions in AD
    • Set the trust back to a one-way trust
    • Remove the service account



  • Other fun facts about resource forests:
    • Full Disclosure: I am not a fan of Resource Forests. Yes, they offer additional security. At the cost of 4x the complexity. I apologize to you who have implemented them successfully and are happy Exchange Admins. I'm not alone in that opinion. How a resource forest can make you cry is Vermyndax's rant.
    • It's easy to implement the Resource Forest in a way that causes the end user's lots of pain. For example:
      • Every time the user logs in to Exchange, they have to enter their resource forest credentials. That's almost as bad as my car: it automatically locking the doors once the car starts moving. Great for safety. But, every time I want to exit the car, I either have to either unlock the door before I can open it, OR pull the door handle twice – the first time UNLOCKS the door, the second time OPENS the door. Great security design. Miserable user experience. But I digress. The way around this, by the way: You have to assign the account in the USER forest these additional rights:
        • "Read Permissions",
        • "Full Mailbox Access", and
        • "Associated External Account"
      • We had problems when some DELEGATES tried to access their boss' calendars and could not. We discovered those delegate mailboxes did not reside on the same server as their boss's mailbox. The solution: move the delegates mailbox!
      • There were access problems for customers who have public folders (you need them if you have Outlook 2003, or if your organization uses public folders). I couldn't figure out how to solve the access problem. Thankfully Jim McBee "Mostly Exchange Web Log" AND Jesper Bernle's Exchange Server blog wrote about how to solve it. Jim McBee found and fixed issues with permissions and delegate mailboxes.

Friday, March 19, 2010

Migrating by department. BION, somoene's doing it.

In the several hundred migrations we've done over the last decade we've adopted as an article of faith that the right way to move meetings is as a Big Bang. It preserves the connections among all the users you migrate and it's not hard to explain to end users. A win-win for the community, an intense time for the administrators, but they get the win-win for the community.

We've always told you though that if your user community mainly consisted of "islands" who tend to only meet internally you could get away with migrating a department (or island) at a time.

But nobody took us up on it.

UNTIL a university in upstate New York said "OK -- we'll try that."

Russ and Zyg sucked in their breath and said "All right then. But if things are not going well after the first few we're going to re-evaluate this, right?"

THREE separate group migrations into it, they seem to be going all right.

There's a few more to go and we're still looking at it, but the results so far are good and we want to give you a preliminary read on how they did it and what's making it work. We're also giving them the opportunity to add anything they want to share in this post.
  1. It's relatively small (about 500 users).

  2. They are able to identify very specific groups that meet together. The MM / Exchange administration team are doing this on their own without intense database analysis from us (which has helped keep their costs down).

  3. Once the island is migrated those users are removed from the Meeting Maker user list. Since they're islands, this isn't usually a problem. As Russ put it, "They burned their bridges after they crossed over."

  4. The migration team at the university gained experience early on in mapping users and after a proof of concept migrating their internal team they then proceeded to two other islands. Again, their motivation and competence here was key in keeping costs in control.

  5. After three separate island migrations things are looking good to complete the rest on a staggered schedule.
  6. The university adds that advance testing and end-user expectation communication made things go better.

  7. We at Sumatra are happy to give credit whenever our clients are more clever than we are.

So our moral: It is possible, but start small and keep an eye on it as you move forward.

What's this look like from an end-user's perspective? The same as it would in a full migration. They walk in one morning and user Meeting Maker. They walk in the next morning and they're on Exchange. BUT: Any MM users not in the migrated group are now not on their guest lists. That's the price you pay for this staggered approach. In the immortal acronym of Robert Heinlein as morphed by Milton Friedman, TANSTAAFL.


Monday, March 15, 2010

Blast from the past

Look what Zyg found in the basement.

Meeting Maker 1.5 diskettes (DISKETTES!), back when it was Macintosh only. The video comes from a few years later after a bunch of est-heads (no joke) bought the company and decided to align themselves to the up-and-coming software powerhouse -- Novell.

Thursday, February 25, 2010

Meeting Maker / Oracle to Google Calendar

The calendar elves have been working on a few things to move data from Meeting Maker into Google Calendar, and we thought we'd update you. It's not perfect yet, but it's well within striking distance. This will work for Oracle as well of course.

First let's take a look at a typical Meeting Maker 7 calendar (sorry, the company really won't sell us version 8 anytime soon so we're left with the trial version we've been using since 2001).


And here, using our current zinsert to create ICS files is what this looks like via an import in Google Calendar.
First thing to notice: the old MM DST code causes a shift (which if you update your server or get us to rebase your data will not happen), and banners are a little off (we can fix this).
But the good news is that it involves WAY less work than our previous versions.
This does work client-side (we're working on the XML for server-side, but we've gotten no pressure for it yet so it's just simmering away).

On MAJOR ICS datafiles (in this case 2.5 Mb), we've been getting this warning:


But all the data seems to go in. Our test was simple: is the last object in the file inserted? If so, we're fine, and it was.

Tuesday, February 02, 2010

Removing Outlook Holidays Server-Side

We get all kinds of requests on the Holiday insertion application.

One of the more recent ones is interesting enough to blog about.

The subject is the holidays Outlook client can insert for you and how to remove them SERVER-SIDE.

Turns out that the old Exchange 2003 Utilities could handle this as a matter of course, but our new version did not until last week.

Here's the slightly longer technical story about what's happening: The Outlook holiday capability inserts client-side and helpfully includes the Category "Holiday"

That's good - because I have no idea what corporate or university user needs to know when Groundhog Day is (who put this list together, a grade school teacher?).

Looking at it in OutlookSpy you can also see why the terminology "Keyword" got applied to this early on and stuck.

Anyway, in Exchange 2003 the Sumatra Utilities used only the Keyword field, but to be safer in Exchange 2007 when we moved to EWS we also used a couple of hidden fields including Mileage (not as uncommon a technique among calendar applications as you might imagine).

So we expanded the concept of UNDO to be both for Category only or Category AND Mileage.

The good news, we fixed it so if you want to remove data server-side you can.

AND REMEMBER: We require keywords so that you do not accidentally remove everything in a calendar. But you WILL remove everything tagged with "Holiday." So be careful! You have been warned.


Wednesday, January 27, 2010

Exchange 2007 Calendar Issues fixed with Rollup2

On 1.22.2010, Microsoft released Rollup2 For Exchange 2007 SP2.

Here are the calendar-related issues that Rollup2 addresses:

970817 An appointment is displayed incorrectly as an all-day event if you use a mobile device to synchronize the calendar in Exchange Server 2007

971177 The Auto Attendant 'Business Hours' schedule is not updated in Exchange Server 2007 when the DST setting is changed

971349 Exchange Server 2007 users intermittently cannot access an Exchange Server 2003 user's Free/Busy information in Office Outlook 2007

973969 Incorrect exceptions are generated for a recurring iCalendar message when an Exchange Server 2007 server processes an SMTP message that contains the iCalendar message part

974161 Some attendees cannot receive a meeting cancellation notification when the appointment recurrence pattern is changed by using EWS in Exchange Server 2007

974999 The "Task Owner" field is not set when you create a task in Outlook Web Access

975165 EWS proxying requests fail after you run Availability Service requests in a CAS to CAS proxying scenario in Exchange Server 2007

975404 An attachment of a meeting request cannot be opened when you use a CDO application to accept a meeting request in Exchange Server 2007:

975903 The RemoveDelegate operation of EWS fails, and then a "500 internal server" error response and event ID 4999 are logged in an Exchange Server 2007 server

976025 The free/busy information of an Exchange Server 2007 user is not displayed

977091 The time for an updated meeting request is incorrectly shown in an exception instance of a recurring meeting request on an Exchange Server 2007 environment

Thursday, January 14, 2010

Zimbra Calendar / Tasks / Contacts to Exchange 2007/2010 Migrations

Update November, 2011.  If you're interested in Zimbra to Exchange calendar migration, see our newer posts on a faster, simpler method.  http://calendarservermigration.blogspot.com/2011/11/faster-easier-zimbra-ics-to-exchange.html


December was a busy time at the Sumatra HQ.

We averaged two migrations a week and got three inquiries about migrating calendars from Zimbra to Exchange -- one of which we consider credible in that they kept a dialog going.

So, after a few weeks of skunk works development (which is an oxymoron here), we've got Zimbra calendaring, tasks, and contacts migrating into Exchange 2007/2010, with full state information intact.

Of course, if you want to take calendar data INTO Zimbra we can still do that. But we are kind of psyched that this is the first calendar we'll take you into or out of.
Keep in mind, you could export your ICS files and import them into Exchange (try it and see if that preserves your guest responses) or you could just move PSTs (again, try it). Our process re-creates the guest lists and responses of the calendar data on the Exchange side and it does it server-side with no end user interaction.

Wednesday, November 25, 2009

Oracle Calendar Server Designate to Microsoft Exchange Delegate Migration

Trying to get Outlook Delegate Permissions:


from Oracle Calendar Server Designate Access Rights


can be tough.

We just made the Oracle Calendar DESIGNATE to Microsoft Exchange DELEGATE migration simpler (and removed PFDAVAdmin from the equation, while it worked it was a complicated pain in the neck).

Now under the processing stage check box in our insertion code is an option called "Set Delegates"

It takes a converted designates export file, as we've previously told you how to build, and will set those according to these rules:

  • Users must be VALIDATED
  • NO delegates are set to see PRIVATE items on Exchange
  • NO delegates are set to receive Meeting Invitations
  • There is no UNDO for Delegates

Here is the “get-mailbox fl” command that shows Russ has been set as Zyg's delegate


In the database:

If Delegate is true then the user is assigned as an EDITOR

If ReadONLY is set to true, then the user is assigned as a REVIEWER
If ReadONLY is set to FALSE, then the user is assigned to AUTHOR

Here is the commandlet to WIPE OUT ALL DELEGATES, regardless of who set them:

get-mailbox -ResultSize unlimited where {$_.Servername -like "Server" -and $_.GrantSendOnBehalfTo -ne {}} Set-Mailbox -GrantSendOnBehalfTo $null

(Remember to change “SERVER” to your server name!)

We suggest you use this in your TEST environment for verification purposes.

Tuesday, November 10, 2009

Insert Holidays Server-Side into Exchange 2007

Done.

Ship it.

The Sumatra Utilities for Exchange 2007 are now available for download.

Keep in mind, they won't just insert holidays for the 2010 calendar year, they'll also let you:

  • Check for broken meetings in your conference rooms
  • Gracefully remove terminated user meetings
  • Extract resource use data you can then analyze in a spreadsheet (not full ResourceWatch but it gives you easy access to data that was hard to get before)
  • And if you want to start using them to develop your own applications (we've got one business school that's done that and another evaluating), we can do that as well.

Saturday, November 07, 2009

Sumatra Utilities documentation is out

A quick update on the Sumatra Utilities for Exchange 2007: we've field proven them in an East Coast medical school with over 8000 users.

Insertion of 10 holidays for these users took about three hours.

We consider that a success.

We're running our final regression testing on them now but we can give you the link to the documentation (Word format).

http://www.sumatra.com/Sumatra%20Utilities%20Manual.doc

Stay tuned.

Friday, October 30, 2009

Impersonation in Exchange 2010

Quick tip: Impersonation in Exchange 2010 has morphed from setting ACLs to Role Based Access Control (RBAC). It could not be easier to impersonate users in the entire domain:

new-ManagementRoleAssignment -Name:_suImpersonateRole
-Role:ApplicationImpersonation -User:'xxx@xxx.xxx'

Here is a link to a Microsoft TechNet article: Understanding Role Based Access Control

Thursday, October 29, 2009

Sumatra Utilities for E2K7 available next week

We're not trying to drive you crazy -- just trying to make sure everything works and getting our legalese squared away.

The Sumatra Utilities for Exchange 2007 (including holiday server-side insertion capability) will be available next week.

Keep checking here for updates.

Monday, October 26, 2009

FullAccess fails with the error: The specified folder could not be found in the store.

I have been banging my head against the Exchange 2007 brick wall for the last month over the error: "The specified folder could not be found in the store."

Sumatra's conference room analysis tool's Exchange Web Service calendar folder "FindItem" request failed for about 5% of the rooms at one client. Other clients do not have this problem! The service account had FullAccess to all rooms. All conference rooms were on the same Exchange mailbox server, in the same OU, configured to autoaccept. Some had delegates, some did not.

The client could use the service account credentials to access the calendars via OWA. Was it a corrupted meeting? We changed FindItem's interval. No luck. Was EWS timing out over a large mailbox? Increased the HTTP timeout. No luck. Our FindItem requet uses the DistinguishedFolderID. We called GetFolder to find the FolderID. It failed on the inbox with the message "The specified object was not found in the store", and for the calendar folder with the message "The specified folder could not be found in the store".

Ahha! The permissions were not inherited. We added "InheritanceType: All" and it worked. Here is the syntax:

Get-Mailbox -filter {isResource -eq $True} -Resultsize unlimited
Add-MailboxPermission -User: xxxx -AccessRights: FullAccess
-InheritanceType: All

Tuesday, October 06, 2009

Holiday insertion server-side in Exchange 2007

Remember the Sumatra Utilities for Exchange 2003 and their beloved server-side holiday insertion capability?

And you remember how every year you ask us if we've done it for Exchange 2007?

Well, we (finally) rebuilt it for Exchange Web Services. Check out this example.

Friends of Sumatra can use this at no charge (you all know who you are) so just ask us and we'll send it out.

For everyone else we're actually going to charge for the capability this time.

Which brings me to the purpose of this posting: If you have any preferences on how we should do this -- drop us a line. If you do not know our emails you can use our contact form.

Oh yeah -- this is also going to include the broken meeting check, the terminated user utility, and the interface for managing conference room statistics (the full application for the last one will be a separate follow-on offering).

Monday, September 28, 2009

500 errors on test insertion into Exchange 2007?

When you get a "500" error on validation or a test insertion, please verify your:

  1. CAS/MBX boxes are members of Windows Authorization Access Group
  2. Impersonation permissions stuck (and are not denied) through Active Directory Sites & Services
  3. Service Account is NOT a member of any Exchange Admin Group/Domain Admin group

Monday, September 21, 2009

Oracle Calendar / Meeting Maker to Google Calendar Migration

OK, for street cred, we did a Meeting Maker (it will work with Oracle or Sun Java Calendar as well) to Google Calendar migration extension.


Keep in mind, we'll morph this as it makes contact with the real world. Here's how it currently works.


We use our tools to produce ICS files. Not a problem for appointments, but for meetings the idea is to make them live.


Here's how we do it. We insert the emails of the attendees into the OWNER's agenda.




She or he can find these really easily after inserting into Google by searching for "(re-propose)" Open it and highlight the emails, copy / drag them into "Guests"

SAVE it and SEND it:
Voila, live meetings, simple, inexpensive, and done.


There's a few issues: I think we'll load all the To-Dos into an All-Day Event on the day of the migration (since Google doesn't have an import/export capability for Tasks yet).

We migrate Contacts via CSV files.

We looked at automated ways of uploading, but the Google Calendar API does not support uploading via ICS. So we're sitting on XML uploads via cURL until we have a corporate customer (which means we are not holding our breath).

We think it's more likely a corporate customer is going to want to get OUT of Google Calendar and into Exchange (you listening, Roche?).

NB: We only handle "re-propose" for meetings which have not yet ENDED -- any other meetings get turned into appointments in everyone's calendar.

Wednesday, September 09, 2009

Smartphones and your calendar server migration

We go over this a lot with folks and it's worth blogging about.

Let's say you're switching your calendar server and you've got BlackBerrys, Smartphones, ancient PDAs, whatever connected to your old server. And you want to use the same product when you're done in your NEW environment (let's call it Exchange).

Our recommendation is that as part of your migration process you blank out your calendars in your source system and re-synch completely on your target.

Why? Because the synch usually keeps track based on something called UIDs (or Universal Identification Numbers). You change your calendar server, you change your UIDs, and if you're not careful your Smartphone will get data from BOTH systems (and this is a hassle).

While migration is going on we strongly recommend turning off your BlackBerry server. Why? Sumatra generates a lot of email as part of re-creating end-user calendars in Outlook. While Sumatra’s insertion technology removes almost all of that email from end user’s in boxes, it can not remove those messages delivered to your device via the BlackBerry Exchange Server. So depending on your migration option your BlackBerry users will either be flooded with a lot of email (no EventSink) or some email (EventSink).

Since your BlackBerrys, Palms, or WindowsMobile PCs is synched with a system that is obsolescing – you will need to clear the calendars when you shut down your Oracle Calendar / Meeting Maker / Sun Java Calendar / etc. server, then have your users re-synch after the migration is completed.

BlackBerry

For clearing the calendar on the Blackberry – see the following webpage:
http://www.blackberry.com/knowledgecenterpublic/livelink.exe/fetch/2000/8021/7925/8142/How_To_-_Reset_the_BlackBerry_device_calendar.html?nodeid=1201826&vernum=1


Palm

For clearing the calendar on a Palm OS, you might use the Purge function:
http://kb.palm.com/SRVS/CGI-BIN/WEBCGI.EXE?New,kb=PalmSupportKB,CASE=obj(5029),ts=Palm_External200173


Windows Mobile (Pocket PC)
For Windows Mobile, you can:
· Open ActiveSync
· Double Click on Calendar.
· Change the settings such that it syncs only 0 past and 0 future appointments.
· SYNC - this will clear all calendar items on the IPAQ / most other Pocket PCs.
Note: Some earlier ActiveSync versions attempt to interpret the default Sumatra Category as a date field. If you have Windows Mobile PCs you should remove the keyword AFTER you have done your quality assurance testing on the migration. Sumatra also has a COM add-in for Outlook that will accomplish the same thing on a user-by-user basis.

NotifyLink

Updated September 10, 2009 with info from Notify Technology.

Migration for NotifyLink Enterprise Server (NLES) Users with recent versions.

An administrator must:

  1. Make sure the NLES server and device software are up to date.
  2. Create the new mail and PIM servers
  3. Open the user administration list and for each user to be moved, select the “Edit User” button.
  4. On the “Edit User” page, switch the email and PIM servers to the new servers that were created.
  5. This should all be done after the actual migration is complete on the server side. Notify Tech claims their software should handle the rest. It should re-prime accounts and issue full resynchronization commands. The device PIM stores will be automatically cleared and reloaded with the new account info.

    Earlier versions of their software ran a more complicated, non-automatic process.

Saturday, September 05, 2009

"Run-As" for Vista/Windows Server 2008

Wondering how you can get the "Run-As" back in the context menus for Vista and Windows Server 2008? Thanks to Sysinternals Mark Russinovich and Jon Schwartz it's easy. Their tool ShellRunAs is located here: (http://technet.microsoft.com/en-us/sysinternals/cc300361.aspx)

It's easy to use - Unzip and move shellrunas into windows\system32. Then type the following in the start/Run command line: shellrunas /reg. That's it. Right click on an item to see "Run as different user"

Russ

Friday, September 04, 2009

When the Cloud disappears why does everyone not fall to earth?

Gmail went down again on September 1, 2009.
My schadenfreude finally met my Weltanschauung.


Of course, I got THIS one at 3:43 PM PDT which was DARNED confusing:

So with everyone who's been looking to migrate into Google Calendar: be really careful what you ask for.
And to everyone already there: migrating OUT of Google Calendar into Exchange is a LOT easier than a real time server-side synch between the two.

Thursday, September 03, 2009

Yes, we joined Twitter

You can now find us on Twitter:

http://twitter.com/sumatra_dev

We're sending all our future blog postings there, too.

Facebook is just not a natural match for us, though.

Monday, August 31, 2009

Migrating Resource Scheduler Data into Exchange 2007

No sooner was one of us back from the Seattle Opera Ring Cycle (Janice Baird rocks!) than we got one of our favorite types of inquiries: Can we get data out of Resource Scheduler and into Exchange 2007 native?

Short answer: Yes.


If you're primarily using Resource Scheduler to book rooms (something Exchange 2003 did not do well) and want to take advantage of the newer (and better) capability in Exchange 2007, this is very doable. We've already figured out how the Resource Scheduler SQL schema is structured and can simply modify and re-propose the meetings with mailbox-enabled resources on E2K7. With this knowledge if you want to try to write this code yourselves, go ahead, but be forewarned, it is harder than you think.


In contrast to the hundreds of calendar migrations we've done, this is more of an informed consent clinical trial right now, but if you're interested drop us a line. The more interest there is the more likely it is we'll proceed with development.


You should also read: Resource scheduling in Exchange Server 2007 and Using Exchange 2007 for Resource Booking. For the truly adventurous and technically adept, check out How to Create or Remove Custom Resource Properties.

Monday, August 17, 2009

Sun Java Calendar, aka iPlanet, full-state migration to Exchange 2007

Sun Java Calendar Server, previously known as Sun ONE Calendar Server, and before that iPlanet Calendar Server (the darn thing has had more names than that "Diddy" guy) is now among our full-state, server-side migrations into Exchange 2007.


It kept popping up sporadically and just came around for a 5000 user migration. Then this opportunity turned into a 500 user migration with a budget that would cover a few blended drinks at Starbuck's and we were wondering how we were going to make any money out of it. As any of you know, we're market-driven.

So here's how it's working.

We use Sun's WCAP protocol to extract the calendar and task data.

We run it through our conversion tools to morph into our intermediate format from which we can map user IDs and do all sorts of other wondrous things.

Then we insert it into Exchange 2007 using EWS (we parted ways with the now-deprecated CDO way back after Exchange 2003).


A few notes:

Recurrence patterns in Sun Java Calendar are a 1:1 match for Outlook, so we have thus far not seen any exceptions.


We can actually handle attachments. The big issue here is not the technical aspects of attachments, but the logistical ones. Often when running a migration the amount of data can cause low-set quotas to be exceeded pretty quickly, and you don't want to run into that at 2:00 AM on a Saturday. So we recommend extracting to a common directory and just passing a link to the attachment in the Agenda field. If you can avoid migrating them entirely, so much the better.

SJC has a limit on "on-going" meetings. Outlook / Exchange do not -- so we simply set an SJC "ongoing" meeting to an Outlook meeting with No End Date.

A word on versions.

We do version 6.x. With a little bit of prodding (in the commercial sense) we could be convinced to make it work for Sun ONE / iPlanet 5.x.

Future version 7 (now in beta) - we are not guaranteeing. You want to check out Calendar Server 6 and Calendar Server 7 Comparison and Coexistence. Since Sun does not currently have a migration path between 6 and 7 we're not anticipating we'll need to have a version 7 migration to Exchange path for a while.

However, since Calendar Server 7 us apparently based on MySQL (see : Best Practices for Backing up and Restoring MySQL Databases in Calendar Server Deployments) we are very optimistic a full-state migration will just involve reading their database and morphing it into our schema.

Bigger question is: Will Version 7 even make it out the door when the Oracle acquisition is final? Oracle is not likely to keep supporting two past-their-prime calendar systems.

Friday, August 14, 2009

Meeting Maker to Google Calendar field test results

It's been a productive few weeks.


We just used our existing iCalendar tools to export a few Meeting Maker calendars for a site that wanted to go into Google Calendar.


With a little surgery (removing our Time Zone DST definitions) and using the Zulu time option, the data actually imports pretty well. The above example is real-world data.


Now there's a couple of things it doesn't do right out of the box: banners are currently off kilter (this is an easy fix), and we're not sure it's worth replicating the full set of state data for guests (because nobody else does it and everybody going into Google Calendar is price-constrained), but it's not that hard to at least put the guest list into the Description field.

As you know, we actively solicit your feedback.

Saturday, August 01, 2009

Migrating to/from Lotus Notes/Domino Calendar from/to something else?

It was a glorious summer day in Boston and of course I could think only of calendars.

Having come off installing Yellow Dog Linux on my PS3, I thought "How much geekier can I make the day?" OK, I actually thought "how soon can I fire up the grill?" but the lack of high-quality Chilean sea bass caused me to re-think my plans.

So given that one of the development guys warned me that there was no way I could possibly set up a Lotus Domino configuration on Linux by my own self, I had to prove him absolutely correct and generate this sample calendar. (BTW: If you try doing this on Fedora, remember to shutdown sendmail or Domino won't come up due to a port conflict.)

Needless to say - yes, this means we're looking at full-state migrations out of Lotus Notes and into other less "legacy" environments. Our first impetus is someone who wants to take a few thousand Meeting Maker seats and put them INTO Lotus Notes, but we can work in stages.

More later.

Thursday, July 30, 2009

Exchange 2007 Rollup 9 for SP1

MS released Exchange 2007 Rollup 9 for SP1 last week. The KnowledgeBase article (970162) reports twelve calendar, Outlook/OWA-related fixes:

  1. 954739 Exchange Impersonation feature does not work if a cross-forest topology has only a one-way trust relationship between forests (Ex07SP1)
  2. 961124 Some messages are stuck in the Outbox folder or the Drafts folder (Ex07SP1)
  3. 961544 Mobile users whose location is set to New Zealand cannot synchronize an exceptional occurrence after the daylight saving time (DST) update (KB 951072) is installed (Ex07SP1)CAS server
  4. 967479 Entourage clients cannot synchronize with mailboxes (Ex07Sp1/Win 08)
  5. 967525 Error 4 is returned when you synchronize a supported list of contact properties by using Exchange ActiveSync(Ex07SP1)
  6. 967676 E-mail address properties of contacts changed through Exchange Web Services (EWS) are not updated in Outlook or Outlook Web Access (OWA)(Ex07SP1)
  7. 968081 Monthly recurring meetings are declined if the "Schedule only during working hours" option is enabled(Ex07SP1)
  8. 968350 When you change the location field of a recurring calendar item to empty, the location field is set to the default value of the recurring series if this recurring item is synchronized on a Windows Mobile device (Ex07SP1)
  9. 969054 Error message after user replies to a message that has more than 300 recipients in Outlook Web Access (OWA): "Microsoft Exchange issued an unexpected response (500)" (Ex07SP1)
  10. 969324 Outlook crashes when you try to use Outlook to view e-mail messages that are arranged by subject in (Ex07SP1)
  11. 969838 An error message is returned when a user tries to change a recurring appointment in Office Outlook Web Access that was created in Outlook 2007 (Ex07SP1)
  12. 969969 OWA Error "Outlook Web Access has encountered a Web browsing error" when a user tries to delete a calendar item

Saturday, July 25, 2009

BlackBerry Permissions and Exchange Server-Side Holiday insertion

So remember a few days ago when we told you about a great simplification in setting up permissions?

Basically, and you should not be too surprised at this, the permission for BES admin are really really close to the permissions necessary for inserting holidays or running a full-state calendar migration.

Check out this post:

http://forums.crackberry.com/f50/exchange-2007-bes-install-guide-942/

which advises setting permissions as follows:



get-mailboxserver add-exchangeadministrator
BESAdmin –role ViewOnlyAdmin

get-mailboxserver add-adpermission –user
BESAdmin –accessrights ExtendedRight –extendedrights Send-As, Receive-As,
ms-Exch-Store-Admin

And then tells you to follow up with:

Open Active Directory and from the View menu select "Advanced Features". Then
go to each user that will be added to the BES and open their properties, go to
the security tab and add the user BESadmin and add the security permission "Send
As". (This will overcome some MS patches that prevent BES sending emails).
Methods are available to add BESadmin "Send As" rights to all users if required
but this method ensures only the required users have permissions added.

Make BESadmin a local Administrator of the server where you will be
installing the BES software. This is done by right mouse clicking my computer
and selecting “Manage”. From Computer Management expand “Local Users &
Groups” and select Groups. From Groups double click “Administrators” and add
BESadmin.

This is pretty much what we tell you to do in setting up a service account for running a Sumatra migration or inserting holidays, checking for broken meetings, or running the "terminated user" option in our code.

If you do not have a specific service account set up yet, this is a good place to start.

Tuesday, July 21, 2009

Server-side holiday insertion in Exchange 2007 - example

Well yes, we did go ahead and add the server-side holiday insertion into our mainstream migration code for Exchange 2007.

And we even field-tested it at a site in a mythical place called Canada.

This is a (slightly revised for purposes of pedagogy) holiday file, showing some of the flexibility of our approach. Notice you can have holidays which show as Free "F" or Busy (abbreviation is left as an exercise to the reader) so that our Canadian cousins can list USA holidays as information for everyone in their company, but make sure the time shows as Busy (i.e., do not book then) for Canadian holidays on their calendars.

In an example of instant karma, the test site told us of a wonderfully simple short cut to permissions in setting up insertion (for those of you who have not been through a migration) based on BlackBerry Enterprise Server permissions, which we'll blog on separately.

Please note that this has the following advantages:

  • It's run server-side with no user intervention
  • It is scriptable from the DOS command line
  • It's reversible, i.e., we built in UNDO capability for those occasional accidents
  • Handles multiple time zones

Any sites who have been through a migration with us are welcome to use this capability at no charge for Exchange 2007. Just drop us a line if you do not have the latest code.

Monday, July 13, 2009

GeekSpeak: Memory Leaks in System.DirectoryServices

It rained 22 days in June (in Boston). The last few days were glorious. And I missed the sun while dealing with a memory leak.

We hit this problem while translating legacy Exchange DNs into SMTP addresses in our Exchange Room analysis tool. The culprit -- System.DirectorServices (.Net 3.5)
calls to GetDirectoryEntry().Properties. With each call to System.Directoryservices, memory use jumped by 120 bytes. The annoyance became a problem after we looked up three fields - for 8,000 users.

Microsoft's MSDN Reference says: "Due to implementation restrictions, the SearchResultCollection class cannot release all of its unmanaged resources when it is garbage collected. To prevent a memory leak, you must call the Dispose method when the SearchResultCollection object is no longer needed.".

I did that. So did other folks posted similar problems in the MS forums. All were told to use dispose. It didn't work. After reading dozens of responses, someone said try the "using" contruct along with "dispose". I did. It worked.

For those of you who don't want to find the mines by stomping on the ground, here is sample code that shows System.DirectoryServices calls broken out into an excessive number of using blocks:



'return ONE value from AD given a filter
Public Function GetADField(byval strFilter as string, _
 byval strField as string) As String
 GetADField = ""
 Using dsDir As System.DirectoryServices.ActiveDirectory.Domain = _
  System.DirectoryServices.ActiveDirectory.Domain.GetCurrentDomain
    Using dsRoot As New DirectoryEntry(dsDir.Name)
      Using dsSearcher As New DirectoryServices.DirectorySearcher
        dsSearcher.SearchRoot = dsRoot
        dsSearcher.Filter = strFilter
        dsSearcher.SearchScope = SearchScope.Subtree
        dsSearcher.PropertiesToLoad.AddRange(New String() {strField})
        dsSearcher.FindAll() 'results
        Using dsResult As DirectoryServices.SearchResultCollection = _
            dsSearcher.FindAll() 'results
            Dim result As DirectoryServices.SearchResult
            For Each result In dsResult
             Using de As DirectoryEntry = result.GetDirectoryEntry()
               GetADField = de.Properties("mail").Value.ToString
               de.Dispose()
             End Using 'de
           Next 'result
           dsResult.Dispose()
           result = Nothing
        End Using 'dsResult
      dsSearcher.Dispose()
    End Using 'dsSearcher
   dsRoot.Close()
   dsRoot.Dispose()
  End Using 'dsRoot
  dsDir.Dispose()
 End Using 'dsDir
 Return GetADField
End Function



-Russ

Thursday, July 02, 2009

Bulk Move Meeting Maker to Oracle Calendar?

Keeping an eye on keyword searches that bring folks to our site usually has few surprises.

Then last month this one showed up: "bulk move meeting maker oracle calendar" (right in there with "calendar migration oracle to exchange" and "meeting maker exchange calendar convert").

Yes, Oracle does have a process to convert Meeting Maker into Oracle Calendar.

They smartly used the Meeting Maker export DAT format (just as we do - it's independent of operating system so it's the most natural format and live Meeting Maker data is a horror show of complexity).

Sidebar: Turnabout fair play with an "X" to Paul Lynde. That's the same
strategy we use to move data OUT of OCS, using the utilities Oracle provides for moving calendar data between servers.

BUT when we ran the MM to OCS conversion (a ways back when we were figuring out how to convert Oracle Calendar to Exchange), we discovered they had missed several key attributes and in general failed to impress us with their solution (we did try licensing our tech to them but they were not interested). Since their own published report example consists mainly of "Nothing to import" messages, you should be appropriately wary.

Cornell did this nice guide when they migrated out of Meeting Maker into OCS and Penn State apparently moved last year.

If you want a real geek instance of calendar comedy, check out their Troubleshooting Calendar Migration Guide for their Microsoft Exchange migration consisting largely of the equivalent of "Step 2: Discard remainder of killer whale carcass" making success seem as accessible as Larry Ellison's yacht habit.

We are surprised that anybody nowadays is considering leaving one waning calendar-only product for another waning calendar-only product.

If it works for you, that's all the matters.

As always our message is: try it out for yourself beforehand and follow Reagan's maxim of "trust but verify."

But also be prepared to migrate again in a few years.

Tuesday, June 23, 2009

Double Booking in Exchange 2003? Look to BES Versions

Gentle Reader,

As a blogging calendar geek Ms. Calendars sometimes gets requests from the field. When they are useful to the general calendar-server managing public, she publishes them.

So it has come to pass that a question came in:

You mentioned on your site about the "perennial exchange problem of double-booked meetings". I thought I would drop you a line to see if this qualifies. We have Exchange 2003 and Blackberry Enterprise Server 4.1.3. Our users run Outlook 2003. We get these periods where users claim they are getting double booked meetings. More often than not we see one as tentative and one as accepted in the same time period. Do you have a resource that clearly explains why this happens? Is BES the culprit? Thanks in advance. Rick
Double bookings are really not unusual in Outlook. Microsoft itself has a guide on How to troubleshoot missing and duplicate appointments in Outlook. It is a work of singular genius: wonderfully complete in what could be causing the problem, and mostly silent on solutions or protocols to solutions (in contrast to Russ's latest blog entry), all the while referring you to other links which will hopefully keep you from realizing you are being given the runaround.

Just because we make a good living out of working with Exchange does not mean we're going to drink the Kool-Aid or praise the manure as BBQ.

But it does advise keeping abreast of your software updates, and that did turn out to be the problem.
In the end the problem has been solved by updating to BES version 4.1.6. The release notes go over the brand new BlackBerry Calendar Synchronization Tool. And to see what effect this will have on your Exchange server, see Technical Note: Impact of using the BlackBerry Calendar Synchronization Tool. So keep an eye on your BES servers, folks.
In general, we've noticed pretty big changes going on in CDO on E2K3: see here and here. With two years of E2K7 migrations under our belt, we're encouraging folks to migrate into E2K7 rather than E2K3.
We have another report of calendar weirdness from the field, this one with BES and E2K7, which we are pretty sure is related to the known problems with cached mode and the incremental change system. We'll blog on that later.
In general, if you notice weird behavior on your calendars, start with your BES server and work back from there. BES is the source of most calendar headaches we hear tell of.

Friday, June 19, 2009

Sex Sells....but you still can't print

I attended an MSDN conference this week where I learned more about Silverlight 3. Compared to V2.0 its new features make it slicker:
  • 3D graphics are sexier;
  • Runs as a desktop app and in the browser;
  • Apps run online or offline (and run faster).
Should you consider Silverlight or WPF for your Intranet / Line of Business (LOB) apps? My take:
  • Silverlight will make a very Rich Internet App (RIA). BUT you still can't print without a major code hack, and it has basic HTTP binding (no full security).
  • If you have existing WinForm apps, WPF may be the better choice (it's a logical extension of your existing platform).
  • If you have most of your stuff in ASP.Net, then start with Silverlight (it has a small footprint, produces great cross-platform apps, and is easy to deploy).

Before you blindly walk down the path, figure out what 'features' your end users want, and then figure out which product supports those features. Here are two MSDN blogs that compare the two technologies: Jennifer Marsman (a Microsoft Developer-Evangelist) summarized the differences (although the post is a year old); The Swiss MSDN Team updates it for Silverlight 3.

-Russ

Thursday, June 11, 2009

Free/Busy not working in Outlook 2007 (Exchange 2007)

Zyg interrupted my Friday development meeting and asked why a client could not see Free/Busy in Outlook 2007, but saw F/B in OWA. He drops this on us without even bribing us with coffee and bagels. Someone says the Exchange Availability service has problems. But that makes no sense. OWA uses the availability service (pointing directly at the CAS servers). Outlook 2007 does too. Well sort of. It uses the autodiscover to find the availability service. I bet autodiscover was not correctly configured. I was wrong - it was DNS. Here is how we figured it out:

Use Outlook 'Test E-mail Autoconfiguration'
Outlook 2007 has a tool "Test E-mail Autoconfiguration" to identify the current autodiscover URLs. You can find this tool by launching Outlook 2007, then holding the Ctrl key and right-clicking on the Outlook icon in the system tray while clicking your heels together. In the form, enter an email address and password, uncheck Use Guessmart and Secure Guessmart Authentication and click Test. We looked at the log tab and saw AutoDiscover is failing -


or there was a problem with the autodiscover URL. The errors 0x800C8203 and 0x80072EE7 pointed to DNS - either DNS did not resolve the name or there was no web server at that URL. (We hope it's just a name resolution.) We checked by configuring logging in Outlook: Tools, Options, Other, Advanced, Check logging. We restarted outlook, opened a meeting, then refreshed free busy. (BTW, remember to turn off logging after you are done!) We saw:


Fix the problem in DNS

DNS. Ugh. I’d rather talk to my teenagers about sex, drugs, and the merits of doing their homework than wrestle with DNS. But the problem was simple - add a Forward Lookup Zone, then add a CNAME record. We used “DNSmgmt” (Start-Administrative Tools – DNS)

Forward Lookup Zone: Right-click on your existing forward lookup zone and select a New Zone. A wizard will walk you through the steps. The goal is to redirect ‘autodiscover.domain’ to ‘servername.domain’. You do this in five steps:

  1. Select Primary zone for the zone type;

  2. Store the zone in Active Directory

  3. Set the replication to all DNS servers in AD (this is just for internal requests)

  4. Enter the FULL NAME, e.g. autodiscover.ex2007.sumatra.local

  5. Allow both nonsecure and secure dynamic updates (this minimizes the possibility of Exchange giving you a hard time should you resign your Certificate.)

Create a new CNAME: Right-hand click on your newly created autodiscover zone and select New CNAME

  1. Browse the fully qualified domain name, traverse the DNS tree, and look for the Host (A) record in the DNS (e.g., it might be (same as parent folder).

  2. We did not add a name to the CNAME record. Click OK and you are done.

  3. Wait a few minutes until the DNS changes are sent throughout the organization.

And that worked.
-RVI

Tuesday, June 09, 2009

Oracle Calendar Migration: International Characters

As Roseanne Roseannadanna said, it's always something.

The European calendar migration business has been picking up for us lately, and Oracle Calendar is the main thing folks want to get out of. Oracle Calendar is where Meeting Maker was five years ago, but they have a larger installed base and even more irate users (Beehive did not help things).

So let's look at Jerry's calendar with this entry, a mix of German and Spanish.


Using our standard export tool on the OCS side, UNICPOUTU, this exports as:

K Events:

S 9691980

D 30

T Du mußt Amboß oder Hammer sein, Señor

I 0

R N2

M Garcia Jerry

W Garcia Jerry

A TRUE 3 10O

Which is perfectly fine.


It comes into our database correctly as:

And will insert into Exchange just as you see.

So we're pretty sure we're covered here.

But, we've had some reports of some UNICPOUTU exports not including accented characters (and they're translated to reasonable substitutions so we know something is going on). The Oracle Admin Guide section on Calendar International Support goes into fair detail on how to configure for all your various options. As always, when in doubt, check with us. We want to take as much information to your target system as accurately as possible.

Sensitive to some of the other options that might be coming down the pike, we've added a new character set option to our conversion code:

So in case we need to do Japanese or some other non-European character set we'll be able to respond.

This means the OraCalReader also has a new command line switch: /CHARSET whose values values can currently be "UTF" and "ASCII."

One additional note: Time Zones. We've been handling European and Asia-Pac time zones in OCS to Exchange migrations for years. No worries.

Friday, June 05, 2009

Script to automate Oracle Calendar Server exports

Thanks to Marco Siefert, KUTTIG GmbH, Germany for this script that he's just used on a migration from OCS to Exchange right now. It would work just as well of course for exporting in an Oracle Calendar to Zimbra migration.

No matter what I do in blogger, the indentations get screwy so I'm also putting this in the next round of migration documentation.

#!/bin/sh

export CAL_HOME=/opt/oracle/OraOcs10gHome/ocal/bin
#Set allowpasswordoption = TRUE in [UTL] section of unison.ini of OCS calendar

$CAL_HOME/uniuser -ls -format "%s%:%g%:%uid%:%id%:%node-id%:" -n 1 -p sysoppassword > users.txt
$CAL_HOME/uniuser -resource -ls "S=*" -n 1 -p sysoppassword> resources.txt
while read mylinedo
#Replacing spaces with % so it can be passed to awk

str=$myline

str=${str/\ /%}
#Declaring variables

surname=""

givenname=""

uid=""

startch=":"

endch=":"
#Launching export command with awk

echo sysoppassword awk -v str=$str -v st=$startch -v end=$endch 'BEGIN{

if (length(str)>0){

system("echo Processing line "str)
#Cutting variables out of the line

s=index(str,startch)

e=index(str,end)

givenname=substr(str,s,e-1)

surname=substr(str,e+1)

uid=surname

surname=substr(surname,0,index(surname,":")-1)

uid=substr(uid,index(uid,":")+1)

uid=substr(uid,0,index(uid,":")-1)

#Replacing % in uid for unicpoutu tool, not replacing it in givenname because that is used in the export filename

gsub("%"," ",uid)

system("echo UID="uid)

#When we have a givenname then start with export

if (length(givenname) > 0)

system("$CAL_HOME/unicpoutu -u \"UID="uid"\" -f exp-"surname"-"givenname".txt -n 1")

}

else system("echo ---------------------------------------")

}'

done <>


Reference our earlier posts on exporting data from Oracle Calendar. For example, How to Extract Data from Oracle Calendar Server for a migration into Exchange or Zimbra.

In the script the value for CAL_HOME and sysoppassword have to be replaced before running.

To provide a password to unicpoutu change the config file "unison.ini" before exporting (can be found in $CAL_HOME\ocal\misc). The line allpasswordoption = TRUE should be added to the [UTL] section.

Tuesday, June 02, 2009

Exchange 2007 Rollup 8 for SP1

MS released Exchange 2007 Rollup 8 for SP1 last week. The KnowledgeBase http://support.microsoft.com/kb/968012 reports four calendar fixes:

  • 959990 An error occurs when you try to update a recurring appointment by using an Outlook client that is connected to an Exchange 2007 server
  • 966535 Duplicate messages are sent to an external recipient if the recipient is included in multiple distribution lists in an Exchange Server 2007 environment
  • 967097 Users may receive duplicate calendar items for the updated instance on mobile devices
  • 967109 delegate cannot accept a meeting request for an online meeting in an Exchange Server 2007 environment