BUT -- if you use FULL ACCESS instead of Impersonate, the current download-able version works like a champ for this.
Tuesday, December 27, 2011
Add Holidays to Resources in Exchange 2010
BUT -- if you use FULL ACCESS instead of Impersonate, the current download-able version works like a champ for this.
Friday, December 23, 2011
Holiday Insertions in Live @ Edu
She's used SuHoliday on over 8000 users. Thus far we think this is a record but we usually only hear from people when there are problems.
Also based on her experience and feedback we've added capabilities to our most recent version of the cmdlet, including:
- Not setting reminders for holidays
- Better logging
- Default time zone handling
- Memory handling improvements
- Improved resilience when Exchange throttles your insertion
We're discussing when and how to roll this out to the main cmdlet download.
Monday, December 05, 2011
Zimbra to Exchange Migrations Field-Proven
We're considering this a success.
Yippee!
Friday, November 18, 2011
Sumatra Undo in Action
And ever since college we've been convinced that designing a software system without a back out strategy is just darned irresponsible.
So we combined both of these lessons in our video of Sumatra's UNDO capability in action.
Wednesday, November 16, 2011
Zimbra to Exchange Calendar Migration - The Video
Enjoy.
Monday, November 07, 2011
Faster, easier Zimbra ICS to Exchange migration
One of the developing trends we've seen is sites moving out of Zimbra and into Exchange.
Imapsync is excellent for moving the email, but the calendars, tasks, and contacts are another issue.
While we've have a full-state migration solution for over a year, a lot of the folks who want to move want something simple, but still server-side, and oh, could we PLEASE keep meetings live?
It's a tall order, but as usual we deliver.
This is the basic screen:
In short what you do is export your Zimbra calendars, tasks, and contacts server-side (using either zmmailbox, cURL, or whatever you're comfortable with) in ICS and VCF format, then run this application against the resulting files.
With the proper credentials on your Exchange server (and yes, we have tested it against Office 365 and Live @ Edu), these will upload. Meetings will be re-proposed (so your users will see invitations in their inboxes come the Monday morning post-migration). The alternative is the full-blown Sumatra process which is overkill for many of you moving out of Zimbra.
Rather than our three step process (export, map user IDs in a database, and insert into Exchange), this is a TWO step process (export, import) with no intermediate mapping. So if you're changing a lot of user IDs going from Zimbra to Exchange, this is probably NOT the recommended process for you.
We're in test right now with this at a couple of sites and will let you know when it's ready for prime time. We'll give you the full documentation set and a video then too.
Thursday, October 06, 2011
Get Time Zones for your users via PowerShell
A holiday is a simple all day calendaring event in Outlook. Yet simple calendaring events can be tricky! Consider: when your end users work in different time zones! If you force an all day event into one time zones, all users who are not in that time zone will see their holidays span multiple days. Not a happy scenario. What's the solution?
We wrote a script that uses Exchange 2010 "get-mailboxRegionalConfiguration" cmdlet to find the timezones. If used in conjunction with get-mailbox, you can output a file that has the user information plus the timezone. Problem solved!
This script produces a file that outputs PrimarySMTPAddress + TimeZone:
#Define your 'default' timezone (if none is set) $myDefaultTimezone="Eastern Standard Time" #Define the output file $myOutputFile="userlist.txt" #Define the list of User Accounts to process $myMailboxList = get-mailbox -Filter {RecipientTypeDetails -eq "UserMailbox"} select-object Identity,PrimarySMTPAddress #If file exists, delete the file $fileExists=test-Path $myOutputFile if ($fileExists -eq "True"){del $myOutputFile} #Loop through list and get foreach ($t in $myMailboxList) { $priSMTP=$t.PrimarySMTPAddress $xi=get-mailboxRegionalConfiguration -Identity $t.Identity if ($xi.TimeZone -eq $Null) {$tt=$myDefaultTimezone} Else {$tt=$xi.TimeZone} write-output "$priSMTP $tt" >> $myOutputFile } write-output "Done! see the file $myOutputFile"
You can also download getUserTimezones.zip
If you have another way, please share!
-Russ
Monday, October 03, 2011
Holiday cmdlet for Exchange 2010
These are the files in the downloadable ZIP |
We've written a PowerShell cmdlet we call suHoliday that inserts holidays server-side. We've run it through our internal testing against on-premises Exchange 2010, Live @ Edu, and Office 365, so now we think it's time to let it out into the wild and see what you folks can do with it.
The sample CSV file for US holidays |
Your inserted holidays will look like this in a user's calendar:
If you want to download it and run it through its paces in your test lab, you may do so here. We just ask you to answer a few questions so we can keep track of where it's going. If it works for you consider making a donation of US$20 per instance. It'll make it easier for us to consider updates and new features for next year.
What's it do now?
Try it out and tell your friends.
Limitations (or, what do you want for free / ultra low cost?)
- This only inserts holidays for the year 2012 (well, we give you a few weeks into 2013).
- All inserted events have "Inserted courtesy of the Exchange Calendaring experts: Sumatra Development" in the agenda. (yep, even if you license it)
- We support via electronic means, so keep an eye on our blog.
Friday, September 16, 2011
Advance Notice: Sumatra in SF Sept 30, Oct 1
Thursday, September 08, 2011
Propagating Changed SIP URIs to Existing Meetings
They're changing a number of SMTP addresses and want to change the associated Lync SIPs to match. Here's Microsoft's guidance on how to do that for Office 365. And a different take on scripting a solution. See Impact of Changing a User's SIP Address for a full discussion.
Changing the SIPs is not the problem, but the number of existing meetings with the old SIPs that are then left in your users' calendars IS a problem that requires updating.
So in this example of an existing calendar item, let's say riuliano became russ_iuliano, to keep end users from going bug-house you'd want to modify all the LiveMeeting URLs in existing calendar objects server-side and update them.
And this is the cue for Sumatra's ability to manipulate Exchange calendar data.
Does anyone else out there have the same problem?
Monday, September 05, 2011
More Weirdness in an Over-Loaded Google Calendar
The goal was to see if deleting items would get me below a threshold, or if the threshold was irreversible.
The weird thing is that once I got that message, previously-deleted objects began re-populating the calendar. Calendar zombies had risen from the grave!
Clearly there's a cache of the deleted items. I have no information on when, how often, or if it gets cleared in a single session.
There is also some interesting behavior with old items. To see this, load 10-15 years worth of calendar data and then travel back to some month in the year 2000. The following unobtrusive message will display while the data renders (and it seems to take a while):
Added on September 6, 2011:
A variation of the above: cannot load your data -- come back when it's more convenient for Google....
Wednesday, August 31, 2011
Unable to Delete All Data in a Google Calendar
You go into your settings with the hope of deleting all data from your test account (and please make sure it is a test account):
Wednesday, August 24, 2011
Thursday, August 18, 2011
Preliminary Google Calendar Upload Speed Tests
So for an interesting comparison -- how long does it take to upload calendar data into Google Calendar?
In a test derived from real world data set (legacy Meeting Maker being the organ donor in this case) our current technology uploaded 13,651 appointments to Google Calendar in 9:12 (i.e., 9 minutes and 12 seconds). Just in case I happened to hit a low time for network traffic I ran the test again with additional loads on my PC and got all data inserted in 15:54 (call it 16 minutes).
Using the more conservative figure, this represents an average upload rate of about 853 calendar objects per minute into Google Calendar! The faster result gives 1480 objects per minute, but I doubt that is sustainable over the duration of a migration.
For those of you who do not understand why we get excited by these numbers: this is similar to the peak throughput we see inserting into an on-premises Exchange installation (you always hear us use the figure 850 calendar objects per minute for estimation purposes). Our timings on hosted Exchange come in at about 120 calendar objects per minute.
So Google Calendar is about ten times faster than an upload into Hosted Exchange!
Let me repeat that -- our early testing indicates that calendar uploads into Google Calendar execute an order of magnitude faster than an upload into hosted Exchange.
Now, let me point our a few things to beware of: these numbers may vary as our code evolves, but are in accord with the field experience of one of our test sites (which motivated this timing).
I have no idea what Google does right that Microsoft does not, given that both companies are in total control of their data centers, server code, and APIs. I do know that for purposes of migration speed Google Calendar kicks Exchange calendar's buttocks all the way to the curb and then slam dances its corpse into pavement pizza.
Since regular readers will know that your author does not believe in letting ANY of the guilty off without some sentence, I want to point out that as mediocre as Microsoft EWS documentation and support has been, it is light years ahead of Google's documentation of their calendar APIs which our team has taken to completely ignoring because it's led us down too many bad paths already.
And after inserting 40,000+ objects into Google Calendar, the Delete under Settings does not seem to work:
Tuesday, August 09, 2011
iCal Sharing in Exchange 2010 Sp1
We passed along this article, in which Steve Goodman wrote a superb post describing how Exchange 2010 Sp1 allows users to share calendars with non-Exchange users (e.g., Google, Zimbra) using public or encoded URLs. (And users can be alloweed to do this via OWA!)
And remember, this is calendar SHARING, not cross-server calendar synchronization.
Update Rollup 4 for Exchange 2010 - re-issued
The release was announced on Technet. Here is the new link to download the rollup
BTW, Update Rollup 5 for Exchange Server 2010 Service Pack 1 release remains "on-schedule" for release in August 2011.
Wednesday, July 27, 2011
First Field Migration into Zimbra 7 Accomplished
We had early reports of problems with recurring meetings in Z7 migrations, but tested well in advance to make sure that did not happen. All is well.
Thursday, July 21, 2011
Prevent ghost delegates: find (and remove) delegates before terminating user
In a previous post, I outlined a process to find and remove Ghost Delegates from Exchange. (To recap: you turn a delegate a ghost delegate by deleting the account from AD without removing the delegate permissions in Outlook.)
In this post, I'll outline a process that avoids the ghost delegate problem (by finding and removing delegates BEFORE deleting the terminated user's account.) There are two steps: search AD, and then remove the delegates.
The hard part was finding all users that granted delegate rights to the "soon-to-be-deleted-account." I dredged up two "oldies but goodies:" LDIFDE and CSVDE to do a reverse-lookup for a terminated user using the "public delegate" fields:
- PublicDelegates "What mailbox(es) did I give delegate rights to"
- PublicDelegatesBL: "What mailbox(es) am I a delegate of"
Here are both commands:
LDIFDE.EXE -F delegateLDIFDE.TXT -D "OU=TestUsers,DC=myDC,DC=mydomain,DC=com" -L "name,mail,PublicDelegatesBL" -R "(&mail=termuser@mydomain.com)(PublicDelegatesBL=*))"
csvde -f delegateCSVDE.csv -s myDC -l "name,mail,PublicDelegatesBL" -r "(&mail=termuser@mydomain.com)(PublicDelegatesBL=*))"
Note: the LDIFDE command limits the scope of its work to the "OU=TestUsers;" csvde seaches the entire enterprise directory.
Here is an output from LDIFDE, in which we found all of PublicDelegatesBL of "Andre Admin" (it's just Big Boss):
Next, use Glen Scale's powershell code to confirm the terminated user is a delegate, and then remove that user from all accounts he was granted delegate rights. (The following commands were described in a prior post.) Step 7 is where the terminated user is removed as a delegate. I have shown how to display delegates and forwarding rules, just as an FYI.
- set-ExecutionPolicy RemoteSigned -force
- import-Module ./Messageops-Exchange.psd1
- $myCred=Get-Credential -Credential myservice@mydomain.com
- $newprofile=new-messageops.ewsprofile -identity:myservice@mydomain.com -exchangeversion:exchange2010_sp1 -casURL:https://mycas.mydomain.com -Credential:$myCred
- Get-MessageOps.MailboxDelegateReport-p:$newprofile -id:bigboss@mydomain.com
- Get-MessageOps.MailboxDelegateForwardingRules -p:$newprofile -id:bigboss@mydomain.com
- Remove-MessageOps.MailboxDelegate -p:$newprofile -id:bigboss@mydomain.com -DelegateAddress:termuser@mydomain.com
Notes: the "terminated" user is termuser@mydomain.com; the account that granted delegate rights was bigboss@mydomain.com.
I've pulled the URLs and commands into a text file that you can download to simplify typing....
--Russ
p.s.: I tried Exchange Management Shell, using a new Exchange 2010 commandlet: "Get-MailboxFolderPermission." But it was difficult to do a reverse-lookup (i.e., find all users who grated the "terminated user" permissions: I had to type that user's display name correctly or got no hits.... Plus, this commandlet isn't available for Exchange 2007 customers.
Here is how to get Big Boss' permissions:
Get-MailboxFolderPermission -Identity bigboss:\Calendar
FYI, you can set accessrights, particularly editor rights, between "big boss" and "her admin," that you can't do if your end users access their Exchange calendars via OWA (only):
Set-MailboxFolderPermission -Id:bigboss:\Calendar -User:herAdmin -AccessRights:Editor
The Ghost Delegate Exorcist
All was fine until someone invited the boss to a meeting. The boss received an NDR after the delegate forwarding rule sent that calendar message to the [now deleted] delegate. That NDR calendar message was sent back to the boss which got forwarded to the [still deleted] delegate, which generated another NDR......)
No big deal. They went into the boss' Outlook delegate and tried to remove the delegate, but couldn't -- Outlook reported the delegate was "(not found):"
The delegates are there but you can't delete them. Ghost delegates.....
The root cause: they didn't remove the delegate permissions and forwarding rules before they deleted the admin assistant's mailbox.
In this post, I'll talk about how to rid Exchange of those ghost delegates. In the next post, I'll talk about how to find and remove delegate permissions BEFORE you delete the terminated user's account.
For the curious, Glen Scales blogged about "How to deal with invalid delegates," and "Displaying delegate forward rules." Even better, Glen wrote some powershell code to exorcise our ghost delegate!
Here is what we did to remove the ghost delegates
- Download and install the Exchange Web Services Managed API
- Create a sub directory, and copy the Microsoft.Exchange.WebServices dll into the directory; Run Exchange Powershell (as administrator), and change to that sub directory.
- Set the execution policy, import the module, and create a credential variable (using your service account): set-ExecutionPolicy RemoteSigned -force import-Module ./Messageops-Exchange.psd1 $myCred=Get-Credential
- Next, define an exchange profile (as above, we provide our service account with impersonation or full access permissions. See our blog post on impersonation in Exchange 2007 or Exchange 2010), and point to our CAS server directly
$newprofile = new-messageops.ewsprofile -identity:mySVCacct@mydomain.com-exchangeversion:exchange2010_sp1 -casURL:https://mycas.mydomain.com -Credential:$myCred
- See the list of valid and invalid (ghost) delegates and rules:
Get-MessageOps.MailboxDelegateReport -p:$newprofile -id:bigboss@mydomain.com
Get-MessageOps.MailboxDelegatesInvalid -p:$newprofile -id:bigboss@mydomain.com
Get-MessageOps.MailboxDelegateInvalidForwardingRules -p:$newprofile -id:bigboss@mydomain.com - Finally, remove invalid forwarding rules, and THEN remove the delegates (in that order!)
Remove-MessageOps.MailboxDelegateInvalidForwardingRules.unsupported -p:$newprofile -id:bigboss@mydomain.com
Remove-MessageOps.MailboxDelegatesInvalid.UnSupported -p:$newprofile -id:bigboss@mydomain.com
-Russ
Sunday, July 10, 2011
Migrating Zimbra Calendar to Hosted Microsoft Exchange
A few quick guidelines:
- If you have more than 250 users it is cost-effective to use our full-scale migration technology. It's completely server-to-server, leaves end-users out of the loop, and has results as though you've been using Exchange calendaring all along.
- For a few hundred users or under, try our Decaf option. Application here. Documentation here. It's a server-side ICS import to hosted Exchange, and right now it's mainly geared towards Oracle Calendar migrations, but we'll open it up to Zimbra users if we see enough demand.
Monday, July 04, 2011
Exchange 2010 to Google Calendar Server-Side Calendar Migrations
Now that we finally have OAuth for Google working (one of our engineers described Google's documentation as having "duplications, contradictions and gaps in between." I describe it as a "mess") we're inserting calendar data server-side to Google with full-fidelity and no end-user intervention.
Yippee!
We've read the handwriting on the wall and see that there are sites out there looking to bring their calendar data from Microsoft Exchange over to Google and are not thrilled about having to use PSTs to do it (we don't blame you).
If you are contemplating such -- drop us a line. We want some feedback on how you'd like it implemented.
Thursday, June 30, 2011
Our Office 365 Experience Thus Far...
That none of this has changed or been addressed through the beta period of O365 should not be surprising to anybody not under the influence of Prozac or electroshock.
In fact, despite bringing this to Redmond's attention, we've gotten zero feedback, seen zero progress, and expect zero results.
Now that Office 365 is out of beta and in the production, plan on all these nagging "problems" getting re-classified as "features."
Tuesday, June 28, 2011
Oracle Beehive to Exchange Migration
Turns out that at least one Oracle Beehive site (see: Is Oracle Beehive DBA (Dead Before Arrival)?) wants to migrate to Exchange.
A quick look at the Oracle Beehive Administrator's Reference Guide and our technology convinces me it should be not too difficult to do at the level we do it at: full-state, server-side to server-side.
Summary changes in our usual process:
Use xCalReader's ICS option.
You'll need a USERS.TXT and RESOURCES.TXT, which should come out of the Beehive utilities list_users and list_resources (be careful of format).
And you will need to export the calendars using the export_icalendar function.
Friday, June 24, 2011
When a user has 15,000+ unread items in the inbox....
Last week we moved a client into Exchange 2010 (on-premesis). BUT the Sumatra Exchange insertion tool hung while inserting one user. For hours. Restarting the tool and rebooting boxes didn't help. After much digging we found the problem: that end user had 15,000+ unread emails in her inbox. What was the issue? (no, not why would we migrate a user with 15,000 unread emails in their inbox who probably left the company three years ago....)
The client hit an Exchange threshold. The issue is described in a Microsoft Technet article: Understanding the Performance Impact of High Item Counts and Restricted Views.
The article says: ...In Exchange 2007 ... an acceptable user experience can still be maintained with item counts as high as 20,000 items. We're still researching if that limit changed for Exchange 2010. Our client hit that wall in Exchange 2010.
So who are these big-bad-inbox-boys and girls? Here's a powershell command: (note, I've set a conservative threshold of 10,000 items for just user mailboxes.)
Get-Mailbox -filter {RecipientType -eq "UserMailbox"} -ResultSize unlimited Get-MailboxFolderStatistics where {($_.name -eq "Inbox" -or $_.Name -eq "Calendar") -AND $_.itemsinfolder -ge 10000} sort-object ItemsinFolder -Descending ft Identity,ItemsinFolder,FolderSize
-Russ
Follow-on to the Headaches of Cloud Migration
http://ferris.com/2011/06/03/moving-to-hosted-exchange-plan-for-hiccups/
There is never a free ride when you move an entire server.
Friday, June 17, 2011
International Characters and an OCS to Google Calendar Migration
Thursday, June 09, 2011
Oracle Calendar to Google Calendar - Server-Side Full-State Migration
Yep. You read me right: Full state.
Meetings are meetings with guest lists and status.
This will also work for Zimbra calendaring to Google and Meeting Maker to Google.
We are still working on a few parts of this, but it is now basically completely functional and in two test sites.
One other thing. If you wanted to take all your calendar data from something called Microsoft Exchange and migrate it full-state into Google Calendar, that can be arranged.
June 12: In response to queries. This is all SERVER-SIDE to server-side with no end-user / client-side intervention.
Wednesday, May 25, 2011
Inserting holidays into hosted Exchange without an Outlook client
So extending Decaf to insert holiday files was not too much of a stretch.
Since we focus on migrating OCS to Exchange, we used the relevant parts of their ICS format for our template.
Create a text file using this template to insert holidays:
BEGIN:VCALENDAR BEGIN:VEVENT TRANSP:TRANSPARENT SUMMARY:New Year’s Day STATUS:CONFIRMED LOCATION: Any time zone in your system DESCRIPTION: No work day DTSTART;VALUE=DATE:20120101 DTEND;VALUE=DATE:20120101 END:VEVENT END:VCALENDAR BEGIN:VCALENDAR BEGIN:VEVENT TRANSP:TRANSPARENT SUMMARY:Holiday on the 14th STATUS:CONFIRMED LOCATION: Company-Wide DESCRIPTION: Suppose Jan 14 was a holiday in your company DTSTART;VALUE=DATE:20120114 DTEND;VALUE=DATE:20120114 END:VEVENT END:VCALENDAR |
This will insert server-side and happen on the given dates, regardless of time zone (!) So a user in the USA or Canada need only put one holiday file together and can use it for all users.
And you go here to insert it. Our usual restrictions apply. Of course UNDO works for this.
As always, any feedback is welcome.
We're debating whether to include an option to insert for all users on a domain -- which is certainly possible but we're a little leery if it's in demand.
Wednesday, May 18, 2011
Sumatra Decaf: Insert Oracle Calendar ICS into Hosted Exchange
- This works only for hosted Exchange (e.g., Live at Edu, Office365, BPOS)
- We keep track of the domains that insert and limit it to 5 accounts on that domain by default
- We've geared this to the ICS exports from Oracle Calendar System. Others MIGHT work, but they are a lower priority to us. Each ICS upload is limited to 1 Mb and it inserts only from Today (i.e., the date you are inserting) forward.
- In a few days we'll show you how to use this to insert holidays server-side.
- Read the Help PDF at the site for more information.
Sunday, May 15, 2011
Silverlight web service times out after 60 seconds
You've set httpRuntime executionTimeout and binding SendTimeout, but your app still times out after 60 seconds. The problem is the CLIENT, not the server, is timing out.
In your Silverlight app, set a timeout after you instantiate your service client. For example, set a 30 min timeout on your service called "mySvc:"
mySvc.ChannelFactory.Endpoint.Binding.SendTimeout = New TimeSpan(0, 30, 0)
Friday, May 13, 2011
Creating All Day Events with EWS in Office365
Thursday, May 05, 2011
Web-Based, one-step Oracle Calendar to Hosted Exchange migration
We're looking at how we want it to evolve and would welcome some input from you folks.
Thursday, April 28, 2011
Progress on migrations to Google Calendar
Check out this screenshot from our latest tech:
The important thing is the yellow highlighting. Yep -- we got attendees in with their responses.
Now we're working on the mappings and recurrences. So those of you out there stay tuned -- there is light at the end of the tunnel
Monday, April 04, 2011
Creating a Room in Office 365 Beta
Monday, March 28, 2011
Oracle Calendar Migrations and Long Resource Names
If your Oracle Calendar resource name is longer than 32 characters (and those 32 characters were the same as some OTHER resource's) we weren't handling the error condition gracefully.
That is fixed in version 5.1.01 of xCalReader.
This is probably not an issue for most teams in migration but if you do not have the latest version and want it just contact us.
Friday, March 25, 2011
Outlook Live URL changes
URL Changes |
URLs that go directly to Outlook Web App, such as http://outlook.com or http://outlook.com/owa should be changed to go to http://outlook.com/ |
|
If you are using the URL http://outlook.com/ecp to access the Exchange control panel management interface, you will also want to modify that URL to look like this: http://outlook.com/ecp/?realm=contoso.edu. |
Single Sign-On Changes |
Single sign-on solutions using the Live@edu SSO toolkit must make the following changes: |
|
Monday, March 07, 2011
Oracle Calendar / Outlook Free Busy Interchange
Uniical –export –u “S=Hendrix/G=Jimi” –f /…/EXPORT/jimi.hendrix.ics -n 1 –end 12/31/2011 –start 10/31/2011 –p PASSWORD |
So what does ICS look like and what schematic takes it into IFB?
WARNING: Experimental evidence has shown that for this to work a contact with Internet Free Busy MUST be in your Contacts folder, not a subfolder, or a folder with any other name. |
Friday, March 04, 2011
New xCalReader for using ICS format to migrate Oracle Calendar
NB: This is because we've been picking up increasing reports of weirdness with the UNICPOUTU format. We've applied all our usual expertise to the iCal exports: including converting RDATE arrays to real recurrence patterns using RTYPE in Outlook / Exchange.
Also this includes support for Zimbra 6 migration.