{"id":122,"date":"2013-03-10T23:27:12","date_gmt":"2013-03-10T23:27:12","guid":{"rendered":"https:\/\/notiz.comanet.xyz\/?p=122"},"modified":"2019-03-03T19:42:31","modified_gmt":"2019-03-03T18:42:31","slug":"exchange-google-calendar-connector-sync-service-installation-and-configuration","status":"publish","type":"post","link":"https:\/\/notiz.comanet.xyz\/?p=122","title":{"rendered":"Exchange &#8211; Google Calendar Connector Sync Service Installation and Configuration"},"content":{"rendered":"<h2> \tBefore You Install<\/h2>\n<p> \tBefore you install and configure the connector, make sure your Windows environment meets the prerequisites, and that your Google Calendar and Exchange accounts are prepared for sharing data.<\/p>\n<h3> \tPrerequisites<\/h3>\n<ul>\n<li> \t\tA Google Apps Premier or Education Edition domain<\/li>\n<\/ul>\n<blockquote><p> \tTo support the Sync Service, your Windows environment must meet these prerequisites:<\/p><\/blockquote>\n<ul>\n<li> \t\tMicrosoft Windows Server 2003<\/li>\n<li> \t\tInternet Information Services (IIS) 6.0<\/li>\n<li> \t\tMicrosoft Exchange Server 2003 SP2 or Microsoft Exchange Server 2007 SP1 or SP2<\/li>\n<li> \t\tExchange 2003 Native Mode or 2007\/2003 Mix Mode Environment or 2007 Native mode with addition of public folders<\/li>\n<li> \t\tASP.NET 2.0 runtime<\/li>\n<\/ul>\n<h3> \tGoogle Calendar Account Setup<\/h3>\n<p> \tCreate a dedicated Google Apps account and perform an initial login. The user name and password are required later when you populate the GoogleApps.AdminUser.Login and Password parameters in the configuration process. NOTE: This account does NOT need admin access to the Google Apps domain. If you use a non-admin account make sure you configure the SyncService.FreeBusy.DetailLevel to &#8220;BASIC&#8221; as the sync will fail for users who only share free\/busy data if you don&#8217;t use the &#8220;BASIC&#8221; feed option. Before this account can be used with the Sync service you must login to Google Apps account and accept the standard terms of service agreement for the user account.<\/p>\n<h3> \tInstructions applicable when running IIS 7<\/h3>\n<p> \tIf you are using a server OS using IIS 7 you will need to configure the \/public website to accept double escaped content.<\/p>\n<p> \tThis needs to be performed on the server which is configured as the Free\/Busy server. This server is by default defined by the setting Exchange.ServerName or Exchange.FreeBusyServerName value.<\/p>\n<p> \tFor details on how to allow double escaped content review this Microsoft Support KB article: <a href=\"http:\/\/support.microsoft.com\/kb\/942076\/\" rel=\"nofollow\">http:\/\/support.microsoft.com\/kb\/942076\/<\/a><\/p>\n<h3> \tInstructions applicable only for Exchange 2007<\/h3>\n<p> \tSync Service uses public folders to store free\/busy information of Google Calendar users in Exchange. If Exchange 2007 doesn&#8217;t already have public folders added and attached to mailbox databases, they should be added.<\/p>\n<p> \tRun the following cmdlet in Exchange PowerShell to configure free\/busy for Google Calendar users<\/p>\n<pre class=\"prettyprint\"><span class=\"pln\">&nbsp;<\/span><span class=\"typ\">Add<\/span><span class=\"pun\">-<\/span><span class=\"typ\">AvailabilityAddressSpace<\/span><span class=\"pln\"> <\/span><span class=\"pun\">-<\/span><span class=\"typ\">ForestName<\/span><span class=\"pln\"> domain<\/span><span class=\"pun\">.<\/span><span class=\"pln\">com <\/span><span class=\"pun\">-<\/span><span class=\"typ\">AccessMethod<\/span><span class=\"pln\"> <\/span><span class=\"typ\">PublicFolder<\/span> <span class=\"pln\">&nbsp;<\/span><span class=\"typ\">Example<\/span><span class=\"pun\">:<\/span><span class=\"pln\"> <\/span><span class=\"typ\">Add<\/span><span class=\"pun\">-<\/span><span class=\"typ\">AvailabilityAddressSpace<\/span><span class=\"pln\"> <\/span><span class=\"pun\">-<\/span><span class=\"typ\">ForestName<\/span><span class=\"pln\"> pilot<\/span><span class=\"pun\">.<\/span><span class=\"pln\">domain<\/span><span class=\"pun\">.<\/span><span class=\"pln\">com <\/span><span class=\"pun\">-<\/span><span class=\"typ\">AccessMethod<\/span><span class=\"pln\"> <\/span><span class=\"typ\">PublicFolder<\/span><\/pre>\n<ul>\n<li> \t\tIndicate to Exchange 2007 that the free\/busy information for all Google Calendar users should be queried from public folders<\/li>\n<\/ul>\n<blockquote><p> \tIf the free\/busy information of other common calendar resources (like room resources) on Google Calendar need be provisioned on Exchange, the above cmdlet should be run with the <i>ForestName<\/i> value set to the SMTP domain of the resource&#8217;s email. Typically, this value would be <i>resource.calendar.google.com<\/i>. An additional Sync service instance also should be configured to publish these resources&#8217; free\/busy on Exchange (see <strong>Multiple Sync Service Instances<\/strong> section below for details on how to configure multiple instances of Sync service).<\/p><\/blockquote>\n<p> \tNOTE: If there is no default public folder database in Exchange 2007 follow these instructions for how to create the public folder store: <a href=\"http:\/\/technet.microsoft.com\/en-us\/library\/bb123687%28EXCHG.80%29.aspx\" rel=\"nofollow\">http:\/\/technet.microsoft.com\/en-us\/library\/bb123687(EXCHG.80).aspx<\/a><\/p>\n<h3> \tExchange User Mapping<\/h3>\n<p> \tEach Google Calendar user must have a corresponding mail-enabled Active Directory user, contact object or mailbox-enabled (Exchange 2003 only) user object.<\/p>\n<p> \tSee the <a href=\"http:\/\/code.google.com\/p\/google-calendar-connectors\/wiki\/Overview\" rel=\"nofollow\">Overview Guide<\/a> for more information.<\/p>\n<p> \tFor instructions on how to create a mail-enabled users, see the Microsoft TechNet article, <a href=\"http:\/\/technet.microsoft.com\/en-us\/library\/bb125258.aspx\" rel=\"nofollow\">How to Create a New Mail-Enabled User<\/a>.<\/p>\n<p> \tFor instructions on how to create an Active Directory contact, see the Microsoft TechNet article, <a href=\"http:\/\/technet.microsoft.com\/en-us\/library\/aa995841.aspx\" rel=\"nofollow\">How to Create a Contact in Active Directory<\/a>.<\/p>\n<h3> \tDedicated Windows Service Accounts<\/h3>\n<p> \tThe Sync Service requires dedicated Active Directory role accounts for performing LDAP queries against Active Directory and performing free\/busy reads and writes against Exchange.<\/p>\n<p> \tCreate these service accounts as described in this section, and reference the user names and passwords when configuring the Sync Service.<\/p>\n<p> \tThe required service accounts are itemized below:<\/p>\n<h3> \tActive Directory LDAP Query User<\/h3>\n<p> \tCreate a dedicated user for performing Active Directory LDAP queries. The user name and password are required later when you populate the <tt>ActiveDirectory.DomainUser.Login<\/tt> and <tt>Password<\/tt> parameters in the Sync Service configuration file.<\/p>\n<h3> \tExchange Query Admin User<\/h3>\n<p> \tCreate a dedicated user for the Sync Service to read and write free\/busy against Exchange. The user name and password are required later when you populate <tt>Exchange.GCalQueryAdmin.Login<\/tt> and <tt>Password<\/tt> parameters in the Sync Service configuration file.<\/p>\n<p> \tThe <strong>Exchange Query Admin<\/strong> user needs permissions to be able to read and write to the free\/busy Public folder store. To configure the permissions for the query admin user:<\/p>\n<p> \tNOTE: In the past &#8220;Receive As&#8221; permission was required for a GCC feature that is now depreciated, and thus no longer necessary.<\/p>\n<p> \t<strong>Exchange 2003<\/strong><\/p>\n<ol>\n<li> \t\tOpen Exchange System Manager<\/li>\n<li> \t\tBrowse to Folders | Public Folders<\/li>\n<li> \t\tRight Click and select show View System Folders<\/li>\n<li> \t\tExpand SCHEDULE+ FREE BUSY<\/li>\n<li> \t\tRight Click on the EX:\/o=First Organization\/ou=First Administrative Group\/ (This name may vary based on your setup)<\/li>\n<li> \t\tSelect the Permissions tab<\/li>\n<li> \t\tSelect Client Permissions<\/li>\n<li> \t\tClick Add<\/li>\n<li> \t\tSelect the query admin user account you created<\/li>\n<li> \t\tSelect Roles: Owner<\/li>\n<li> \t\tClick Ok<\/li>\n<li> \t\tClick OK<\/li>\n<\/ol>\n<p> \t<strong>Exchange 2007<\/strong><\/p>\n<pre class=\"prettyprint\"><span class=\"pln\">&nbsp;<\/span><span class=\"typ\">Add<\/span><span class=\"pun\">-<\/span><span class=\"typ\">PublicFolderClientPermission<\/span><span class=\"pln\"> <\/span><span class=\"pun\">-<\/span><span class=\"typ\">Identity<\/span><span class=\"pln\"> _Public <\/span><span class=\"typ\">Folder<\/span><span class=\"pln\"> <\/span><span class=\"typ\">Identity_<\/span><span class=\"pln\"> <\/span><span class=\"pun\">-<\/span><span class=\"typ\">User<\/span><span class=\"pln\"> <\/span><span class=\"typ\">Exchange<\/span><span class=\"pun\">.<\/span><span class=\"typ\">GCalQueryAdmin<\/span><span class=\"pun\">.<\/span><span class=\"typ\">Login<\/span><span class=\"pln\"> <\/span><span class=\"pun\">-<\/span><span class=\"typ\">AccessRights<\/span><span class=\"pln\"> <\/span><span class=\"typ\">Owner<\/span> <span class=\"pln\">&nbsp;<\/span><span class=\"typ\">Example<\/span><span class=\"pun\">:<\/span><span class=\"pln\"> <\/span><span class=\"typ\">Add<\/span><span class=\"pun\">-<\/span><span class=\"typ\">PublicFolderClientPermission<\/span><span class=\"pln\"> <\/span><span class=\"pun\">-<\/span><span class=\"typ\">Identity<\/span><span class=\"pln\"> <\/span><span class=\"str\">\"\\NON_IPM_SUBTREE\\SCHEDULE+ FREE BUSY\\EX:\/o=First Organization\/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)\"<\/span><span class=\"pln\"> <\/span><span class=\"pun\">-<\/span><span class=\"typ\">User<\/span><span class=\"pln\"> syncuser <\/span><span class=\"pun\">-<\/span><span class=\"typ\">AccessRights<\/span><span class=\"pln\"> <\/span><span class=\"typ\">Owner<\/span><\/pre>\n<ol>\n<li> \t\tAllow access to <strong>Exchange Query Admin<\/strong> role account to write free\/busy into public folders (NOTE: the value of <i>Identity<\/i> flag may be different for different organizations)<\/li>\n<\/ol>\n<p> \t&nbsp;<\/p>\n<h3> \tRemounting the Exchange Information Stores<\/h3>\n<p> \tThe Exchange Information store caches permissions data. To flush the cache immediately after setting new permissions, dismount and remount the appropriate information store or restart the Information Store service. Otherwise the changes will not take effect until Exchange rebuilds the permissions cache.<\/p>\n<p> \tTo dismount and remount the public folder store:<\/p>\n<ol>\n<li> \t\tOpen Exchange System Manager<\/li>\n<li> \t\tIn tree view, expand <strong>Administrative Groups<\/strong>, <i>{Your Administrative Group}<\/i>, <strong>Servers<\/strong>, <i>{Your local Exchange server}<\/i>, and <i>{Your Storage Group}<\/i>.<\/li>\n<li> \t\tRight click on the <strong>Public Folder Store<\/strong>, select <strong>Dismount Store<\/strong> and click <strong>Yes<\/strong> to continue.<\/li>\n<li> \t\tRight click on the <strong>Public Folder Store<\/strong>, select <strong>Mount Store<\/strong> and click <strong>Yes<\/strong> at the success message dialog.<\/li>\n<\/ol>\n<p> \tTo restart the service Microsoft Exchange Information Store:<\/p>\n<ol>\n<li> \t\tOpen the <strong>services.msc<\/strong><\/li>\n<li> \t\tIn right pane view, locate <strong>Microsoft Exchange Information Store<\/strong>, right click and select <strong>Restart<\/strong><\/li>\n<\/ol>\n<h3> \tInstallation Checklist<\/h3>\n<h2> \t3 Installing the Google Calendar Connector Sync Service<\/h2>\n<table class=\"wikitable\">\n<tbody>\n<tr>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\t<strong>Task<\/strong><\/td>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\t<strong>Completed?<\/strong><\/td>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\t<strong>Notes<\/strong><\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tVerify that Windows environment prerequisites are met<\/td>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\t&nbsp;<\/td>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\t&nbsp;<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tCreate contact objects for Google Apps users in Exchange.<\/td>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\t&nbsp;<\/td>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\t&nbsp;<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tCreate dedicated Google Apps Sync Service user<\/td>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\t&nbsp;<\/td>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tUser name and password:<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tCreate dedicated Active Directory user<\/td>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\t&nbsp;<\/td>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tUser name and password:<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tCreate dedicated Exchange Admin user<\/td>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\t&nbsp;<\/td>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tUser name and password:<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tSet Exchange permissions for Query and Admin users<\/td>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\t&nbsp;<\/td>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\t&nbsp;<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3> \tMSI Installation<\/h3>\n<p> \tThe installer for the Sync Service is provided in the installation package file <i>GoogleCalendarConnectorSyncService.msi<\/i>.<\/p>\n<p> \tTo install the Sync Service:<\/p>\n<ol>\n<li> \t\tLocate and open the file <i>GoogleCalendarConnectorSyncService.msi<\/i>.<\/li>\n<li> \t\tIn the welcome dialog, click <strong>Next<\/strong>.<\/li>\n<li> \t\tIn the <strong>Select Installation Folder<\/strong> dialog, select the desired folder or accept the default value.<\/li>\n<li> \t\tIn the <strong>Select Installation Folder<\/strong> dialog use the radio buttons at the bottom of the dialog to determine whether to install the service only for yourself, or for all users, and click <strong>Next<\/strong>.<\/li>\n<li> \t\tClick <strong>Next<\/strong> to begin the installation, and then Close when the dialog displays the message &#8220;Installation Complete&#8221;.<\/li>\n<\/ol>\n<h3> \tMultiple Sync Service Instances<\/h3>\n<p> \tIf you need to sync more than one domain with the Google Calendar Sync Service you can use the following instructions for setting up multiple instances of the Google Calendar Sync Service on a single server.<\/p>\n<ol>\n<li> \t\tInstall the Google Calendar Sync Service<\/li>\n<li> \t\tCopy the default installation of the Google Calendar Sync Service to a new folder, for example &#8220;C:\\Program Files\\Google\\Google Calendar Connector Sync Service &#8211; domain.com&#8221;<\/li>\n<li> \t\tRun the sc command to create a new service entry for the new path and exe<\/li>\n<\/ol>\n<blockquote><p> \t<i>NOTE: There is a single space after binpath= and start= <\/i> \t<\/p>\n<pre class=\"prettyprint\"><span class=\"pln\">&nbsp;<\/span><span class=\"pun\">%<\/span><span class=\"pln\">WINDIR<\/span><span class=\"pun\">%\\<\/span><span class=\"typ\">System32<\/span><span class=\"pun\">\\<\/span><span class=\"pln\">sc<\/span><span class=\"pun\">.<\/span><span class=\"pln\">exe create <\/span><span class=\"str\">\"Google Calendar Sync Service - domain.com\"<\/span><span class=\"pln\"> binpath<\/span><span class=\"pun\">=<\/span><span class=\"pln\"> <\/span><span class=\"str\">\"C:\\Program Files\\Google\\Google Calendar Connector Sync Service - domain.com\\GoogleCalendarSyncService.exe\"<\/span><span class=\"pln\"> start<\/span><span class=\"pun\">=<\/span><span class=\"pln\"> <\/span><span class=\"kwd\">auto<\/span><\/pre>\n<\/blockquote>\n<pre class=\"prettyprint\"><span class=\"pln\">&nbsp;mkdir C<\/span><span class=\"pun\">:\\<\/span><span class=\"pln\">google<\/span><span class=\"pun\">\\<\/span><span class=\"pln\">logs<\/span><span class=\"pun\">\\<\/span><span class=\"typ\">Domain<\/span><span class=\"pun\">.<\/span><span class=\"pln\">com &nbsp;mkdir C<\/span><span class=\"pun\">:\\<\/span><span class=\"pln\">google<\/span><span class=\"pun\">\\<\/span><span class=\"pln\">data<\/span><span class=\"pun\">\\<\/span><span class=\"typ\">Domain<\/span><span class=\"pun\">.<\/span><span class=\"pln\">com<\/span><\/pre>\n<pre class=\"prettyprint\"><span class=\"pln\">&nbsp;<\/span><span class=\"tag\">&lt;add<\/span><span class=\"pln\"> <\/span><span class=\"atn\">key<\/span><span class=\"pun\">=<\/span><span class=\"atv\">\"GoogleApps.GCal.LogDirectory\"<\/span><span class=\"pln\"> <\/span><span class=\"atn\">value<\/span><span class=\"pun\">=<\/span><span class=\"atv\">\"C:\\google\\logs\\domain.com\\\"<\/span><span class=\"tag\">\/&gt;<\/span> <span class=\"pln\">&nbsp;<\/span><span class=\"tag\">&lt;add<\/span><span class=\"pln\"> <\/span><span class=\"atn\">key<\/span><span class=\"pun\">=<\/span><span class=\"atv\">\"SyncService.XmlStorageDirectory\"<\/span><span class=\"pln\"> <\/span><span class=\"atn\">value<\/span><span class=\"pun\">=<\/span><span class=\"atv\">\"C:\\Google\\data\\domain.com\\\"<\/span><span class=\"pln\"> <\/span><span class=\"tag\">\/&gt;<\/span> <span class=\"pln\">&nbsp;<\/span><span class=\"tag\">&lt;file<\/span><span class=\"pln\"> <\/span><span class=\"atn\">value<\/span><span class=\"pun\">=<\/span><span class=\"atv\">\"C:\\Google\\logs\\domain.com\\SyncService.log\"<\/span><span class=\"pln\"> <\/span><span class=\"tag\">\/&gt;<\/span> <span class=\"pln\">&nbsp;initializeData=\"c:\\google\\logs\\domain.com\\SyncNetTrace.log\"<\/span><\/pre>\n<pre class=\"prettyprint\"><span class=\"pln\">&nbsp;<\/span><span class=\"tag\">&lt;add<\/span><span class=\"pln\"> <\/span><span class=\"atn\">key<\/span><span class=\"pun\">=<\/span><span class=\"atv\">\"GoogleApps.DomainName\"<\/span><span class=\"pln\"> <\/span><span class=\"atn\">value<\/span><span class=\"pun\">=<\/span><span class=\"atv\">\"domain.com\"<\/span><span class=\"pln\"> <\/span><span class=\"tag\">\/&gt;<\/span> <span class=\"pln\">&nbsp;<\/span><span class=\"tag\">&lt;add<\/span><span class=\"pln\"> <\/span><span class=\"atn\">key<\/span><span class=\"pun\">=<\/span><span class=\"atv\">\"GoogleApps.AdminUser.Login\"<\/span><span class=\"pln\"> <\/span><span class=\"atn\">value<\/span><span class=\"pun\">=<\/span><span class=\"atv\">\"user\"<\/span><span class=\"pln\"> <\/span><span class=\"tag\">\/&gt;<\/span> <span class=\"pln\">&nbsp;<\/span><span class=\"tag\">&lt;add<\/span><span class=\"pln\"> <\/span><span class=\"atn\">key<\/span><span class=\"pun\">=<\/span><span class=\"atv\">\"GoogleApps.AdminUser.Password\"<\/span><span class=\"pln\"> <\/span><span class=\"atn\">value<\/span><span class=\"pun\">=<\/span><span class=\"atv\">\"password\"<\/span><span class=\"pln\"> <\/span><span class=\"tag\">\/&gt;<\/span><\/pre>\n<ol>\n<li> \t\tCreate new logging folder paths<\/li>\n<li> \t\tConfigure new logging paths: Update the new config file for the new domain with the following in the GoogleCalendarSyncService.exe.config adding the domain.com directory to each logging path<\/li>\n<li> \t\tUpdate the specific Google Apps Domain Values<\/li>\n<\/ol>\n<h2> \t4 Configuring the Google Calendar Connector Sync Service<\/h2>\n<p> \tConfiguration settings for the Sync Service are stored in the configuration file <i>GoogleGCalExhangeSync.Service.exe.config<\/i>. You must edit this file and enter values appropriate to your setup.<\/p>\n<h3> \tEditing the Configuration File<\/h3>\n<p> \tThe configuration file <i>GoogleGCalExhangeSync.Service.exe.config<\/i> is located in the installation directory for the sync service, by default &#8220;<i>C:\\Program Files\\Google\\Google Calendar Connector Sync Service<\/i>&#8220;. The &#8220;appSettings&#8221; section of <i>GoogleGCalExhangeSync.Service.exe.config<\/i> contains configuration keys for setting up the Sync Service.<\/p>\n<p> \t<strong>Note<\/strong>: If you have already set up the Google Calendar Connector Web Service in your environment, the Sync Service should use most the same settings for the following subsections of appSettings:<\/p>\n<ul>\n<li> \t\tActive Directory<\/li>\n<li> \t\tExchange<\/li>\n<li> \t\tGoogle Apps<\/li>\n<\/ul>\n<table class=\"wikitable\">\n<tbody>\n<tr>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tConfiguration Key<\/td>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tDescription<\/td>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tDefault Value<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tActiveDirectory.DomainController<\/td>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tSpecify the fully qualified domain name of a domain controller for your Windows Active Directory domain. This server is used for LDAP queries to retrieve user login and Exchange user attributes. For queries directly against a domain controller, prefix the machine name with LDAP:\/\/. For queries against the Global Catalog, prefix the machine name with GC:\/\/. For example: <tt>&lt;add key=\"ActiveDirectory.DomainController\" value=\"LDAP:\/\/HQAD1.corp.acme.com\"\/&gt;<\/tt><\/td>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\t&nbsp;<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tExchange.ServerName<\/td>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tThe full qualified domain name of the Exchange server that hosts a copy of the Public Free\/Busy Information Store. For example: <tt>&lt;add key=\"Exchange.ServerName\" value=\"HQEXCH1.corp.acme.com\"\/&gt;<\/tt><\/td>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\t&nbsp;<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tActiveDirectory.DomainUser.Login<\/td>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tThe userPrincipalName for the user account used by the sync service to perform Active Directory lookups. <a href=\"http:\/\/code.google.com\/p\/google-calendar-connectors\/wiki\/SyncServiceGuide#Dedicated_Windows_Service_Accounts\">Dedicated Windows Service Accounts<\/a> for more information on this user account. For example: <tt><span>&lt;add key=\"ActiveDirectory.DomainUser.Login\" value=\"<a class=\"smarterwiki-linkify\" href=\"mailto:ADDomainUser@corp.acme.com\">ADDomainUser@corp.acme.com<\/a>\"\/&gt;<\/span><\/tt><\/td>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\t&nbsp;<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tActiveDirectory.DomainUser.Password<\/td>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tThe password for the user account used by the sync service to perform Active Directory lookups.<\/td>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\t&nbsp;<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tExchange.ServerName<\/td>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tThe full qualified domain name of the Exchange server that hosts a copy of the Public Free\/Busy Information Store. For example: <tt>&lt;add key=\"Exchange.ServerName\" value=\"HQEXCH1.corp.acme.com\"\/&gt;<\/tt><\/td>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\t&nbsp;<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tExchange.GCalQueryAdmin.Login<\/td>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tThe userPrincipalName of the user account used when writing data to the public folder free\/busy store. See <a href=\"http:\/\/code.google.com\/p\/google-calendar-connectors\/wiki\/SyncServiceGuide#Dedicated_Windows_Service_Accounts\">Dedicated Windows Service Accounts<\/a> for more information on this user account. For example: <tt><span>&lt;add key=\"Exchange.GCalQueryAdmin\" value=\"<a class=\"smarterwiki-linkify\" href=\"mailto:GCalQueryAdmin@corp.acme.com\">GCalQueryAdmin@corp.acme.com<\/a>\"\/&gt;<\/span><\/tt><\/td>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\t&nbsp;<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tExchange.GCalQueryAdmin.Password<\/td>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tThe password for the user account used to write free\/busy data to the public folder store.<\/td>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\t&nbsp;<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tExchange.MailboxURITrailingPath<\/td>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tThis key changes the trailing URI when accessing an Exchange user&#8217;s calendar. Typical URL for calendar web access looks like <i><span><a class=\"smarterwiki-linkify\">http:\/\/[Exchange.ServerName]\/exchange\/[user<\/a>&#8216;s primary email]\/calendar\/. However, when running localized versions of Exchange the trailing URI <\/span><\/i>calendar<i> is specific to the localized language and the value must be customized to match the localized string. (Ex. <\/i>Calend%C3%A1rio<i> on a Portuguese Exchange Server). Value of this key should be given the value of the trailing URI string (i.e. <\/i>Calend%C3%A1rio<i>). This key may need modification in only rare cases. <\/i><\/td>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tcalendar<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tExchange.FreeBusyServerName<\/td>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tThis setting allows the definition of a specific Exchange server to use when reading and writing free\/busy data. By default the value Exchange.ServerName is used. Use this value if the default Exchange server does not host a replica of the Free\/Busy Information Store. To enable this setting remove comments and define the fully qualified domain name of the server to use. For Example: <tt><span>&lt;&lt;add key=\"Exchange.FreeBusyServerName\" value=\"<a class=\"smarterwiki-linkify\" href=\"http:\/\/HQEXCH2.corp.acme.com\">http:\/\/HQEXCH2.corp.acme.com<\/a>\"\/&gt;<\/span><\/tt><\/td>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tDISABLED<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tGoogleApps.DomainName<\/td>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tThe domain name used by Google Apps. For example: <tt>&lt;add key=\"GoogleApps.DomainName\" value=\"acme.com\" \/&gt;<\/tt><\/td>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\t&nbsp;<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tGoogleApps.AdminUser.Login<\/td>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tThe Google Apps user account name used for querying Google Calendar. This account must be a dedicated account in Google Apps setup for use with the Google Calendar Connector. This account does NOT need admin access to the Google Apps domain. For example: <tt>&lt;add key=\"GoogleApps.AdminUser.Login\" value=\"gcc_syncsvc\"\/&gt;<\/tt> NOTE: If you use a non-admin account make sure you configure the SyncService.FreeBusy.DetailLevel to &#8220;BASIC&#8221; as the sync will fail for users who only share free\/busy data if you don&#8217;t use the &#8220;BASIC&#8221; feed option.<\/td>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\t&nbsp;<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tGoogleApps.AdminUser.Password<\/td>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tThe password for the Google user account used for querying Google Apps and Google Calendar.<\/td>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\t&nbsp;<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tGoogleApps.GCal.EnableHttpCompression<\/td>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tThis setting determines whether or not to enable GZip compression with the GDATA API calls to Google Apps. The default setting is true for optimum performance. <tt>&lt;add key=\"GoogleApps.GCal.EnableHttpCompression\" value=\"true\"\/&gt;<\/tt><\/td>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\ttrue<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tGoogleApps.GCal.LogDirectory<\/td>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tThis setting defines the directory to write debug output for the GDATA API feed for each user account queried from Google Apps. An individual file is written out per user request. The output contains the calendar feed data for the specific user. If no value is defined no output is written. For Example: <tt>&lt;add key=\"GoogleApps.GCal.LogDirectory\" value=\"C:\\Google\\logs\"\/&gt;<\/tt><\/td>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tDISABLED<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tGoogleApps.GCal.DomainMapping<\/td>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tThis setting allows the definition of SMTP domain name mappings. Use this setting if your Exchange Primary SMTP address is different from the Google Apps SMTP domain name. When enabled the connector will properly map the external Google Apps SMTP domain name to the internal Exchange SMTP domain name. This setting by default is commented out in the config file. To enable this setting remove comments and define the External and Internal SMTP domain names. For example: <tt>&lt;add key=\"GoogleApps.GCal.DomainMapping\" value=\"acme.com,exchange.acme.com\"\/&gt;<\/tt> To configure multiple domain mappings use &#8220;;&#8221; as the delimiter between the domain mapping values. For Example: <tt>&lt;add key=\"GoogleApps.GCal.DomainMapping value=\"acme.com,exchange.acme.com;company.com,exchange.company.com\"\/&gt;<\/tt> NOTE: This value is case sensitive. If the user&#8217;s SMTP domain does not match the case it will not match the mapping value.<\/td>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tDISABLED<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tExchange.DefaultDomain<\/td>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tThis setting prevents Exchange WebDav redirects to servers outside of the DNS domain defined. Enable this feature if the connector should not redirect Exchange server outside of this DNS domain. For example: <tt>&lt;add key=\"Exchange.DefaultDomain\" value=\".corp.acme.com\"\/&gt;<\/tt><\/td>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tDISABLED<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tSyncService.ErrorCountThreshold<\/td>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tThis setting specifies how many errors the service allows before aborting the current synchronization run. If the value is reached during a synchronization run it halts. Once the SyncService.RefreshTimeInMinutes has expired the counter is reset to 0 and a synchronization starts again. <tt>&lt;add key=\"SyncService.ErrorCountThreshold\" value=\"20\"\/&gt;<\/tt><\/td>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\t20<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tSyncService.LDAPUserFilter<\/td>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tThis setting allows the option to define an LDAP filer which determines which users or contacts are included in the synchronizing of data from Google Calendar to Exchange. For example to include all members of an Active Directory Group: <tt>&lt;add key=\"SyncService.LDAPUserFilter\" value=\"(memberof=CN=GCAL_Users,CN=Users,DC=corp,DC=acme,DC=com)\"\/&gt;<\/tt> NOTE: If left blank, all users in Active Directory are included in the sync process.<i> <\/i><\/td>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\t&nbsp;<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tSyncService.RefreshTimeInMinutes<\/td>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tThis setting specifies the interval in minutes to sleep between each completed synchronization before starting again. <tt>&lt;add key=\"SyncService.RefreshTimeInMinutes\" value=\"15\"\/&gt;<\/tt><\/td>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\t15<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tSyncService.ThreadCount<\/td>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tThis setting specifies the number of threads to create when performing a synchronization from Google Calendar in to Exchange. The more threads the fast the sync will complete. NOTE: The more threads the more system and network resources the sync service will utilize. <tt>&lt;add key=\"SyncService.ThreadCount\" value=\"10\"\/&gt;<\/tt><\/td>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\t1<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tSyncService.XmlStorageDirectory<\/td>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tThis setting specifies where the service stores data cached as XML documents. NOTE: The service needs write access to this directory.<i> <tt>&lt;add key=\"SyncService.XmlStorageDirectory\" value=\"C:\\Google\\data\"\/&gt;<\/tt> <\/i><\/td>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tC:\\Google\\data\\<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tSyncService.DirectorySearch.TimeoutInSeconds<\/td>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tThis setting specifies the LDAP query timeout for Active Directory queries, in seconds.<\/td>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\t300<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tConfiguration.EncryptOnNextRun<\/td>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tIf set to \u201ctrue\u201d, the configuration file is automatically encrypted the next time the application runs. See <a href=\"http:\/\/code.google.com\/p\/google-calendar-connectors\/wiki\/SyncServiceGuide#Encrypting_the_Configuration_File\">Encrypting the Configuration File<\/a> for more information.<\/td>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tfalse<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tSyncService.FreeBusy.DetailLevel<\/td>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tIf set to &#8220;Full&#8221;, enables distinguishing between tentative and busy in the Free\/Busy lookups. Setting it to &#8220;Basic&#8221; treats both tentative and busy as busy.<\/td>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tFull<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tSyncService.PlaceHolderMessage<\/td>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tThis setting allows for customization of the subject text placed in each calendar placeholder appointment when running the Sync service SyncService.FreeBusy.Writer in Appointment mode. For example: <tt>&lt;add key=\"SyncService.PlaceHolderMessage\" value=\"GCal Free\/Busy Placeholder\"\/&gt;<\/tt> NOTE: This property only applies to only new placeholder appointments being created. It will no go back and rewrite existing placeholder values.<i> <\/i><\/td>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tGCal Free\/Busy Placeholder<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tSyncService.FreeBusy.DetailLevel<\/td>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tThis setting defines the gdata feed type to use when retrieving free\/busy data from Google Apps. The setting has two values Basic or Full. The basic feed only contains free and busy blocks. This means a meeting in GCal marked as &#8220;Maybe&#8221; will display as &#8220;Busy&#8221; when viewing the free\/busy data. The full feed contains much more detail and includes the user&#8217;s meeting response. Using this feed provides more verbose detail and reflects the free\/busy status more accurately. If the value is set to full a meeting in GCal marked as &#8220;Maybe&#8221; will be displayed as &#8220;Tentative when viewing the free\/busy data. For Example: <tt>&lt;add key=\"SyncService.FreeBusy.DetailLevel\" value=\"Full\" \/&gt;<\/tt><\/td>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tFull<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p> \t&nbsp;<\/p>\n<p> \tTo edit the configuration file:<\/p>\n<ol>\n<li> \t\tUsing your preferred XML or text editor, open <i>GoogleGCalExhangeSync.Service.exe.config<\/i>. The default location is C:\\Program Files\\Google\\Google Calendar Connector Sync Service\\.<\/li>\n<li> \t\tScroll to the appSettings section and enter appropriate values for each of the required values shown in the table above.<\/li>\n<li> \t\tSave the file.<\/li>\n<li> \t\tSave or copy a backup copy of the file to a secure location.<\/li>\n<\/ol>\n<h3> \tEncrypting the Configuration File<\/h3>\n<p> \tBecause some configuration keys contain user names and passwords in plain text, it is recommended that you encrypt these configuration parameters. To enable encryption, set the value of the <tt>Config.EncryptOnNextRun<\/tt> key to <i>true<\/i>. The next time the sync service starts, the <i>appSettings<\/i> keys will be automatically encrypted. This encryption method will encrypt the entire appSettings node of the configuration file, rendering it unreadable. Once encrypted, the settings are no longer in plain text on the file system. However, settings can still be changed through the IIS Manager.<\/p>\n<h3> \tHTTP Proxy Configuration Optional<\/h3>\n<p> \tThe Sync Service can optionally be configured to work with an HTTP proxy. This configuration may be required if all out-bound communication is routed through a proxy. Configuring the HTTP proxy parameters in <i>GoogleGCalExhangeSync.Service.exe.config<\/i> would instruct the Sync Service to properly forward its communication through such a proxy.<\/p>\n<p> \tMicrosoft Support includes an overview of the same process and configuration in the following Knowledge Base article: <a href=\"http:\/\/support.microsoft.com\/kb\/307220\" rel=\"nofollow\">http:\/\/support.microsoft.com\/kb\/307220<\/a>.<\/p>\n<p> \tThe table below outlines the configuration parameters located under the <tt>&lt;system.net.defaultProxy&gt;<\/tt> node of <i>GoogleGCalExhangeSync.Service.exe.config<\/i>:<\/p>\n<table class=\"wikitable\">\n<tbody>\n<tr>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\t<strong>Configuration Key <\/strong><\/td>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\t<strong>Description <\/strong><\/td>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tDefault Value<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tbypasslist.address<\/td>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tAllows the Sync Service to bypass the proxy for additional, non-local addresses. As per Microsoft&#8217;s instructions, this field can contain a host name, or a regular expression.<\/td>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\t&nbsp;<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tproxy.usesystemdefault<\/td>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tInstructs the .NET client to either use the default system profile for access, or to use a custom proxy defined in <tt>proxy.proxyaddress<\/tt>. |To override the system default and configure a custom web proxy for the Sync Service, this variable should be <tt>FALSE<\/tt><\/td>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tTrue<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tproxy.proxyaddress<\/td>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tThe URL:PORT pair for your proxy server. For example: <tt><span><a class=\"smarterwiki-linkify\" href=\"http:\/\/proxyserver.internal.yourdomain.com:3128\">http:\/\/proxyserver.internal.yourdomain.com:3128<\/a><\/span><\/tt><\/td>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\t&nbsp;<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tproxy.bypassonlocal<\/td>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tAllows the Sync Service to bypass the proxy for local addresses containing a &#8220;.&#8221;.<\/td>\n<td style=\"border: 1px solid #ccc; padding: 5px;\"> \t\t\t\tTrue<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p> \t<i><strong>Important Note: Please carefully consider whether your Microsoft Exchange server communication should be sent through a custom proxy. Including Microsoft Exchange servers in a custom proxy scheme could result in decreased performance and certain types of Windows authentication may fail<\/strong><\/i>.<\/p>\n<h2> \t5 Installation Success<\/h2>\n<h3> \tStart the Google Calendar Connector Sync Service<\/h3>\n<ol>\n<li> \t\tOpen the Windows Services Management console.<\/li>\n<li> \t\tSelect the &#8220;Google Calendar Sync Service&#8221; and right-click for properties.<\/li>\n<li> \t\tClick &#8220;Start&#8221; if the service is not already started.<\/li>\n<li> \t\tBrowse to log file path as defined by GoogleApps.GCal.LogDirectory (i.e. C:\\google\\logs)<\/li>\n<li> \t\tReview the log file SyncService.log and verify success messages<\/li>\n<\/ol>\n<h2> \t6 Testing and Troubleshooting<\/h2>\n<p> \tThe Sync Service logs debugging information to a text log file, which is configurable through the log4net.config node in <i>GoogleGCalExhangeSync.Service.exe.config<\/i>. For more information, see <a href=\"http:\/\/code.google.com\/p\/google-calendar-connectors\/wiki\/SyncServiceGuide#Logging_Configuration\">Logging Configuration<\/a>.<\/p>\n<p> \tMonitoring the debug output in the log files is the best way to troubleshoot issues with the sync service. It is recommended to use the freeware log file utility Baretail to monitor the file in real time.<\/p>\n<p> \tImportant Note: Please review <a href=\"http:\/\/code.google.com\/p\/google-calendar-connectors\/wiki\/SyncServiceGuide#Logging_Configuration\">Logging Configuration<\/a> before beginning to test any of the functionality of the service.<\/p>\n<h3> \tRunning Diagnostics Tests<\/h3>\n<p> \tThe Google Calendar Connector Web Service contains a diagnostics page that can help diagnose issues. <strong>Diagnostics.aspx<\/strong>, located in the root of the Web Service virtual directory, contains the following diagnostic tests relevant to the Sync Service:<\/p>\n<ul>\n<li> \t\t<strong>Verify free\/busy data can be found in Google Calendar<\/strong><\/li>\n<\/ul>\n<blockquote><p> \tThis test attempts to retrieve free\/busy information for a specific Google Calendar user. If the Sync Service and Google Apps are configured correctly, free\/busy data should be returned.<\/p><\/blockquote>\n<ul>\n<li> \t\t<strong>Verify free\/busy can be written to Exchange<\/strong><\/li>\n<\/ul>\n<blockquote><p> \tThe Sync Service is by default configured to write free\/busy data directly into the Exchange public free\/busy store. This test attempts to perform a free\/busy write to the Exchange public store for the specified user.<\/p><\/blockquote>\n<p> \tTo run diagnostic tests:<\/p>\n<ol>\n<li> \t\tUse a web browser to navigate to <tt>\/Diagnostics.aspx<\/tt> in the root folder of the Web Service&#8217;s virtual directory.<\/li>\n<li> \t\tSelect a test and enter any optional details in its text area.<\/li>\n<li> \t\tClick &#8220;<strong>Verify<\/strong>&#8221; to run the diagnostic and view its results.<\/li>\n<\/ol>\n<h3> \tLogging Configuration<\/h3>\n<p> \tThe Google Calendar Connector Sync Service includes a configuration node named<\/p>\n<pre><i><span class=\"error\">&lt;log4net&gt;<\/span><\/i><\/pre>\n<p> \tin <i>GoogleGCalExchangeSync.Service.exe.config<\/i> which controls the logging behavior of the Sync Service.<\/p>\n<p> \tTo use logging to troubleshoot Sync Service issues:<\/p>\n<ul>\n<li> \t\tVerify an appropriate log path<\/li>\n<li> \t\tIncrease the logging level for more information<\/li>\n<li> \t\tVerify log file system permissions if the file is not created.<\/li>\n<\/ul>\n<h3> \tVerify Log Path<\/h3>\n<p> \tTo change where the log file is stored, edit the node path <i>configuration\/log4net\/appender\/file<\/i> and change the value attribute of the file node to the new location. Include the file name in the value attribute. <i>NOTE: The SYSTEM account needs &#8220;<strong>Modify<\/strong>&#8221; access to the file system path<\/i>.<\/p>\n<h3> \tIncrease the logging level<\/h3>\n<p> \tThere are four logging levels, with DEBUG providing the most output and ERROR only logging severe events:<\/p>\n<ul>\n<li> \t\tDEBUG<\/li>\n<li> \t\tINFO<\/li>\n<li> \t\tWARN<\/li>\n<li> \t\tERROR<\/li>\n<\/ul>\n<p> \tThe Sync Service has many potential logging points for the DEBUG and ERROR levels. When logging is set to these levels, the size of the log file may grow very rapidly.<\/p>\n<p> \tTo set the Sync Service logging to a certain level, edit the node path <tt>configuration\/log4net\/root\/level<\/tt> and change the value attribute to one of the four levels listed. Lower severity levels are inclusive of higher levels. For example if the Sync Service is set to INFO, it also logs WARN and ERROR but not DEBUG messages.<\/p>\n<h3> \tVerify log file permissions<\/h3>\n<p> \tVerify that the following log file permissions have been set up properly:<\/p>\n<p> \tIn <i>GoogleGCalExchangeSync.Service.exe.config\\appSettings\\<\/i>:<\/p>\n<ul>\n<li> \t\t<strong><tt>SYSTEM<\/tt><\/strong> should have &#8220;<strong>MODIFY<\/strong>&#8221; privileges to the <tt>GoogleApps.GCal.LogDirectory<\/tt> directory.<\/li>\n<li> \t\t<strong><tt>SYSTEM<\/tt><\/strong> should have &#8220;<strong>MODIFY<\/strong>&#8221; privileges to the <tt>SyncService.XmlStorageDirectory<\/tt> directory.<\/li>\n<li> \t\t<strong><tt>SYSTEM<\/tt><\/strong> should have &#8220;<strong>MODIFY<\/strong>&#8221; privileges to the install directory or the file <i>GoogleGCalExchangeSync.Service.exe.config<\/i>.<\/li>\n<\/ul>\n<p> \tIn <tt>GoogleGCalExchangeSync.Service.exe.config\\configuration\\log4net\\appender\\<\/tt>:<\/p>\n<ul>\n<li> \t\t<tt>SYSTEM<\/tt> should have &#8220;MODIFY&#8221; privileges to path defined configuration <tt>\\log4net\\appender\\file<\/tt>.<\/li>\n<\/ul>\n<p> \tTo grant &#8220;Modify&#8221; access to a directory do the following:<\/p>\n<ol>\n<li> \t\tOpen Windows Explorer.<\/li>\n<li> \t\tNavigate to the directory root folder (i.e. C:\\Google\\Data).<\/li>\n<li> \t\tRight click on the folder and select <strong>Properties<\/strong>.<\/li>\n<li> \t\tSelect the <strong>Security<\/strong> tab and click <strong>Add<\/strong>, type SYSTEM and click <strong>OK<\/strong>.<\/li>\n<li> \t\tWith the <strong><tt>SYSTEM<\/tt><\/strong> user highlighted, check <strong>Allow<\/strong> for <strong>Modify<\/strong> privileges.<\/li>\n<\/ol>\n<h2> \t7 Known Issues<\/h2>\n<ul>\n<li> \t\tSee <a href=\"http:\/\/code.google.com\/p\/google-calendar-connectors\/wiki\" rel=\"nofollow\">Google Code Project<\/a> for any known issues.<\/li>\n<\/ul>\n<p> \t&nbsp;<\/p>\n<p> \tComment by David.Su&#8230;@gmail.com, Jul 14, 2009<\/p>\n<p> \tThis says it requires Exchange 2003, will this work with Exchange 2007?<br \/> \tComment by ad&#8230;@scorela.org, Nov 1, 2010<\/p>\n<p> \tok<br \/> \tComment by hank.bo&#8230;@gmail.com, Dec 15, 2010<\/p>\n<p> \tWe are in the process of running a pilot to migrate from exchange to google apps. We&#8217;ve migrated 100 users, and they are running in a co-existence (both outlook on exchange and google mail) environment. For the most part the test is going well. The connector is installed and diagnostics verify it&#8217;s working properly.<\/p>\n<p> \twe are experiencing a very sticky problem with the calendaring piece of the puzzle.<\/p>\n<p> \twhat happens, is when using the outlook client to add attendees to a meeting (when viewing in scheduling view) we are having some conflict between google free\/busy status and exchange free\/busy status. Intially, we get the &#8220;right&#8221; information pulled from the google calendar, but within seconds, the information is overwritten by exchange data. Does anyone have any clues about this? We are running Exchange 2003 and Outlook 2007 and 2010 clients.<\/p>\n<p> \tthanks,<\/p>\n<p> \tHank<br \/> \tComment by duncan.n&#8230;@gmail.com, May 11, 2011<\/p>\n<p> \tLatest version of sync service no longer supports the appointment writer i.e. google fb data is now only written to Exchange public folder schedule plus FB store rather than an option to write into a mailbox that represents the google user.<\/p>\n<p> \tExchange 2007 now also provides the availability service where by when an outlook web access or Outlook 2007 client does a free\/busy lookup it uses the availability service and looks at the users mailbox appointment data rather than the FB public folder store<\/p>\n<p> \tthere is a registry hack on the client to force Outlook 2007 client to use the FB public folder store rather than the availability service. but Outlook web access and Outlook 2010 clients can&#8217;t do this.<\/p>\n<p> \tbasically this kind of make the sync service redundant as the exchange users basically can&#8217;t do a lookup of a google users fb.<\/p>\n<p> \twe have a client looking at using this but are heavy users of Outlook web access.<\/p>\n<p> \tCan you offer any advice?<br \/> \tComment by msmon&#8230;@gmail.com, Jul 14, 2011<\/p>\n<p> \tCan you tell us why the support for appointment writer was abandoned? Are there some inherent drawbacks to updating FB details in the mailstore?<br \/> \tComment by jaideepg&#8230;@google.com, Jul 19, 2011<\/p>\n<p> \tThe intent of this tool is to sync only free busy info. Appointment writer creates complete appointments. This was in testing phase only and had some issues, so we abandoned it.<br \/> \tComment by dragon&#8230;@gmail.com, Oct 14, 2011<\/p>\n<p> \tNeed help working with self signed SSL cert on the exchange server. Is there any way to bypass the cert check?<br \/> \tComment by project member dk&#8230;@google.com, Oct 14, 2011<\/p>\n<p> \tFirst connect the site with IE and view the cert details and export the cert. Then using certmgr.msc you should be able to import the self signed cert into the Trusted Root Certification Authorities store.<\/p>\n<p> \tI believe the default user account the sync service runs under is &#8220;Network Service&#8221;, so via certmgr.msc import the cert and select the cert store for the user &#8220;Network Service&#8221;.<\/p>\n<p> \tYou can test this process first in using your normal user account, import into your user&#8217;s account Trusted Internet Root Authorities store then reconnect to the server with IE and the SSL session should be considered trusted.<\/p>\n<p> \tDO NOT let certmrg determine the &#8220;right path&#8221; to import the cert as it won&#8217;t put it in the proper place for what you want to accomplish.<\/p>\n<p> \tThis site http:\/\/www.hackaapl.com\/how-to-trust-self-signed-certificates-in-windows-7\/ has the basic step by step except the user account you use is based on what the Sync Service is configured for in the services.msc tool.<br \/> \tComment by dragon&#8230;@gmail.com, Oct 15, 2011<\/p>\n<p> \tThanks dk.. that worked great. One last question for the list. Is there a trick to updating public email-enabled calendars?<br \/> \tComment by fabianor&#8230;@gmail.com, Jan 18, 2012<\/p>\n<p> \tThis solution for proxy issues is too much complicated for final users. Google Calendar Sync lacks easy proxy settings for dummy users like me. I&#8217;m not able to configure the HTTP proxy parameters in GoogleGCalExhangeSync.Service.exe.config<br \/> \tComment by project member jaideepg&#8230;@gmail.com, Jan 27, 2012<\/p>\n<p> \tThese are typical .Net proxy settings. See http:\/\/msdn.microsoft.com\/en-us\/library\/sa91de1e.aspx and http:\/\/msdn.microsoft.com\/en-us\/library\/31465c77.aspx<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Before You Install Before you install and configure the connector, make sure your Windows environment meets the prerequisites, and that your Google Calendar and Exchange accounts are prepared for sharing data. Prerequisites A Google Apps Premier or Education Edition domain To support the Sync Service, your Windows environment must meet these prerequisites: Microsoft Windows Server&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9],"tags":[],"class_list":["post-122","post","type-post","status-publish","format-standard","hentry","category-network"],"_links":{"self":[{"href":"https:\/\/notiz.comanet.xyz\/index.php?rest_route=\/wp\/v2\/posts\/122","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/notiz.comanet.xyz\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/notiz.comanet.xyz\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/notiz.comanet.xyz\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/notiz.comanet.xyz\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=122"}],"version-history":[{"count":1,"href":"https:\/\/notiz.comanet.xyz\/index.php?rest_route=\/wp\/v2\/posts\/122\/revisions"}],"predecessor-version":[{"id":421,"href":"https:\/\/notiz.comanet.xyz\/index.php?rest_route=\/wp\/v2\/posts\/122\/revisions\/421"}],"wp:attachment":[{"href":"https:\/\/notiz.comanet.xyz\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=122"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/notiz.comanet.xyz\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=122"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/notiz.comanet.xyz\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=122"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}