Showing posts with label holidays. Show all posts
Showing posts with label holidays. Show all posts

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, September 09, 2014

Sumatra Holiday cmdlet for Microsoft Exchange - Download

Holidays.

Our server-side holiday cmdlet for Microsoft Exchange simply works and has more functionality than the client-side holiday capability Microsoft built into Outlook.  And of course an admin runs this server-side rather than hoping users run use Outlook to add holidays client-side.

When we offered it up as a "pay what you want" we got thousands of downloads, and a number of people who actually paid of the "use your fingers" magnitude.

But people keep asking for it, so we're going to let you download it under our advertising model meaning every item inserted will be stamped "Courtesy of Sumatra" in the agenda.

So you may download it here

If you want to suggest additions or modifications, contact us.

And check this blog or  to see what we'll support in the future. 

Tuesday, August 19, 2014

Western Australia Holidays with the cmdlet

We've had some requests from Western Australia lately, so here's the cmdlet working with holidays in OZ.



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

Preliminary video of our server-side holiday insertion cmdlet.

It doesn't look good in full screen mode but you get the idea how it works.

Tuesday, December 17, 2013

Open Source Server-Side Lite Holiday cmdlet for Exchange

Holidays in 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:


So you can find the CodePlex project at sumatra.codeplex.com.

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

OK, we'll let you use the cmdlet for server-side holidays.

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

We've gotten a few inquiries about running the SuHoliday cmdlet on Exchange 2007 instead of Exchange 2010.

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

It being a new year and we having found a few new ways that Permissions could be problematic in Exchange, we've modified the Debugging Protocol.

The latest is available at this link: Exchange_2010_Permissions_Debugging_Protocol.pdf and supersedes all earlier versions.


Changes mainly affect the holiday cmdlet.

Tuesday, December 11, 2012

#Exchange #PowerShell cmdlet for server-side holiday insertion updated

We're happy to announce we've updated the trial version of our Microsoft Exchange cmdlet for inserting holidays server-side.  This works on Exchange 2010 and Office 365.

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

We've just upgraded our cmdlet for inserting holidays server-side into Exchange 2010.  We'll give you some more details about that in a later post.

Mainly we're writing because we've just completed a site that lets you upload holidays into Office 365 without the cmdlet.



We're treating it as a beta right now -- but we want folks to try out the online experience since it's one of the easiest ways to actually see how the full cmdlet works.  The "Buy" button will not be active until next week or so.

We've tried to make the web interface as easy as possible.  Folks who have been through a migration with us will also recognize our 1930's Soviet tractor style of user interface (not pretty but it works -- if the market responds well to this we've already got plans to update it). And since we traditionally use Jimi Hendrix as a sample account we are announcing this shortly after after his birthday.

You will need credentials for a service account that has Impersonation permissions to any of the accounts you want to modify.  This will be no surprise to any Exchange administrators.  The full manual for the cmdlet goes over how to do this.  

Then you select if you want to insert into a single calendar or upload a list of calendars to insert.

And the default calendar list goes right into Jimi's calendar.

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,

UK bank holidays came from this list https://www.gov.uk/bank-holidays 

Friday, November 16, 2012

Beta sites wanted for injecting holidays into Hosted Exchange / Office 365

Wanted: sites willing to try web application to insert holidays server-side into Hosted Exchange / Office 365.  Short learning curve (this is a web app and not the cmdlet) but we do want some feedback.  Apply to email address in above image.

Tuesday, December 27, 2011

Add Holidays to Resources in Exchange 2010

Okay, okay.  I know we wrote that the SuHoliday cmdlet would not add holidays to resources.

BUT -- if you use FULL ACCESS instead of Impersonate, the current download-able version works like a champ for this.

To try this out:

·        Provision a service account (say, "exsu") that is NOT an Enterprise Admin

o   Set impersonate RBAC for that account

§  new-ManagementRoleAssignment -Name:_suImp8Exsu -Role:ApplicationImpersonation -User:'exsu@cod.sumatra.local'

o   Try to do an insert for a user AND

o  For resources "cr101b" or "room 222"

Results should not be good, but NOW....

·         Add fullaccess to that service account

o   Get-Mailbox -filter {isResource -eq $true}  -resultsize unlimited | add-mailboxpermission -user exsu -accessrights fullaccess   -InheritanceType: All

o   Add holidays for that room


Friday, December 23, 2011

Holiday Insertions in Live @ Edu

Kudos to Rachel in Georgia for her holiday insertion into 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

We recently released a cmdlet that bulk-inserts holidays in Exchange 2010 (see the Sumatra website or the Sumatra Blog).

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

We've been inserting holidays server-side on Exchange for a while and after some feedback last year we started re-thinking how to accomplish this.
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?





  • Insert server-specific or user-specific holidays through 2012 with NO user intervention.




  • Customize for different state or national holidays.




  • Define Free/Busy status.




  • Script adding holidays at user provisioning time (e.g., by piping in from get-mailbox).




  • Support for multiple time zones.




  • Define All-Day Events or appointments at specific times.




  • Support international holidays / date formats. For example: 2012 UK Bank Holidays


  • 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

    Holidays.We've been doing them server-side for years now.
    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?

    Come with us on a journey to mystery.

    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 Try

    End Function

    Monday, November 08, 2010

    Putting Holidays into Live @ Edu Server-Side

    We tested our holiday insertion code on Live @ Edu and a list of holidays like this:






    Note that this is an All Day Event (and you can specify if the time is to be shown BUSY or FREE):

    While this is an appointment we've put into every calendar without any muss or fuss. You could use the same technology to do that for anything else you want (Shareholder's Meetings, Fire Drills, as your business and imagination dictate).

    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

    Since the year is drawing to a close, we're going to put up the Sumatra Utilities for 2010 for no charge for the rest 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

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

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

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

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

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

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

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

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

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

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

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