Tuesday, August 21, 2018
Enterprise Exchange / Office 365 Resources: You can manage them better
But one thing we can help you with is RESOURCES. There are a series of things you can do to make your resource management smoother from an end-user experience in Exchange. AND you can do them server-side.
The resources we're talking about here are the resources in a calendaring sense: Rooms and objects/services that are scheduled with meetings. (I mean, you KNOW this is what the whole blog is about, right?)
A (few) word(s) of warning on prerequisites here: it helps to have experience with PowerShell and Permissions. You are definitely going to need experience setting permissions for resources in Exchange.
We've blogged on all of this before, but this is the first time we've put it all together in one convenient post.
Let us begin.
Have you really thought through Delegate Access?
You may be using Delegate in the less effective way. In general you should use booking delegation instead of classic delegation.
See: Two ways to grant access to a Resource in #MSFTExchange
Explanation: Booking delegation makes it easier to access the resource should you need to (since classic delegation resources are disabled accounts by default) and you do not have issues with server vs. client-side rules and priorities.
This does mean having resource delegation managed by the administrator. As we proceed you'll increasingly see how this saves you hassle later on.
Do you ever have two meeting groups showing up for the same room?
You have had a double booking issue and didn't think you could do anything about it.
We KNOW you do because Double-Booked Meeting Rooms in Office 365 (and how to avoid them) is one of our most popular posts EVER!
But you can
If you just want to see how big an issue you have, use our reporting tool:
See: Callable PowerShell script to report on double booked resources in Exchange 2016 / Office 365
it's a PowerShell script that will tell you which resources have double-bookings.
If you want to proactively manage the issue on an on-going basis -- check out our solution to the problem:
Three Basic Ways of Dealing with Double-Booked Resources in the Sumatra cmdlet
Tuesday, September 09, 2014
Sumatra Holiday cmdlet for Microsoft Exchange - Download
If you want to suggest additions or modifications, contact us.
And check this blog or Follow @sumatra_dev to see what we'll support in the future.
Tuesday, August 19, 2014
Western Australia Holidays with the cmdlet
September 16, 2014 update. Read this post to download the cmdlet.
February 23, 2015: Folks, please leave us some feedback about what you like in the cmdlet and what you'd like changed. We see how many of you are downloading it. We'd love some feedback.
Tuesday, August 12, 2014
Server-side cmdlet for Holiday Insertion into Microsoft Exchange
Tuesday, December 17, 2013
Open Source Server-Side Lite Holiday cmdlet for Exchange
The words send shivers down my spine.
We got our first request for a tool to insert holidays server-side after we did a migration for the folks at HMS (shout out to you guys!) for Exchange 2003. That was CDO-based tech, with its positives and negatives.
After Exchange 2007 came out we re-wrote the tool for Exchange Web Services (EWS), added a variety of features and found that folks really wanted it, but not at enterprise licensing levels. Go figure.
But it's a good way of showing what we can do with calendars in migrations, so we've produced an open-sourced lite version of a holiday cmdlet.
Sample code where we build the holiday looks like this:
We've also hard-coded a few things (like, it's picking up your credentials to authenticate against Exchange, so you ARE the service account!).
We think of this more as a mini-tutorial on how to do a calendar-centric cmdlet.
Why a lite version and not the full thing?
Mainly because the full version has a lot of expertise behind it that we're reticent to just give to those of you toiling out there on software knock-offs.
Where from here?
We are market-driven. We're keeping an eye on what we hear back.
Tuesday, September 10, 2013
Server-side Holidays for Microsoft Exchange cmdlet
It works with Exchange 2007, 2010, and 2013, as well as Office 365.
You will have to set permissions to be able to access calendars.
You can download it here.
Update December 10, 2013: Link removed while we consider alternates for the holiday cmdlet.
Update December 17, 2013: We created an open-source cmdlet project on CodePlex.
Sunday, January 20, 2013
SuHoliday cmdlet and Exchange 2007
Short answer: Yes you can do it. Nothing the the was we use the EWS API is specific to Exchange 2010 to the exclusion of Exchange 2007.
However, setting Permissions in Exchange 2007 IS VERY different from Exchange 2010, so you will have to adjust for that. Taking all of the Exchange 2007 permissions stuff out of the documentation made it substantially shorter and clearer,
If you need help look at posts in this blog involving Permissions and Exchange 2007.
Thursday, January 03, 2013
Exchange 2010 Permissions Debugging Protocol updated
The latest is available at this link: Exchange_2010_Permissions_Debugging_Protocol.pdf and supersedes all earlier versions.
Tuesday, December 11, 2012
#Exchange #PowerShell cmdlet for server-side holiday insertion updated
You can read about it and get a download link by going here and filling out a form (we want to keep track of who is using it).
You can read the documentation here (and this includes how to insert class schedules using the tool as well as how to use the web-based version we've done).
We have had tens of thousands of people using this version since last year, but only a handful actually made any donations to the project. So we're setting up a payment mechanism for the non-trial version. When that's ready we'll let you know.
Wednesday, November 28, 2012
Holidays into #Exchange and #Office365 via Server-Side Tools
Mainly we're writing because we've just completed a site that lets you upload holidays into Office 365 without the cmdlet.
Note that you can also remove inserted holidays automatically but leaving all other calendar data intact.
The web-based version allows you to do select a list of SMTP addresses to insert at once. In the unlicensed version we limit this to 25 users per day, and only allow you to select US or UK holidays that we have already defined.
The full cmdlet allows you a lot more functionality: multiple time zone support, script-ability, and LDAP query insertions.
For the record, US Federal Holidays came from http://www.opm.gov/operating_status_schedules/fedhol/2013.asp Our default file will insert JUST THIS LIST (i.e., NO “Day after Thanksgiving”) and we left Veteran’s Day a ”Free” day rather than a Busy day,
Friday, November 16, 2012
Beta sites wanted for injecting holidays into Hosted Exchange / Office 365
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.
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.
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.
Thursday, December 09, 2010
EWS, Outlook Live, Exchange Release Levels, OWA, and WTF?
The subject started out as Holidays but morphed into the more general one of All Day Events (ADEs).
Using EWS, it is possible to insert ADEs and we do LOTS of them in the course of a migration.
BUT, some combination of EWS, Exchange release levels, and OWA are currently giving our usually stable process conniption fits.
Start off with inserting an ADE under either Exchange 2007 rules (with deprecated Time Zone, rules, but bear with us for a moment here) into Live@Edu (not that we have a client trying to do this exactly now or anything like that).
In Outlook attached to Live @ Edu they will appear correctly (as below) if you specify Exchange 2007 SP1. But it will appear as a two day banner if you specify Exchange 2010.
JUST to keep thing really really interesting, viewing the EXACT SAME ADEs in OWA shows the 2007 SP1-defined ADE showing up correctly, and the 2010-defined ADE spanning THREE days:
If your head does not hurt you have not been paying attention.
SO, for the time being while running a holiday insertion with our tools, specify Exchange 2007 SP1. Everything will be hunky-dory.
Don't believe us? Here's the VB .net code (we use Exchange Web Services Managed API v1.1. )
Public Function ewsBuildAllDayEvent() As String
Try
Dim myUserEmail As String = "user10@test.com"
Dim myEWSURL As String = "https://sn1prd0202.outlook.com/EWS/Exchange.asmx"
Dim myExchangeVersion As ExchangeVersion = ExchangeVersion.Exchange2007_SP1
Dim myLogon As String = "admin@test.com"
Dim myPassword As String = "Gu3ssWh0"
'create Service
service = New ExchangeService(myExchangeVersion)
service.Url() = New Uri(myEWSURL)
service.Credentials = New WebCredentials(myLogon, myPassword)
service.ImpersonatedUserId = New ImpersonatedUserId(ConnectingIdType.SmtpAddress, myUserEmail)
'build appointment
Dim appointment = New Microsoft.Exchange.WebServices.Data.Appointment(service)
appointment.subject = "MyTestADE"
appointment.Start = CDate(Now.ToShortDateString)
appointment.End = CDate(DateAdd(DateInterval.Day, 1, Now))
If myExchangeVersion = ExchangeVersion.Exchange2007_SP1 Then
appointment.StartTimeZone = System.TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time")
Else
appointment.StartTimeZone = System.TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time")
appointment.EndTimeZone = System.TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time")
End If
appointment.LegacyFreeBusyStatus = LegacyFreeBusyStatus.Busy
appointment.isalldayevent = True
appointment.Save(SendInvitationsMode.SendToNone)
Return "OK"Catch ex As Exception
Return ("ERROR: " & ex.Message)
End TryEnd Function
Monday, November 08, 2010
Putting Holidays into Live @ Edu Server-Side
Note that this is an All Day Event (and you can specify if the time is to be shown BUSY or FREE):
Any of you who have been through a migration with us know why we keep the "(Migrated)" tags, but you can decide to not use them.
This is scriptable so you can create holidays as you provision users if you have an automated system for so doing.
A few other things to keep in mind:
- This runs as an EWS application from a 32-bit workstation. So all your credentials are completely under your control. If there's demand to run this as an online service we'll listen.
- We take the default time zone of your server for all insertions. If you have users in multiple time zones and want to do this contact us -- that would be a different version.
- You can specify a single user, a list of users, or an LDAP query to handle your insertion.
Friday, September 10, 2010
Sumatra Utilities - Holidays for the remainder of 2010
So Exchange Admins in the USA can server-side insert Columbus Day, Thanksgiving, Christmas, and New Years, and Canadian users can do Thanksgiving and Remembrance Day, and UK users can do bank holidays from now until the end of the year and... OK OK you get the idea.
This version will only insert data up to January 2011. This version works with both Exchange 2007 and Exchange 2010, and will not work for hosted Exchange (i.e., Live @ Edu). Hosted sites working with us on migrations already have versions that will insert holidays.
To download the ZIP file just click here. If you want to read through the documentation first, please do.
Look for an update from us in October about what we'll do with server-side Exchange holidays in 2011.
If you are looking to private label or distribute and support the Utilities holiday insertion tool we'd be happy to discuss that.
Tuesday, February 02, 2010
Removing Outlook Holidays Server-Side
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.