GroupCalendar Installation steps.

Use the chat button on this website for free installation support. To uninstall the 30 days trial version, run uninstallservice.bat and delete the folder where it was installed.

Overview of the installation procedure:

1- Create a service account and give it permissions
2- Put the extracted zip file anywhere on a 64 bit windows machine
3- Create a public folder calendar (or shared mailbox calendar) in Outlook and add the full path to the gcadmin console
4- Type in some user email addresses, the service account credentials and the license key and assign users to group calendars
5- Edit the config file that is required to run the software as an NT service and start the service.

Detailed installation procedure

1-      ON PREM. EXCHANGE SERVER: 

Create a new user account (suggested name: GCadmin) in the active directory
Give it a mailbox. This is the service account that we will refer to as “the Gcadmin” or “the Gcadmin account”.  Membership of the group Domain Users is all it needs.
Check the mailbox properties of the gcadmin account in the exchange management console. Open the "account" tab and see what the domain name is there. Open the "email addresses" tab and set the reply address to the same domain name. The primary email address of the gcadmin account must be in the local domain, not the internet domain if that is different.

OFFICE 365:
Create a new mailbox for user GCadmin. Just a regular user account.


2-      ON PREM. EXCHANGE SERVER:              

 

For in house Exchange Server run the following single command in the Exchange Shell :  

New-ManagementRoleAssignment -Name:EGCimpersonation -Role:ApplicationImpersonation -User:gcadmin

 

For OFFICE 365 this step 2 is not needed.




3- Download the EGC_EWS.zip file and extract it to a folder on any 64 bit windows computer or server that will not shut down while Exchange server is being used.
You can copy it to the Exchange server itself but that is not a requirement. Also acquire a test license because without that the software will not work.



4- Start the GCADMIN.EXE. Enter your license key and email address at the bottom of the console.

The remaining of this step 4 is for OFFICE 365 ONLY

Close the gcadmin.exe, open the config.ini file, copy/paste the following 4 lines at the bottom of the config.ini;

[Override] 
ManualURL=https://outlook.office365.com/EWS/Exchange.asmx

[UseTLS1.2]
Value=True

C
lose config.ini and start gcadmin.exe again.


- Open a powershell console as administrator (elevated)
- Make sure it uses tls 1.2 by running this command:  [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
- Run this command:  Install-Module -Name AzureAD      and answer A (yes to all). This may take a while, be patient.
- When you are back at the prompt run the commands below but make sure to change the section "yourID" into the tenant id of your Azure AD. (leave the quotes, only replace the word yourID)
You can find your tenant ID in Azure Active Directory admin center - Overview

Connect-AzureAD -TenantID "yourID"  
new-AzureADServicePrincipal -AppID "fdea1aff-feaa-4d04-b795-55d873f2283b" -DisplayName "ExchangeGroupCalendar" -Tags {WindowsAzureActiveDirectoryIntegratedApp}

- Open your azure active directory admin center in the browser and find the exchange group calendar application under Enterprise applications.
Select it and under permissions click "grant admin consent"

Go back to the gcadmin.exe and enter your tenant ID



 

5- Enter the gcadmin account email address and password at the top and click the “Test Credentials” button. 
At the bottom of the console you will see what happens and if all goes well you will be notified there that you logged on to your server successfully. Read on at 6.

If you can not log on and get an Autodiscover error:
This can be caused by a problem with the certificates on your exchange server but first make sure that the gcadmin UPN and Email address is identical. (This is the most frequent issue that people run in to. Check the mailbox properties of the gcadmin account, open the ACCOUNT tab and see what the domain name is there, open the EMAIL ADDRESSES tab and set the reply address to the same domain name)

If you can not get it to work with autodiscovery you can override autodiscovery by adding the following to the bottom of the config.ini file. (close gcadmin.exe first)
[Override] 
ManualURL=https://server.domain/EWS/Exchange.asmx
* the part "server.domain" has to be adjusted to match your server name and your domain name. For example exch01.mycom.com




6- Create one or more group calendar folders in the public folders section of MS Outlook. (In Office365 you must first create a public folder tree if it's not there yet)
(if you don't want to use public folders you can use the gcadmin calendar as the root folder to create the group calendars under. See #13 below on how to enable that.)
You can not create the group calendar public folder calendar using the exchange management console or command shell because that can only create email folders so you must do this with MS Outlook.
The user account, that you log on to Outlook with, must have permissions to create public folders.

To get to the public folders section in Outlook use keyboard combo CTRL-6. At the bottom left hand side you can now find the public folders where you create a new folder (right click) and make sure to select "contains calendar items" in the dialog so it will be a calendar folder.
When you open the properties/permissions of your newly created group calendar, you will see that you are the owner. It is vital that the gcadmin account is (also) designated as an OWNER of that group calendar.

Admin users (who manage other user/s calendars) must also be added as owner.
Normal users must have Author permissions which is the default.
To hide the group calendar for a user, add that user and uncheck the “folder visible” permission.

Right click the new group calendar folder and add it to favorites. This creates a shortcut under your normal calendars section in "other calendars".
 


7- In the GCADMIN.EXE add the Group Calendars to the list with a path in the form of “/folder/sub folder/sub sub folder”. Note that the first slash (/) indicates the level under “pulic folders/all pubic folders/” so if your groupcalendar is at level “pulic folders/all pubic folders/groupcal” you only enter /groupcal.

 

8- Add all user email addresses. You only have to add users that need to have their calendar items shared (*) in the group calendar. Any user that only needs to view the content of a groupcalendar does not have to be added to the list. You can use the ENTER key after typing an email address to add the user.

The user list is sorted, select a user in the list and type the first character of the name to jump to the name that starts with that character. Add every individual email address or see step 12 to enter in bulk.

(* )or in case of event publishing, the users that will receive events pushed from the group calendar to their calendar)
 

9- Assign users to your groupcalendars.

A user can be a member of one or more group calendars. Being a member means that the calendar items in the personal calendar can replicate (if filters permit) to the group calendar and the group calendar items may replicate back to the user calendar.

Assign a user to a group calendar by selecting both the user as the group calendar and clicking the button "make selected user on the right a member of selected group calendar on the left" Once a user is a member of a calendar, selecting his email address will show the group calendar he is a member of in a red font.

 

10- If you need the functionality of Teams communicating with each other by the use of their PGC tick the checkbox in the group calendar members list to designate the selected group calendar as the Primairy Group Calendar (PGC) for that user. (read the concepts section for more info)
`

 
11- Install the processing component (service) that will be using the config.ini file to do the work.

Browse to the folder where you copied the extracted zip file (from the console of that machine/server, not over the network) and edit the file RunEGCasService.ini.
In that ini file you see command line and workingdir. Make sure that the path matches the install location of the ExchangeGroupCalendar_EWS.exe and close/save the file.


So if you unpacked everything in c:\GroupCalendar then you should have in your RunEGCasService.ini the following:
CommandLine = c:\GroupCalendar\ExchangeGroupCalendar_EWS.exe
WorkingDir = c:\GroupCalendar

Run InstallService.bat and you’re done.
(if installservice.bat produces an error, run it from an elevated command prompt after navigating to the folder).

In the gcadmin console (bottom right) is an option to enable logging to text file. Please enable that option to monitor the work that the service is doing. Open that egclog1.txt file when the EGC-service has started so you can check if the license is working, if the connection to exchange is working and, if there are no permissions problems.

If you see nothing that says "error" or "exception" or "problem", everything is working as it should.


Some additional information below.
 

12- You can edit the config.ini file manually, or from a script, without using the Gcadmin console. This can be useful if you need to add hundreds of names to the console.
To export all email addresses to a txt file execute this command in the exchange shell:

Get-Mailbox -ResultSize Unlimited |Select-Object DisplayName,ServerName,PrimarySmtpAddress, @{Name=“EmailAddresses”;Expression={$_.EmailAddresses |Where-Object {$_.PrefixString -ceq “smtp”} | ForEach-Object {$_.SmtpAddress}}} > c:\temp\export.txt 

You can send us that list together with your config.ini and in 10 minutes you will have your config.ini back with all the users from your txt file. Or do it yourself by using Excel to create a numbered list for your config.ini

If you want to copy a list of user email addresses to the [Users] section, make sure they all have a unique index (1=Jane@b.com / 2=jack@b.com etc) and in the [Indexes] section make sure that UserIndex=  corresponds to the last user number that was used in the [Users] list.

More info about indexes:
under [Indexes]
Gcindex= number of groupcalendars
MemberIndex(number) = number of members of the groupcalendar with that number
PGC-(number)= number of users that have groupcalendar (number) as PGC

under [PGC-number]
number =number ; first number is just a counter, second number is the unique user number.

Another thing you can do with the INI file (from a script) is to import the existing items of one or more users. The processing component will look for the following:
Under the header [Import] you can see
ImportNow=False
PastDays=30
FutureDays=30
Users=a@b.com;c@b.com;d@b.com

It's obvious that when you set False to True, that the import will start. If there are user email addresses in list with a “;” as separator it will import the items from their calendars. If no user names are specified then all user calendar items will be imported.


13- There are some settings available that you can do directly in the config.ini file if you need some specific functionality:

By default anything older than 60 days will be removed from the Group Calendars. To change this add tot the bottom of the config.ini
[CleanUp]
RemoveOlderThan60Days=False

When you are on office 365 and need more than 20 group calendars you will have to create a second gcadmin account. Do step 1 and 2 for user gcadmin2 and add this to your config.ini file
[GCAMIN2] (do not correct the "typo". it must be gcamin)
EmailAddress=
Password=



To work from a sub calendar located under your normal outlook calendar.
[UseSubFolderCalendar]
FolderName=MySubfolder

So items created for a user (from the group calendar) will go into that sub calendar and only items that the user creates in the sub calendar will go into the group calendar.

mysubfolder is the name that you prefer to use as the calendar under the normal calendar.

Adding this to the config.ini will create the subfolder calendar for everyone in their outlook.

When you use rooms and other resource calendars and have their items copied to a group calendar you must create a subfolder with the same name but not of type calendar but type "email items" under the resource's default calendar. Otherwise the software will no longer see the items of the resources. When it sees a subfolder with the same name but it's not a calendar then it uses the standard outlook calendar.

The same applies to users that don't want to work from a sub calendar but prefer their default Outlook calendar. Create a non-calendar folder under their Outlook calendar and the software uses their default Outlook calendar.
 

To force the items in the groupcalendar to be created in the same time zone as the user.
[TimeZone]
UseUserTimeZone=True



To prevent the sofftware from processing items that have an end date in the past.
[ProcessFutureOnly]
Value=True

You can have the password of the gcadmin account encrypted and not visible in the console. To use this feature add the following to the config.ini file:
[EncryptPassword]
Value=True
Save and close config.ini and open gcadmin.exe. Then enter the password of the gcadmin account again and click away to see it replaced by "******"

You can use the calendar of the gcadmin account as the rootfolder for your group calendars. This means you can choose to either use public folders or a shared mailbox as the location for your group calendars.
By default the software uses public folders. To use the gcadmin account calendar add the following to the config.ini file
[GcadminCalendarIsGcroot]
Value=True
The software now assumes that the standard folder "Calendar" in the gcadmin mailbox is the starting point (root) to look for sub folders (group calendars)
So when you add a new group calendar to the gcadmin console you need to use the syntax '/foldername'  (without quotes - where '/' represents the standard calendar and 'foldername' represents a subfolder under the standard calendar.)