pombreda / google-calendar-connectors

Automatically exported from code.google.com/p/google-calendar-connectors
0 stars 0 forks source link

Sync Service Error on Exchange 2007 #63

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
What version of the product are you using? On what operating system?
Sync Service 1.3.1 on Windows 2003

Our LDAP Query user works fine because it can see the users based on
our LDAP Filter in the configuration.  Our Google Apps user works fine
because it can then pull down the F/B from Google for that user and
build the XML files.  But, there appears to be something wrong with
either our Exchange Query Admin user or the Exchange server
configuration.  We've already confirmed that our Exchange Query Admin
user has Owner privileges on the F/B public folder.  It throws an
error using https:// in the server name field, http:// and also with
just the server name, as the documentation reads.

When we point it to the CAS role server and just have the server name
in the Exchange.ServerName field with no prepended protocol
identified, we get a (403) Forbidden.  When we point it to the
Exchange Mailbox role server and just have the server name in the
Exchange.ServerName field with no prepended protocol identified, we
get a (500) Internal Server Error.  However, we were previously
getting a (404) Not Found error on that, until we modified the Mailbox
Server's IIS to allow double-escaping, as a means of troubleshooting.
They're using IIS7 on that server, but our GCC server uses IIS6.
Lastly, we have confirmed that the passwords we have entered in the
config are correct.

Important to note that the Web Service is working fine.  But, we had
issues getting it working using WebDAV so we used EWS in the config
for it.  This does not appear to be a configuration option for the
Sync Service, however.

Thanks for any insight the community can provide!

Here is our Exchange and Google <appSettings> from the config file,
followed by the error we are getting:

 <appSettings>
   <!-- Exchange -->
   <add key="Exchange.ServerName"
value="XYZExchMBServer.xyz.ad.xyz.com" />
   <add key="Exchange.GCalQueryAdmin.Login"
value="svc_gcc_admin@xyz.ad.xyz.com" />
   <add key="Exchange.GCalQueryAdmin.Password" value="" />
   <!-- Specify a different user calendar URI's trailing path.
Usually, an Exchange user
        calendar's URL is http://<server>/exchange/<email>/calendar
but in some localized
        Exchange environments, the last URI may be localized (the
'calendar' part). In such
        cases, initialize with the corrected value -->
   <!-- <add key="Exchange.MailboxURITrailingPath" value="calendar"/>
-->
   <!-- Specify a different exchange server to use for Free Busy
Write -->
   <!-- <add key="Exchange.FreeBusyServerName" value=""/> -->
   <!-- Google Apps -->
   <add key="GoogleApps.DomainName" value="xyz.com" />
   <add key="GoogleApps.AdminUser.Login" value="svc_gcc_ldap" />
   <add key="GoogleApps.AdminUser.Password" value="" />
   <add key="GoogleApps.GCal.EnableHttpCompression" value="true" />
   <!-- Log XML Traffic -->
   <add key="GoogleApps.GCal.LogDirectory" value="C:\Google\logs
\xyz.com"/>
   <!-- Domain Mapping -->
   <!-- <add key="GoogleApps.GCal.DomainMapping"
value="ExternalDomain,LocalDomain"/> -->
   <!-- Default Domain - restrict exchange redirects to this domain --
>
   <!-- <add key="Exchange.DefaultDomain" value=".corp.domain"/> -->
   <!-- GCalSync Windows Service -->
   <add key="SyncService.ErrorCountThreshold" value="20" />
   <add key="SyncService.LDAPUserFilter"
value="(targetAddress=*@ga.xyz.com)" />
   <add key="SyncService.RefreshTimeInMinutes" value="15" />
   <add key="SyncService.ThreadCount" value="1" />
   <add key="SyncService.XmlStorageDirectory" value="C:\Google\data" /
>
   <!-- Directory service search timeout value. Units in seconds. -->
   <add key="SyncService.DirectorySearch.TimeoutInSeconds"
value="300" />
   <add key="Configuration.EncryptOnNextRun" value="false" />
   <!-- Free/Busy detail level settings -->
   <!-- Setting it to Full enables distinguishing between tentative
and busy in the Free Busy lookups -->
   <!-- Setting it to Basic treats tentative and busy as busy in the
Free Busy lookups -->
   <add key="SyncService.FreeBusy.DetailLevel" value="BASIC" />
   <!-- Customize Appointment placeholder message text -->
   <!-- <add key="SyncService.PlaceHolderMessage" value="GCal Free/
Busy Placeholder" /> -->
 </appSettings>

2012-04-17 10:26:56,174 [Sentinel Thread] ERROR
Google.GCalExchangeSync.Library.FreeBusyServiceWebDAV - Creating free/
busy message for:
http://XYZExchMBServer.com/public/NON_IPM_SUBTREE/SCHEDULE%2B%20FREE%20BUSY/EX:_
xF8FF_o=XYZ%20Mail_xF8FF_ou=Exchange%20Administrative%20Group%20(FYDIBOHF23SPDLT
)/USER-_xF8FF_cn=Recipients_xF8FF_cn=John.Doe.EML
failed
System.Net.WebException: The remote server returned an error: (500)
Internal Server Error.
  at System.Net.HttpWebRequest.GetResponse()
  at
Google.GCalExchangeSync.Library.WebDav.XmlRequestImpl.IssueRequest(String
url, Method method, String body, HttpHeader[] headers)
  at
Google.GCalExchangeSync.Library.WebDav.WebDavQuery.IssueRequestIgnoreResponse(St
ring
url, Method method, String body, HttpHeader[] headers)
  at
Google.GCalExchangeSync.Library.FreeBusyServiceWebDAV.CreateFreeBusyMessage(Stri
ng
targetUrl, String targetUsername, List`1 busyMonths, List`1
busyDailyData, List`1 tentativeMonths, List`1 tentativeDailyData,
String startDate, String endDate)
2012-04-17 10:26:56,174 [Sentinel Thread] INFO
Google.GCalExchangeSync.Library.Util.BlockTimer - [Timer] -
WriteFreeBusy - Total Execution Time: 0 ms.
2012-04-17 10:26:56,174 [Sentinel Thread] ERROR
Google.GCalExchangeSync.Library.GCalSyncProcess - Error occured while
executing sync process for user 'John.Doe@XYZ.com'. [running error
count=5]
System.Net.WebException: The remote server returned an error: (500)
Internal Server Error.
  at System.Net.HttpWebRequest.GetResponse()
  at
Google.GCalExchangeSync.Library.WebDav.XmlRequestImpl.IssueRequest(String
url, Method method, String body, HttpHeader[] headers)
  at
Google.GCalExchangeSync.Library.WebDav.WebDavQuery.IssueRequestIgnoreResponse(St
ring
url, Method method, String body, HttpHeader[] headers)
  at
Google.GCalExchangeSync.Library.FreeBusyServiceWebDAV.CreateFreeBusyMessage(Stri
ng
targetUrl, String targetUsername, List`1 busyMonths, List`1
busyDailyData, List`1 tentativeMonths, List`1 tentativeDailyData,
String startDate, String endDate)
  at
Google.GCalExchangeSync.Library.SchedulePlusFreeBusyWriter.SyncUser(ExchangeUser
user, EventFeed googleAppsFeed, ExchangeService exchangeGateway,
DateTimeRange window)
  at Google.GCalExchangeSync.Library.GCalSyncProcess.SyncUsers()

Original issue reported on code.google.com by daniel.w...@mavenwave.com on 17 Apr 2012 at 4:16

GoogleCodeExporter commented 9 years ago
Can you check the IIS logs of the server ? If your public folder database is on 
different machine from the CAS sever then you would need to specify that server 
name in FreeBusyServerName parameter.

Original comment by jaideepg...@google.com on 24 Apr 2012 at 10:49

GoogleCodeExporter commented 9 years ago
Their CAS and DB roles were split out in a clustered environment and they 
needed ISAPI filters installed on the Mailbox DB role servers to allow access 
to /public.  By default, the DB role server in Exchange 2007 apparently does 
not make the legacy URL's available to access Schedule+.  Using the command 
"ServerManagerCmd -i Web-ISAPI-Ext" on each DB role server was the solution.

In our Sync Service config file, we have the Exchange.ServerName key listed as 
the Exchange Clustered Instance and the FreeBusyServerName commented out.

Original comment by daniel.w...@mavenwave.com on 25 Apr 2012 at 8:44