One of the new features available in Exchange 2010 SP1 and higher (including SP2 and SP3) that I’m excited about (and already making use of) is the ability to share calendars from Exchange either in iCalendar or HTML format.
So – why is this useful? Doesn’t Exchange 2010 already have improved Calendar sharing with the new federated sharing features available from RTM? Well, yes it does.. And this new features doesn’t replace federated sharing, however if you want to share calendars now is that the world doesn’t run Exchange 2010. Some organisations will move to it over the next year or two; but lets face facts – some enterprises out there may move to Google Apps, Zimbra or something else, so Federated Sharing isn’t going to be an option. While a workaround might be to create partner mailboxes or use third party software, it would be nice to have a solution that “just works” and enables the business to collaborate with partners easily without worrying too much about what technology each other uses. Only with open standards can this happen and with SP1 that’s now a reality.
The ability to publish calendars with anonymous viewers (and that’s an important point, which I’ll come back to) means that should the admin enable it, the user can now go in via OWA, select the calendar they wish to share and choose to publish it. They then receive a set of URLs that they can share via email. The recipient then can simply refer to the calendar via a web browser, or by using any iCalendar compliant software or web app they can subscribe to the shared Calendar.
Getting back to the anonymous part, there are two options. The end user can publish a calendar with a “public” URL that is searchable. The other option is a “restricted” URL with an obfuscated URL. Additionally, the user can restrict what will be shown for each calendar they choose to publish. On top of this, the admin can restrict via sharing policies the maximum amount of information users can publish, and sharing policies can be tied to a certain set of users. So there is some risk in enabling the facility, but by default no user’s calendars are shared, and there are a number of controls available to user and admin to pull the feature in line with the business and individual user’s requirements.
Now you know a little more about the new feature, let’s take a look at how it comes together from a user perspective, and how it’s configured by the admin.
The User Experience
If a feature is going to work well it has to be easy for a user to find and configure. Exchange 2010 SP1 doesn’t disappoint as the feature is listed in both OWA and Outlook in the same place as other calendar sharing options.
For an OWA user, they select the calendar they want to share, then choose “Share”, and the option is listed as “Publish This Calendar…”
If they’re using Outlook 2010 (beta ), the user right clicks the calendar they want to share, chooses “Share” and again, it’s listed as “Publish This Calendar…”
After clicking “Publish This Calendar…” via OWA or Outlook, the options can be chosen including the detail to show, the date range and the type of access:
After clicking “Start Publishing”, the links are generated:
The user can now either copy the links from this page, or via “Share” choose “Send Links to This Calendar…” which opens a new email with the two URLs attached.
Opening the calendar by the recipient is easy enough. For our first example, let’s have a look at Exchange’s primary competitor, Google Apps. To add the shared calendar to Google Calendar, the end user chooses “Add” then “Add by URL”.
They pop in the iCalendar URL, and it shows up in the recipients Google Calendar. You’ll see below I’m subscribing to two Exchange 2010 SP1 calendars – my personal one and my team’s:
(In my case – this is one aspect I personally like about the feature. Although I don’t use Google Calendar I do use iGoogle and it allows me to see my Exchange calendars on my homepage via the Google Calendar widget.)
Next up it’s Zimba. Add a new Calendar, choose Synchronise appointments from remote calendar, then pop in the Exchange iCalendar URL:
Again, the Calendars show perfectly:
Finally let’s not forget Outlook users; from Outlook 2007 onwards iCalendar subscriptions are supported. I’ve quickly tried this in Outlook 2010 beta – simple right click in the calendar list, choose “Add Calendar” and then select “From Internet…”
As above, after popping the iCalendar URLs in the subscriptions are created in the local Outlook client.
And, finally let’s not forget HTML sharing, which does exactly what you’d expect:
The Admin Experience
Now you’ve seen the user experience let’s take a look at what needs to be done to get it up and running in your SP1 environment. To get it all enabled we need to do the following:
- Set an ExternalURL for your organisation’s Client Access Server
- Enable Calendar Publishing on the OWA Virtual Directory
- Create or modify the sharing policy to allow anonymous sharing
Setup of the ExternalURL is pretty standard stuff so I won’t cover it here. Moving on to the Calendar Publishing OWA virtual directory feature, let’s look at what it’s made up of.
The Calendar Publishing works via a new virtual directory – “calendar”. This lives beneath the “owa” virtual directory as “/owa/calendar” and has anonymous, http access enabled (watch out ISA/TMG users). It’s enabled by default but should it need re-enabling it’s pretty straightforward using Powershell. Here’s a quick example:
Set-OWAVirtualDirectory “owa (Default Web Site)” –CalendarPublishingEnabled:$true
Next up, a sharing policy needs to be configured to allow anonymous access. You can do this via EMS or via the EMC. The EMS example below changes the Default Sharing Policy to only allow anonymous access with maximum access level of Calendar Sharing with Free/Busy plus Subject, Location and Body.
Set-SharingPolicy -Identity “Default Sharing Policy” -Domains “Anonymous:CalendarSharingFreeBusyReviewer”
Via the EMC is also pretty straightforward and particularly suitable when you need to create multiple policies or modify existing ones. Here’s a quick run through of how to create a new policy via EMC that only applies to certain users:
Open EMC and navigate to the Organizational Configuration node, then to Mailbox and select the Sharing Policies tab:
First, examine the sharing policies already present. In the above screenshot, I’ve got a single sharing policy which is disabled. As we’re adding a new policy right-click in the white space or click “New Sharing Policy…” on the actions pane. Give the policy a name and add a new “domain” called “Anonymous” and select an appropriate maximum level of access:
After you’ve added the “domain” anonymous to the policy, make sure it’s enabled, then press Next. On the next page you’ll be presented with the opportunity to add mailboxes now. You can of course add these later either via the EMC or via EMS:
Press Next, then after confirming the details, press New. After completion you’ll see a warning that lets you know calendar publishing is enabled for this policy:
Press Finish and we’re all done. You should now be able to login to the specific mailbox and following the first part of the article share the Calendar.
We’ve had a look at what the new feature brings both from an end-user experience and to an administrator. As we can seen it’s great for sharing calendars in an environment where open standards are important or where partners use different products. I’d like to see full WebDAV compatibility so a Linux user can plug straight in and go, but this is a great start as far as sharing is concerned.
Getting back to new shared calendar features in SP1 – I’m hoping more can be revealed over the next few weeks as there’s still a bit more in store! 🙂 And of course, you’ll be able to get your hands on this yourself early June.
A final thought – bear in mind all the features and steps described here are not necessarily final so don’t be surprised if things change over the next few months.
94 thoughts on “Managing iCal Calendar Sharing with Exchange 2010”
I am having an issue where the calendar doesnt sync the entries created after subscription. Can you please assist.
Pingback: Публикация ресурсного календаря Exchange 2013 | Блог IT'шника
Can this be configured if using Office 365?
Just had a colleague ask me about Calendar Sharing & I sent them your post @stevegoodman Great stuff! http://t.co/r0JLxumOIx #msexchange
Pingback: Sharing Calendars with anyone in Exchange 2013 | Steve Goodman's Exchange Blog
Hi. Works perfectly internally, but we are publishing Exchange OWA/Active Sync/Outlook Anywhere/ though UAG 2010, do you have any solutions for that?
You’ll need an additional rule to publish the HTTP path to the directory. I’ve got an example of how to do this (albeit for Exchange 2013, though it’s the same) here:
Can this also be done in Small Business Server 2011? The options for Publish only show Publish to Office.com or Publish to WenDAV Server?
I would really appreciate an answer, I know this is an old article and thread…
Does this work for GApps still? I’m getting an error stating “Settings Error – Unable to fetch the URL” when I try to add the calendar by URL to my GApps account. If you browse to the URL it works. I’m able to download the html of the calendar as well as download the ICS. Suggestions?
There’s no reason why it shouldn’t. If it works with other services, it might be worth raising a support case with google
Good article, this is what I needed…
So is it necessary to specify every mailbox that the new policy applies to? Is there an easier way to just make it apply to all users? We have about 35,000…. 😛
No, if you edit the Default Sharing Policy it will apply to all users.
Awesome job, I have exchange 2010 SP2 with no TMG or ISA and I have set the OWA virtual directory and calendar publishing enabled $true, I create a sharing policy for anonymous users and applied it to the users, so I open the OWA under calendar I published this calendar to internet, however 1- when I “send links to this calendar” to the other user, when the other user click on “Subscribe to this Calendar” in the email nothing will happen 2- When I click on “share this Calendar” and send it to the user A, when user A open the mail in Outlook or OWA there are two links in the body of the email and if he clicks on them they will open without HTTP or Webcal at the begining in the web browser and nothing will happen. Any help on this will be appreciated ?
Is it possible to set this up so that users can sync calendars on iOS
Yes, although ActiveSync is the best option for individual user access to their own calendars as it is read/write and pushes updates
I have a particular requirement at the school I work at. Staff need to share a whole school calendar which is managed by one admin user who owns the calendar. The calendar needs to be accessible on all mobile devices especially iPads. I see this as a challenge as mobile mail clients can only synchronise with calendars that are owned by the individual user. We are using Exchange 2010. Does the solution involve iCal internet calendars. I don’t want to buy any third party apps. Ian.
Yes this is the exact purpose of the feature. It does not rely on any third party software.
Has there been any changes with updates so we can share more than a year out? Is there any “tweaking” that anyone knows of to extend out a few years?
Nothing has changed unfortunately since it’s release, sadly this is a good feature that MS haven’t striven to keep improving.
Thanks for spending the time Steve, great blog!
Have you managed to publish the Priority i.e. High or Low by any chance? If you set the priority on a calendar entry in Outlook it does not appear to update in the published .ICS. You get PRIORITY:5 in the OCS no matter what you set it to on Outlook. If however you ‘Save Calendar’ direct from Outlook the PRIORITY number changes 1=High, 9=Low – but it seems to lose this when published via Exchange 2010 (Actually Exchange Online but it should be the same thing).
Is there a PS setting I am missing? I use a CalPress plugin on my WordPress site which I want to modify to do something different for calendar entries set to High priority. However if I can’t get the .ICS to tell me what entries are High then there’s no point :-(.
Is there a way to enforce users to use *only* the “Restricted” Access Level for Calendar Publishing (vs Public)? As we have users that want to share their calendars with other employees with iOS devices, but I’m concerned about security as the calendar items have sensitive information in them.
Does this method only work for a user mailbox or is there a way to implement it for a room mailbox?
To use it for a room mailbox, you’ll need to grant yourself full permissions over the room mailbox, then login to that mailbox (not just add the calendar) via OWA. You’ll then (acting as the room mailbox) be able to share it.
Great tutorial! Everything worked as described. I see the calendars on my iDevices. Can I add events similar to when I share calendars with people from my iCloud calendar?
Sorry – it’s read only. I’ve asked whether read/write access would be added and been told no.
Hi there, great tutorial. I set this up and I’m now able to publish and share calendars. However, when I open the .ics-link, the shared calendars appear correctly in Outlook but from that point they don’t update any more? Do you have any idea?
It will depend on the client – as it needs to periodically refresh and download the ICS link. Most do this by default, so I would double check your settings. Each time the client pulls down the ICS link though, it should be bang up to date.
I found the solution for that. The “subscribe-link” owa provides, uses the http-protocol. If you use this link, outlook imports the current state of the calendar and won’t update it anymore. I had to use the webcal-protocol in order to have a automatically updating calendar in outlook (i.e. webcal://link-to-my-calendar)
just in case somebody runs into the same problem
We are having an issue with the Calendars not updating in any client (Outlook, OWA, iCAL) and I tried your suggestion – but unfortunately, it’s still not updating – even if I click refresh in Outlook or refresh the page in OWA.
We have even gone to the trouble of installing a fresh CAS with the latest SP (2) and rollups (5 v2) – but same problem (admittedly, this has been joined to the existing infrastructure).
I would be very grateful for any tips on troubleshooting this – it seems like it should be so simple, but it’s as if Exchange just simply is not updating the shared calendar.
Scarily enough – the lack of updating might be by design, despite the misleading wording in OWA “subscribe to this calendar”.
Thanks for this, it is really helpful.
Am I right in thinking that anyone who gets hold of the link for the calendar will be able to view it? Or, will it be only accounts that are in my domain?
I work in a school where information is shared on a calendar. Some of that information can be ‘sensitive’. I’d like it so that only my staff can view the shared calendar. Is the only way of making this restriction to limit who the link gets sent out to?
Yes, anyone who gets the link can view it (hence the anonymous permissions) if they are able to access the link from their client.
Has anyone figured out how to handle the subscribe option being just a snapshot. Our users tend to hit the subscribe which opens as other calendar instead of internet calendar. They then add items to it and expect it to replicate back to originating calendar!…It really would be much easier if we could just remove the subscribe option and they rely upon the website to view the updates in the interim!.
It all depends on the client they are using. For remote clients using Outlook, perhaps federation is a better method of sharing rather than publishing the calendar. When I’ve used clients like Google Calendar for long periods of time they a) keep pulling down updates every say, 6-12 hours, and b) don’t allow updates.
I have a question. These instructions were great, I was able to get the Exchange / OWA servers configured, and able to publish iCals using them, and have iCal links to post on our company’s intranet site. The calendars are published, and other users can import them.
The one thing I can’t figure out is that once you publish a calendar, and then you make changes to it, how do you publish the updates, and how do subscribers synchronize to them? I keep trying, and it’s not working….
You don’t need to publish the updates, but it is up to the subscriber’s client to download updates to the calendar (which most should do)
Still not sure I follow…. Here’s an example…
1. I create a calendar.ics file in Outlook, and populate it with a bunch of holidays. I follow your instructions on how to publish it to our OWA server. I get the links, and make them available on our intranet site. Everything works great.
2. Clients copy the link, and subscribe to the internet calendar in Outlook. All the holidays show up. So far, so good.
3. A week later, I think to myself, “Oops! I forgot to add Ground Hog Day! I can’t have a holiday calendar without Ground Hog Day!” So, I go back to the original calendar.ics file and add Ground Hog Day, and save it. I don’t see how that addition gets to the OWA server, or synchronized with any subscribers. Are changes to the original calendar.ics file supposed to automatically synchronize with the OWA server? Should I somehow be editing the published version on the OWA server? I could re-publish it, but then the links change every time. Am I missing something? I need to figure this out soon… the ground hogs are getting irritable…
The ICS file is a dynamic link. So it doesn’t need updating on the server.
Outlook should be able to download updates whenever it needs.
So, say I add an entry to the calendar I’ve published. Click send/receive in Outlook (or wait till it does it itself) and the new entry should show up automatically.
By publishing your calendar, you’re not creating a one-time snapshot of it. You’re creating a URL that is an entry point to your current calendar.
Okay, just tried it again following your instructions, and everything works perfectly! I don’t know for the life of me what I did differently the second time around. Anyway, thanks for showing how to do what many internet “help” sites are saying can’t be done! Very helpful!
I found out part of my problem. I couldn’t see all that was happening because I kept using the “restricted” access level, which hashes the location. I tried using “public”, and noticed it publishing to a folder under my e-mail address:
I don’t want the .ics file to be tied to a particular e-mail address. The first reason is that I need to hand this off to our office administration staff for future updates. The second, what if I left the company and my mailbox got deleted?
Ultimately, my question is, is it possible to control WHERE it’s published to, so I can publish it somewhere more public than under my specific e-mail address? Something like:
…without my e-mail address in the chain?
Thanks for your help!
You should ask your IT department to create you a Shared Mailbox to house your shared calendar. That can be managed by a number of people, and isn’t tied to your mailbox.
Use a public mailbox, that’s the answer I was looking for! Thanks again, great post!
Hi – we have the same issue as what Joel mentioned (once the Calendar is published, users are not receiving updates to the calendar. Have tried removing the sharing policy and re-adding it again on the server side, and tried with multiple test Calendars – nothing is working. If we remove the calendar from the client side completely and add it back in again, everything appears fine there but again, it doesn’t receive updates. Am at a loss with this – any ideas?
One of the things we noticed is that OWA is really slow to respond. In Outlook, you can click “Send / Receive all folders”, and see the updates instantly. Since OWA has no such button that I know of, you have to wait, sometimes as much as a day, to see the changes replicate to the subscribed calendars. If after a day you still haven’t noticed the changes, you may have other issues.
Pingback: Calendaring: Exchange can publish to ICS, defaults to insecure | TechMonks
Thanks for the steps, it’s really helpful. However, in my test setup – whenever my application sends an calender invite to exchange user – the owa user gets an email with attachment stating “not supported calendar message.ics”. User is able to download that attachment and it integrates with his/her Outlook client running on desktop(different exchange server). My application sending calender invite to desktop client (not using my test exchange), works fine. Test exchange users sending calendar invites to each other works properly.
Both the outlook (test owa and user desktop outlook client) are using exchange 2010 SP1. It’ll be of great help if you can suggest changes on my test setup.
I’m having this same problem 🙁 Shame no one has replied yet…
But I have a question is ..Does any risks of allow anonymous access by configured sharing policy?
Anonymous access relates to the ability to publish calendars only.
Hi Steve, thanks for the awesome article! We are desperately needing the ability to publish Public Calendars. Have you heard any more on this yet? Is there a timeframe for availability?
Sorry Steve, I also just wanted to check if this is a static “snapshot” publish, or does it update periodically if you update the original shared calendar?
It’s updated when it’s requested – so a live view of the calendar rather than a one-time publish. An iCal subcription might online request an update periodically though
Excellent article, thank you very much. It helped alot for a consultant such as myself to be able to share my calendar with all of my clients.
Cheers, glad it was useful!
The only way I can publish a calendar in Outlook 2010/Exchange 2010 sp1 is to Office.com or to a web dav server. Am I missing something? Great directions by the way.
After following the instructions you should get the option in OWA to publish your calendar – if that works you should (after a little time and closing/opening Outlook) see the option in Outlook 2010 too.
Thanks for the great tutorial.
Is there a way of locking down internet publishing? eg; utilise the delegation permissions to limit access to the published calendar for something like the ‘Full Details’ option?
You should be able to create seperate sharing policies for different sets of users, this would be the only way to lock it down or provide different abilities to different users.
Great, all up and running! I’ve created a Holidays mailbox, and managed to share it.
I’m trying to write to the shared calendars via Thunderbird on linux clients, but it’s just failing. It’s looking like the ics is read-only. Any idea what I could be doing wrong?
Perhaps if you are good in trading. Its very hard to determine which will double or which will not. The bigger at stake, the bigger the risk
Pingback: Exchange 2010 as events calendar server solution for multiple calendars and universal client access - Admins Goodies
Thanks for this, it proved very helpful. Any ideas how you go the other way though? I’m trying to subscribe to web calendars from other sources online (such as those in the iCalendar directory). We’re behind a proxy so would I need to set that somewhere in Exchange? The odd thing is that even if I put an .ICS file on an internal web server and add that it still doesn’t work. OWA displays a red message that “This calendar hasn’t been upated yet.”
It should work against an internal server – I don’t know if that’s a different issue regarding perhaps MIME types, DNS resolution etc.
For external resolution, I would suggest trying the Technet recommendations for configuring the WinHTTP Proxy for Exchange, here:
How do I subscribe a user to an iCalendar feed automatically (via PowerShell hopefully!)
Cool Stuff Steve !!!
Thanks for this great step-by-step. I got mine up easily, but was dismayed to find that event category information is not being passed to the ical, even with “subject, location and body” enabled. They were included in the Microsoft Outlook Calendar Sharing Service, and we depend on the categorization to sort and display upcoming events on our web site. I wonder, is there any way to include categories?
Excellent piece, very detailed walkthrough!!
Two things that you might know the answer to:
#1 – Even though the ExternalURL of the CAS’s OWA virtual directory is set to https://… the URLs the user sends to other users is http://… If the other user changes it to HTTPS, it works fine inside and outside the organization (we enabled it for anonymous). How do we get the published URL to reflect the S in HTTPS?
#2 – When an outside user clicks the “Subscribe” button on the originating user’s HTML calendar, they are prompted to download an ICS which is just a point copy of the the originating user’s calendar that never updates/refreshes (which is not intuitive since the word subscribe implies an ongoing action). The only way around this seems to be to sent the target user the full ICS string, and have them manually add it in Outlook as an Internet calendar. Surely there has to be a way to make the “Subscribe” button be more than just a download point in time calendar.
Thanks in advance on both of these issues to anyone who can respond.
Experiencing the same problem you describe in #2 above. Dumb question: How do I get the full ICS string instead of the HTTP link ot the ICS file?
Dan, any resolutoin to your ical issues? I have the same issues.
I have not received any resolution to either issue.
Nice read well done
Awesome and thanks for sharing. Do you know for certain if an iPad/iPhone can add this calendar as a ‘reviewer’ so that those mobile devices can see the calendar entries but not modify them? Thanks!
Yes, you sure can – check this post:
Wow, this was great to go step-by-step through this. Thanks!
Do you know if I can change the granularity of the time span for publishing? Say, publish the next two weeks, or next three weeks, etc? Is there some random file that can be edited for those options?
Yep you can, though you can’t set it to anything you like. You can choose from the following before/after:
Thanks, Steve. Bummer…I was hoping to be able to specify my own ranges.
Pingback: Steve Goodman's Tech Blog - 2010 roundup and first anniversary of this blog...
Is this possible with Outlook 2003? I see “Share this calendar” but I can’t select it…. I am working in Outlook WebApp.
Thanks for any help you can provide!
With Outlook 2003, it’s not possible. The feature to share as iCal is only exposed in Outlook 2007 onwards. To share it as iCal, you need to go in via Outlook Web App in Exchange 2010 SP1 or higher.
got mine working but for some reason my ical appointments are all 2 hours ahead of my outlook calender. I have checked my regional settings and it is all correct so im pretty stumped now. any help would be appreciated. thanks
This is fantastic stuff, and I am desperately wanting more. I am trying to support a firm that uses hosted Exchange 2010, has some PC’s some Mac’s, and a lot of varying calendar clients. There are Office 2011 for Mac clients who we’ve mostly sorted out, there are XP users with Office 2007 who are sorted out, but our Mac users who want to use iCal instead of Outlook 2011 are kind of stuck.
We can add their account and see their calendars, we can even find other calendars that the users are granted permissions for. However, when we add users calendars that we are permitted to see/manage no data from the server makes it to iCal. I am stumped, the documentation from Apple is non-existent and the documentation from Microsoft is non-existent.
Any help would be appreciated.
Pingback: Shared Exchange Calendars on iOS devices | Steve Goodman's Tech Blog
Are these iCalendars updated via the Exchange server, or does it require a client to be running as it did with Outlook publishing iCalendars?
Yes they are via the server, both for publishing and subscription.
Unbelievably helpful… 4 hours of searching… and this tutorial solved my problem
Set-OWAVirtualDirectory “owa (Default Web Site)” –CalendarPublishingEnabled:$true
Now if you can tell me how to publish public folders so that I can view them in Mac’s Ical.. you’ll be my superman 🙂
Thanks, glad you like it. Unfortunately as yet there isn’t a way to share Public Folders via iCal .. The underlying cmdlets are aimed at Mailboxes.
I’ll find out if it’s in the works and if not raise it as a request as I have seen others ask for it, and my org would benefit from it also.
When I tried to run this command in the power shell, I got this error:
A positional parameter cannot be found that accepts argument ‘-CalendarPublishingEnabled:’.
+ CategoryInfo : InvalidArgument: (:) [Set-OwaVirtualDirectory], ParameterBindingException
+ FullyQualifiedErrorId : PositionalParameterNotFound,Set-OwaVirtualDirectory
Am I missing something?
Pingback: New Features in Exchange 2010 SP1 and How to Configure Them « msunified.net
Federation etc looks nice for centrally managed calendar sharing with external parties. But what about a policy to manage INTERNAL calendar sharing with Exchange 2010?
another good tutorial! thanks 🙂
Cheers, glad you enjoyed it!
Comments are closed.