Showing posts with label double booking. Show all posts
Showing posts with label double booking. Show all posts

Tuesday, October 11, 2022

Double-Booking cmdlet and Scripting

You want to check for double-bookings and inform users on a regular basis without running scripts yourself?

Sure -- a really good tutorial is here: How to schedule PowerShell scripts

https://techgenix.com/how-to-schedule-powershell-scripts/

We're not re-inventing the wheel on this one, folks.

When you have the script and cmdlet working you can either:

  1. Invoke it manually whenever you want.
  2. Set up a timer to automate it (see above)
    1. Paranoid?  Run every four hours
    2. Less paranoid?  How about every day?
    3. Mellow?  Every week.

 


Wednesday, October 05, 2022

Sumatra Double-Booking cmdlet Updated for Modern Authentication Office 365

We got some demand for the Double Booking cmdlet, apparently because Microsoft Bookings has limitations.

We've removed our dependencies on Basic Authentication and updated for Modern Authentication and are about to put the tool into a test site.

Any other folks interested, please drop us a line.

Tuesday, October 04, 2022

Inform users of double-booked meetings in conference rooms

Yep -- we have the new Sumatra Double-Booking cmdlet re-written for Modern Authentication.

And it's field-proven,

After you've gotten your IDs and Secret, and loaded the cmdlet, you can have notices like this automatically sent.



One of our tenets for best practices about double-booked resources:  Start off by treating your users like adults and letting them work it out.  If that meets with inadequate success, ratchet the capability up from there.

Friday, September 30, 2022

Finding Double-Booked Resources via Get-Mailbox in PowerShell

 

Latest version of the Sumatra Double Booking cmdlet works very well with the Get-Mailbox command in PowerShell.




Tuesday, August 21, 2018

Enterprise Exchange / Office 365 Resources: You can manage them better

As an enterprise Exchange / Office 365 administrator you've probably run across some problems that drive you bug-house: security, backup, compliance, forensics, response time, .... the list drones on like a "Wonderwall" knock-off.

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, November 28, 2017

Prevent Double-Bookings in Office 365 Calendar

We keep getting Office 365 sites coming the blog with search terms something like "prevent double bookings in 365 calendar."  

Invariably they find our post Double-Booked Meeting Rooms in Office 365 (and how to avoid them)

Let's keep in mind this is usually a problem for conference rooms.  People are double-booked all the time and it's expected.
Lots of technical info there, but as with anything in calendaring you need to also put it into a social context.

The only ways to prevent double-bookings entirely in advance and at meeting creation time are:
  1. Disallow recurring bookings for resources
  2. Set the allowable conflict rate to 0%
  3. Make the resources go through a human gatekeeper
Now the social aspect of this:  Your users are probably going to balk at any of these.  And with good reason: 
  1. Recurring meetings are just so darned useful. 
  2. An allowable conflict rate of 0% is highly unrealistic
  3. Having someone in charge of each resource defeats the purpose of calendaring
This is also a big issue because there is no easy mechanism for individuals to scan ahead and see if there is a possible conflict on the horizon with their meetings.  One of my daughters actually has this problem with a recurring meeting at her organization.

This is what makes double-booking a thorny problem. 


It's configurable and customize-able for a variety of situations.  Since it's a cmdlet it seems to be making more headway with on-prem Exchange sites, but it there's demand for something entirely cloud-based we're happy to discuss the issue.

October 2022: We just updated our cmdlet for Modern Authentication.

Tuesday, May 23, 2017

Customizing the Sumatra Double Booking cmdlet

There are a simple ways to customize the Sumatra Double Booking cmdlet, and most of them involve a text editor.

Let's look at the messages.txt file to see what we can modify there.


The entire point is to separate out the text sent to meeting organizers to inform them of conflicts.

Separating this from the application gives you the ability to easily customize it for your workplace social environment or to translate it into a different language.

Any text editor will do, and note that there are specified place holders, such as "(1)" for Conference Room Name that are reserved for the cmdlet.

The text in comments tells you the circumstances that generate the message.  For example:

#Message to notify One organizer (the one that came in after the booking was made  -or- trumped by a VIP)

The vips.txt file is the list of the primary SMTP addresses of VIPs who get automatic preference when you invoke the VIPsGetBookingPreference flag.


As you can see from this example, Janis Joplin will get preference over all other users in that scenario.

Finally there is license.txt, the domain-specific license that allows you to execute the cmdlet in your environment.  Copy the license key you got from Sumatra into this file:


Monday, May 08, 2017

Multiple Conflicts and the Sumatra Double-Booked cmdlet

Sure -- you think USUALLY there's only going to be TWO meetings in conflict.

Our data says otherwise.

So let's look at this tortured yet realistic example:

Get-suDoubleBookedMeetings -ExchangeVersion 2013 `
-EWSurl "https://outlook.office365.com/EWS/Exchange.ASMX" `
-PrimarySMTPAddress "room222@sumatra.onmicrosoft.com" `
-DeclineConflicts `
-VIPfile "c:\users\Zyg\Desktop\suDoubleBook\vips.txt" `
-VIPsGetBookingPreference `
-ImpersonationAccount "zyg-furmaniuk@sumatra.onmicrosoft.com" `
-Credential $LiveCred `
-bw 180 `
-licensefile "c:\users\Zyg\Desktop\suDoubleBook\license.txt"

Will result in this:

We've set Janis as the VIP who gets SOLE access to the resource during the time.

Note that in this scenario the cmdlet also removed a direct-booked appointment some resource calendar human delegate put in there.


Monday, April 24, 2017

Download the Sumatra Double-Booking cmdlet

You can download the Sumatra Double-Booking cmdlet for Exchange / Office 365 in a .ZIP file from here.  The ZIP file also includes the documentation as a PDF.

You will need to contact us for a key if you want to try it out.

You can just report on double-bookings using our previously-released script.

Tuesday, April 18, 2017

Three Basic Ways of Dealing with Double-Booked Resources in the Sumatra cmdlet

There are three basic ways of automatically dealing with double-booked resources in the Sumatra cmdlet suDoubleBookedMeetings.
  1. You guys work it out. aka Alert both (all) parties
  2. The early bird gets the room.  aka First one who booked wins
  3. Rank has its privileges.  aka VIPs win.  (Unless there's two of them then see 1.)
Let's look at the cases for each of those with this real-world double-booked meeting in Room 222 which both Janis Joplin and Jimi Hendrix have booked.





You guys work it out
You could think of this as the kinder-gentler "We're going to inform you but not enforce any changes" option.

Using this command:
Get-suDoubleBookedMeetings -ExchangeVersion 2013 -EWSurl "https://outlook.office365.com/EWS/Exchange.ASMX" `
-PrimarySMTPAddress "room222@sumatra.onmicrosoft.com" `
-EmailOrganizers `
-ImpersonationAccount "ADMIN@sumatra.onmicrosoft.com" `
-Credential $LiveCred `
-bw 18 `
-licensefile "c:\users\ADMIN\Desktop\suDoubleBook\license.txt"

Each of them receives this notification and nothing is removed from the conference calendar.

The early bird gets the room:
using this command:

Get-suDoubleBookedMeetings -ExchangeVersion 2013 -EWSurl "https://outlook.office365.com/EWS/Exchange.ASMX" `
-PrimarySMTPAddress "room222@sumatra.onmicrosoft.com" `
-DeclineConflicts `
-ImpersonationAccount "ADMIN@sumatra.onmicrosoft.com" `
-Credential $LiveCred `
-bw 10 `
-licensefile "c:\users\ADMIN\Desktop\suDoubleBook\license.txt"

Since Jimi Hendrix booked this slot in Room 222 before Janis Joplin did, under this scenario the room goes to Jimi and Janis is notified (Note that this notification comes directly from Microsoft Exchange):


Rank has its privileges
But let's say that Janis Joplin is a VIP and Jimi Hendrix is not.  Then, using this command:

Get-suDoubleBookedMeetings -ExchangeVersion 2013 `
-EWSurl "https://outlook.office365.com/EWS/Exchange.ASMX" `
-PrimarySMTPAddress "room222@sumatra.onmicrosoft.com" `
-DeclineConflicts `
-VIPfile "c:\users\ADMIN\Desktop\suDoubleBook\vips.txt" `
-VIPsGetBookingPreference `
-ImpersonationAccount "ADMIN@sumatra.onmicrosoft.com" `
-Credential $LiveCred `
-bw 180 `
-licensefile "c:\users\ADMIN\Desktop\suDoubleBook\license.txt"


Janis gets the room and Jimi is declined by the conference room.  Note that this results in the exact OPPOSITE of the situation just described above.


We think this covers all the social hierarchy choices you should have to make with the conference room, but please feel free to let us know.

$LiveCred is a variable we've set up to store credentials to the Exchange server in PowerShell.  Check out our earlier postings if you're unsure how to do this.

Tuesday, April 11, 2017

How the Sumatra Double-Booking cmdlet works

October 2022: We just updated our cmdlet for Modern Authentication.

Free trial if you qualify and contact us.


First: you can always get help at the PowerShell prompt with:
get-help Get-suDoubleBookedMeetings

Let's say that we have the following calendar for Room 222:

Clearly there is some double-booking here.  

Keep in mind neither Jimi Hendrix not Janis Joplin have any way of knowing from their own calendars that a conflict is imminent.

If you execute the cmdlet in this way say a week before this is to unfold:
Get-suDoubleBookedMeetings -ExchangeVersion 2013 -EWSurl "https://outlook.office365.com/EWS/Exchange.ASMX" `
-PrimarySMTPAddress "room222@sumatra.onmicrosoft.com" `
-VIPfile "c:\users\Admin\Desktop\suDoubleBook\vips.txt" `
-DeclineConflicts `
-EmailOrganizers `
-VIPsGetBookingPreference `
-ImpersonationAccount "ADMIN@sumatra.onmicrosoft.com" `
-Credential $LiveCred `
-bw 10 `
-Verbose -Debug `
-licensefile "c:\users\Admin\Desktop\suDoubleBook\license.txt"

You will generate notifications to Jimi Hendrix that look like this:



Note also that we cover the case of a managed conference room where a Delegate might be putting appointments into the room calendar.  In this case even though the time is listed as FREE, we notify both parties.  We have no way of knowing WHAT is there, but there is the potential for conflict and we need to alert users to it.

If you want to get a little more proactive, we could define Janis Joplin as a "VIP" so that her meetings take priority over everyone else's.  Look at her conflict with Jimi Hendrix here:


We execute this command:

Get-suDoubleBookedMeetings `
-writeHTML `
-HTMLFile "c:\users\Admin\Desktop\suDoubleBook\MyHtml.html" `
-ExchangeVersion 2013 `
-EWSurl "https://outlook.office365.com/EWS/Exchange.ASMX" `
-PrimarySMTPAddress "room222@sumatra.onmicrosoft.com" `
-ImpersonationAccount "ADMIN@sumatra.onmicrosoft.com" -Credential $LiveCred -bw 16 `
-VIPFile ($myPath + "vips.txt") `
-VIPsGetBookingPreference `
-DeclineConflicts `
-licensefile "c:\users\Admin\Desktop\suDoubleBook\license.txt" 


And immediately the resource calendar looks like this:

And Jimi is notified that the resource has declined his request

We think this is a very elegant solution to the problem of managing double-booking in the real world.

Tuesday, April 04, 2017

Callable PowerShell script to report on double booked resources in Exchange 2016 / Office 365

Sumatra is recognized as the expert in Exchange Calendaring.  Even so, we were surprised at the sudden influx of requests for info on the problem of double booked conference rooms.

This subject is really trending on our blog.

We're taking a two-pronged approach that helps both Exchange end-users and Exchange Admins:

First, for the DIY crowd, we released a FREE PowerShell script to report on double bookings – open source, under the MIT license.  This blog post covers the script.

Second, for the enterprise, we will release a cmdlet that does everything the free version does, and a whole lot more:
  • Reports double booked meetings.
  • Sends email notification to each meeting organizer about those upcoming conflicts and ask them to resolve the conflict. 
  • Removes conflicts by cancelling conflicting meeting occurrences that Exchange allowed (even though there was already an existing meeting booked for that room/date/time.)
  • Preferentially keep conflicting bookings for company VIPs, and,
  • Designed to receive piped input from Exchange PowerShell cmdlets.

This cmdlet will be a paid, licensed version.

So first, the script.

It's available for download here.  We call it the Sumatra Double Booked Resources Reporting Script.  It's a text file, you'll need to rename it as a .PS1.  We do this or else your anti-virus software will get huffy. 

Successfully generating your report will give you results like this:

which will tell you the room with conflicts (not surprising since you have specified it, see below), the organizers, start and end date of the conflict and the number of other parties involved?

Number of parties?  Yes.  Note that one of the meetings above is triple-booked.

The text file is meant to be self-documenting, but in case you need some examples, here you go.

To get a report for a single resource (with some specific examples):

To generate a report for ALL resources, piped in from Get-Mailbox:
To generate reports for multiple rooms from a file:
This generates reports to the Exchange Administrator.

These examples in more general form are in a text file here.

Those of you who know PowerShell know you only need to import the function once per PowerShell session and then can invoke just the command suDoubleBookedMeetings.  If you did not know this before, you do now.

Looking to pull your Exchange Admin out of the loop on what to do with the information next?  

So glad you asked.

Watch this space for news of our cmdlet that automatically informs meeting organizers.

Monday, March 20, 2017

PowerShell cmdlet for Determining Double Booked Meetings

As we've said before, we've seen a lot of interest in this.

Here's a preview of the syntax we're using:

If you want to get in on testing this in your environment, drop us a line.

No guarantees on any of this yet, but we're so far into it we're definitely going to finish it.

Russ is spending his time with it in on-premises Exchange 2016 and Zyg is using it in our Office 365 test bed.

Wednesday, March 08, 2017

Detecting Resource Double Bookings in Office 365

So if you have Microsoft Exchange / Office 365 settings for resources which ALLOW for double bookings, sometimes you need to FIND where these double booking are.

Take this screen shot of the calendar for Conference Room 222




We aren't showing you the email notifications yet (because it's not done) but it's easy to find and generate the list of conflicts (notice we also have some in the next week).


Sunday, March 05, 2017

Sumatra DBA: Double Booking Alert for Resources in Microsoft Exchange and Office 365

We started to get curious when what we thought was a dry, technical issue of double booked conference rooms became one of the most-read posts on our blog.  We DO pay attention to this stuff.

I refer of course to Double-Booked Meeting Rooms in Office 365 (and how to avoid them).

In the space-time-convenience continuum which is always a struggle with different views of how to optimize your Microsoft Exchange calendaring experience, Outlook and Exchange 2016 do a good job of warning you at booking time of future conflicts with resources and recurring meetings.

But 1.) time management is a very dynamic entity so conflicts creep in at awkward times and 2.) it's easy to procrastinate and then lose track of future conflicts.

The best summary of the problem was here:
We are not happy; our users are not happy.


This brought us down a path of looking at simple means to accomplish checking for double bookings and (more importantly!) to make fixing double bookings actionable on the part of end users! 

We found a serviceable script (from the author of the above quote) at Auditing Exchange Rooms for Double Bookings.

This has a few problems: it's very good at saying "yes there are double bookings in your resources, Mr. Administrator."   And then what the heck is supposed to happen?

We thought it best to let the Exchange Administrator do what they're good at (managing Exchange, installing and maintaining software, handling permissions) and to create a mechanism to get the information where it is most needed -- into the hands of he affected meeting organizers.

To this end we've created Sumatra DBA: Double Booking Alert.

Sumatra DBA: Double Booking Alert

We see the following advantages of our approach:
  • Installs and runs Server-side (no Outlook add-ins to distribute / manage)
  • Pro-active instead of reactive
  • No user training involved (notices come to the inbox of meeting organizers)
  • Admin configurable
  • Notifications configurable by site
Stay tuned for screenshots and examples.

Want in on early testing?  Contact us.

Tuesday, April 12, 2016

Double-Booked Meeting Rooms in Office 365 (and how to avoid them)

Update: November, 2017: If you look at newer postings you'll see details on our new method of finding and fixing double booked meetings.  If you want to try it, contact us with the size of your Exchange installation and your test domain (really, please don't start in production!).


Let's talk meeting rooms (aka resources) in Office 365 / Exchange 2016.

Why might you NOT "Allow repeating meetings" when configuring meeting room booking options?



Short answer: Because you have to be really careful.  Especially in Office 365 if you are working entirely from the user interface.


Note that for a one-time meeting where I have the Room 222 booked all day, attempting in Office 365 to book that resource does not even allow it to be seen as an option (this is a REALLY good thing):




But setting up a recurring meeting that overlaps with it easily allows me to book the conference room over a conflict, which might cause me as the meeting organizer some worry down the road.


To avoid this unpleasantness entirely, you need to use Set-CalendarProcessing via PowerShell.

To see what the settings on this resource are:
Get-CalendarProcessing -Identity "Conference Room 222" | fl

to set the ones that deal with conflicts/recurring items:

Set-CalendarProcessing -Identity "Conference Room 222" -AllowConflicts $true  -ConflictPercentageAllowed  80 -AllowRecurringMeetings $true  

Note that here we allow a conflict percentage of 80, which is below the threshold we set when setting up our demonstration.  If you want to allow no conflicts at all via auto-booking: 

Set-CalendarProcessing -Identity "Conference Room 222" -AllowConflicts $false -AllowRecurringMeetings $true  

The Microsoft manual for this goes into some good detail:
https://technet.microsoft.com/en-us/library/dd335046(v=exchg.160).aspx

And as always, be on the lookout for functionality that works in Exchange on-premises but differently in Office 365.

Side note: in our classic Sumatra Utilities for Exchange 2003 we included a double-booking checker, and this would not be hard to do but we hear little demand for it in Office 365/ Exchange 2016.

Addition January 23, 2017:
Folks, this post is insanely popular.  And we're wondering why.
Our initial motivation is to make sure people do not run into this during a calendar migration.  But the number of folks reading this regularly indicates it's a common problem.
Now -- Exchange does a VERY GOOD JOB of notifying a meeting organizer of exactly WHERE conflicts are at the time of booking.  Minimal personal organization skills then allow you to make modifications to individual instances to smooth things over.
Only thing we can figure out is that folks don't do this and they're looking for an upcoming "oops!  You have a conflict in that meeting room coming up!" notice.
Is that the case or is it something else?
We never learned anything listening to ourselves talk, so if you have something to share please let us know.