U.S.A. Telephone Number (315) 849-2560  /  Europe Telephone Number : (+31)-186-669194  /  Email: Info@OpusFlow.nl

GroupCalendar Installation steps (Detailed but not complicated)
See step 12 for uninstallation or update from version 3.x to 3.x

To uninstall the 30 days trial version, all you have to do is run uninstallservice.bat and delete the folder where it was installed.


1-       Create a new user account (GCadmin) in the active directory and 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, 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

2-      Depending on your exchange version run one of the following two commands.

For Exchange 2007 run the following commands in the Exchange Shell:  
Note You will  have to adjust the commands If you use another service account name than GCADMIN
Note2: Make sure the command that you paste in the shell is one long line. You may want to copy it into notepad first.

Get-ExchangeServer | where {$_.IsClientAccessServer -eq $TRUE} | ForEach-Object {Add-ADPermission -Identity $_.distinguishedname -User (Get-User -Identity gcadmin| select-object).identity -extendedRight ms-Exch-EPI-Impersonation}

and after that run

Get-MailboxDatabase | Add-ADPermission -User gcadmin -extendedRights ms-Exch-EPI-May-Impersonate -InheritanceType none


For Exchange 2010, 2013, 2016 or office 365 you run the following command in the Exchange Shell :  

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

Note: For Office365 you first start a remote PowerShell like this from the windows command shell
$LiveCred = Get-Credential
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://ps.outlook.com/powershell/ -Credential $LiveCred -Authentication Basic -AllowRedirection
Import-PSSession $Session



  1. Download the EGC_EWS.zip file and extract it to a folder on any 64 bit computer or server that will not be shut down while Exchange server is being used.
    You can copy it to the Exchange server itself but that is not a requirement.
  2. You are free to run the Gcadmin.exe (console) on a desktop computer while having the processing component on any 64 bit server. To do that, simply copy Gcadmin.exe and the (64 bits) Microsoft.Exchange.WebServices.dll to the pc.  If the machine is using a 32 bit OS than you will have to install the 32 bit EWS 2.0 API from this url. http://www.microsoft.com/en-us/download/details.aspx?id=35371 and copy the dll into the same folder as gcadmin.exe
  3. You can now start the GCADMIN.EXE.
    The console’s only function is to compose a config.ini file for the processing part of the application. (You may edit the ini file manually too, for instance to copy a list of user email addresses to the [Users] section. See point 13.
    By default it will create the config.ini file in the directory where Gcadmin.exe is installed but the settings will not be used by the processing component if Gcadmin.exe is in another location than ExchangeGroupCalendar_EWS.exe. To prevent confusion it is best to click the “INI file” button on the bottom left and browse (over the network?) to select the config.ini file on the computer/server  that runs the EGC processing software.
  4. Now you can begin your configuration. The first thing to do is to enter the gcadmin account email address and password 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 7.

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)

To check for issues with your certificates use the following.
To test the services from the Exchange shell you can run the following command:
Test-OutlookWebServices -Identity:gcadmin@domain.com |FL >c:\test.txt
This creates a test.txt file in the root of the c drive. Look for errors related to your certificates and if there are errors you may find this video usefull:

In the gcadmin console are some additional options to help you find the reason for the errors you may get. The [test SCP in AD] button locates the service point in the Active Directory which holds the information of you AutoDiscover URL. To test if you have a certificate problem you can try to [test credentials] with “ignore certificate errors” checked. And to overrule the URL that your autodiscover service returns you can manually set the url to the exchange services. That url has a format of
The three test options are there for trouble shooting only. Use them only to fix the errors that prevent the [Test credentials] button from logging on correctly.

If you can not get it to work with autodiscovery but the manual url fixed the "test-credentials" issue then you can override autodiscovery by adding the following to the bottom of the config.ini file. (close gcadmin.exe first)

* the part "server.domain" has to be adjusted to match your server name and your domain name. For example exch01.mycom.com

For Office365 the url is the same for every office 365 user so simply copy and paste this into the config.ini


  1. Create one or more groupcalendar folders in the public folders store by using MS Outlook. (In Office365 you must first create a public folder tree if it's not there yet)
    You can give the group calendar any name you like and place it under any other folder but of course it must be a folder of type Calendar. When you open the properties/permissions of your newly created group calendar in Outlook 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 can be given the Editor role while normal users must have Author permissions so they can edit their own items but can not modify other items. For Users that are not a member of a group calendar the “folder visible” permission can be removed. Note: All members must have their mailbox on the server or group of servers that are being processed by the EGC software.

    You can add every individual user to the calendar and give them permissions but you can also use groups (distribution lists) and add all users with the same role to the same group in your active directory. Instead of defining permissions for individual users you can simply give the DEFAULT group Author permissions and add a couple of individual users who may act as Admin users with EDITOR or OWNER permissions.

  1. In the GCADMIN.EXE add the Group Calendars to the list with a path in the form of “/folder/sub folder/sub sub folder” (for errors here check the FAQ) 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.

  2. Add all the 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 see 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. You can not add groups/distribution list names here (yet). Add every individual email address or see step 13 to enter in bulk.(* or in case of event publishing, the users that will receive events pushed from the group calendar to their calendar)
  3. 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.

  4. 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)

  5. 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

    Now run InstallService.bat and you’re done.
    (if installservice.bat gives an error then edit it to include the full path or run it from a command shell prompt after navigating to the folder).
    When you want to update the software you always first run UN-installservice.bat, replace the EXE files and then run installservice.bat. Do not overwrite your RunEGCasService.ini when you do an update.

    In Task Manager / Services you can see that the EGC-Service is running.
    Please make sure that you also see it running in Task Manager / Processes if you enable the check box “Show processes from all users” 

    In the gcadmin console is an option to enable logging to text file. Please enable that option to monitor the work that the service is doing.

  6. You can edit the config.ini file manually or from a script without using the Gcadmin console.
    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 index that was used in the [Users] list.
    More info about indexes:
    under [Indexes]
    Gcindex= max number of groupcalendars
    MemberIndex(number) = number of members of the groupcalendar with that number
    PGC-(number)= max 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

    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.


  7. 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

    To prevent the sofftware from processing items that have an end date in the past.


    To force the items in the groupcalendar to be created in the same time zone as the the user.


    To work from a sub calendar located under your normal outlook calendar.

    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 is true for 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.

    When working from a mobile device, add ### to the body of the appointment and it will be a private item after sync with Exchange server.

    Test Scenario’s:
    With regards to testing, do not use the Gcadmin account mailbox/calendar as test user!

    The basics

    -          Create a normal item in the personal calendar of user 1

    -          See it replicate to all of the groupcalendars that user 1 is a member of.

    -          Change the subject of the item in the personal calendar of user 1

    -          See the changed subject replicate to all of the groupcalendar that user 1 is a member of

    -          Change the subject of the item in the groupcalendar (make sure to have public folder permissions to do that)

    -          See the changed subject replicate to the item in the personal calendar of user 1

    -          Add *X to the subject of the item in the group calendar

    -          See the item being deleted from user calendar and all groupcalendars.


    Admin tasks 

    -          Create an item in the groupcalendar with a * in the subject

    -          See it replicate to all user calendars who are a member of this groupcalendar

    -          Move the item in the groupcalendar to another time or change the subject

    -          See the changes replicate to all personal calendars who are a member of this groupcalendar

    -          Look in the groupcalendar to check what the exact name is of another user. (say John)

    -          Create an item in your personal calendar OR in the group calendar with this subject
    #john# test

    -          Notice that it gets removed from the calendar where it was created (moved to John’s calendar)

    -          See that it shows up in the group calendar as [john] test

    -          Open the item in the groupcalendar and see that your name and the time of creation is logged.


    Demonstrate that users can not change Admin items

         -          Move the item in one of the user calendars (or change the subject or delete it).

    -          See the user changes being undone and the original item properties being restored


    Team tasks 

    -          Create a normal item in the personal calendar of user 1 with a * in the subject.

    -          See the item being replicated to the groupcalendar that is this users’ PGC

    -          See that the subject has [.] in front of it to indicate a team item in the PGC

    -          Check the user calendars of the other team members and see the item there as well with a dot in front of the subject to indicate a team item.

    -          In any of the team members’ personal calendars, change the subject of the item and add a * to the subject

    -          see the changed subject in all other team members’ calendars.

    -          Admin only: Move the item in the PGC to another start time to see the item move in all personal calendars of the team too.

    -          In any of the team members’ personal calendars or in the PGC (as admin), add *X to the subject and see the item being removed from all team members’ personal calendars as well as their PGC.