Managing Holidays in Response Groups – no problem

If you also find it frustrating to manage RGS Holidays – look no further.

I see alot of customers struggling to get this done, and look to different Powershell GUI’s and unsupported addons – but often see issues when moving to a new server version.

So powershell should be your one-stop-shop for this task.

I therefore decided to publish some of the commands that i use, and please note that the below guides are for DANISH holidays, so adjust the dates accordingly 🙂

For Powershell tips on managing Response Groups in general look to this article:

When you work with the RGS cmd-lets you have to rely on variables.

The Set-CsRgsHolidaySet cmdlet provides a way for you to modify an existing holiday set. (For the most part, this means adding holidays to or removing holidays from the set.) Set-CsRgsHolidaySet is not directly used to make changes to a holiday set. Instead, an object reference is created to an existing holiday set by using the Get-CsRgsHolidaySet cmdlet. (An object reference is a variable that, in this case, refers to an existing holiday set). Changes to the set are made in memory, then the Set-CsRgsHolidaySet is used to write those changes to the actual holiday set. If you do not call Set-CsRgsHolidaySet, then the changes you make will exist in memory only and will disappear as soon as you close Windows PowerShell or delete the object reference.
Lets use this logic to create a new Holidayset containing all Danish holidays for 2018
Please note i sometimes create holidays that run from the previous full business day closing time.
So lets say Easter Thursday is created, the Holiday set could begin already the previous day at office closing hours, but this is individual.
The following examples all run from and to Midnight
First you create the variables by running theese:

$a = New-CsRgsHoliday -Name “Nytårsdag” -StartDate “1/1/2018 00:00:00 AM” -EndDate “1/1/2018 12:00:00 AM”
$b = New-CsRgsHoliday -Name “Påske” -StartDate “3/29/2018 00:00:00 AM” -EndDate “4/3/2018 12:00:00 AM”
$c = New-CsRgsHoliday -Name “St Bededag” -StartDate “4/27/2018 00:00:00 AM” -EndDate “4/27/2018 12:00:00 AM”
$d = New-CsRgsHoliday -Name “Kr Himmelfart” -StartDate “5/10/2018 00:00:00 AM” -EndDate “5/10/2018 12:00:00 AM”
$e = New-CsRgsHoliday -Name “Pinse” -StartDate “5/20/2018 00:00:00 AM” -EndDate “5/21/2018 12:00:00 AM”
$f = New-CsRgsHoliday -Name “Grundlovsdag” -StartDate “6/5/2018 00:00:00 AM” -EndDate “6/5/2018 12:00:00 AM”
$g = New-CsRgsHoliday -Name “Julen” -StartDate “12/24/2018 00:00:00 AM” -EndDate “12/26/2018 12:00:00 AM”

EDIT: Thanks to Claus Moll for pointing out, to be carefull with AM/ PM at enddates , as an example:
-EndDate “1/1/2018 11:59:59 PM”
-EndDate “1/2/2018 12:00:00 AM”
So be carefull

Then you need to assign theese holidays to a new holiday set

New-CsRgsHolidaySet -Parent “ApplicationServer:poolname.domain.local” -Name “DK 2018” -HolidayList($a,$b,$c,$d,$e,$f,$g,)

Now you have a complete 2018 Danish Holiday Set ready to use in RGS.

So lets say you are in the middle of March and your boss ask you to make sure that holidays are in place for easter, and you already have your 2018 set in place – no problem – here is how to add an additional holiday to an existing set.
First we make a varialbe containing the new holiday, then we extract and modify the Holidaylist from en existing Holiday Set

$x = New-CsRgsHoliday -Name “Påske” -StartDate “3/29/2018 00:00:00 AM” -EndDate “4/3/2018 12:00:00 PM”

$y = Get-CsRgsHolidaySet -Identity “service:ApplicationServer:poolname.domain.local” -Name “DK 2018”
 $y.HolidayList.Add($x) Set-CsRgsHolidaySet -Instance $y

Same procedure it you wanted to remove a single holiday from the list – in the example i remove Påske from the DK 2018 set

$x = Get-CsRgsHolidaySet -Identity service:ApplicationServer:poolname.domain.local -Name “DK 2018” 

$y = $x.HolidayList | Where-Object {$_.Name -eq “Påske”} $x.HolidayList.Remove($y) Set-CsRgsHolidaySet -Instance $x

Also worth noting that the opening hours also can be created as sets that will selectable in the Repons Group creation process.

$a = New-csRgsTimeRange -Name “Business Hours” -OpenTime “07:00” -CloseTime “17:00”

New-CsRgsHoursOfBusiness -Parent “ApplicationServer:poolname.domain.local” -Name “Business Hours” -MondayHours1 $a -TuesdayHours1 $a -WednesdayHours1 $a -ThursdayHours1 $a -FridayHours1 $a

Thats it for know, hopefully the task of maintaining your company holidays will be less of a headache now.
Happy SKYPE’ing


  1. Claus Moll

    Hi there. Great post. However the endDates are misconfigured. For example -EndDate “1/1/2018 12:00:00 PM” would actually end at noon and not at midnight on that particular holiday.

    12:00 PM is noon. To have the holiday period active the whole day -EndDate should be either:

    -EndDate “1/1/2018 11:59:59 PM”
    -EndDate “1/2/2018 12:00:00 AM”

  2. Post

Leave a Reply

Your email address will not be published. Required fields are marked *