Product DocsMenu

Fine-Tuning the Exchange Callback Service

For Microsoft Exchange Server 2007 and 2010, the Coveo Exchange (WebServices) connector uses Microsoft Exchange callback service API to request notifications from Exchange when content is modified within a monitored mailbox. With this information, the connector can immediately update the good folders and items on the next live indexing run, instead of polling for every folder in every mailbox. This ability drastically improves live indexing performances and reduces bandwidth usage. The CES installer deploys the callback service that starts when an Exchange WebServices connector requests it. By default, a new Exchange WebServices source is ready to use the Exchange Callback Service.

The Callback Service Url source parameter indicates the location of the Exchange Callback Service (see Configuring and Indexing a Microsoft Exchange Source).

Important: Ensure to open the port 8181 in the firewall. The Exchange Server has to connect to the Exchange Callback Service to send notifications.

The Exchange Callback Service requires that a user identity is defined on the source to work (see Configuring a Microsoft Exchange User Identity).

When an Exchange WebServices source starts, a message appears in the CES log to specify whether the Exchange Callback Service is used or not, either because it is not configured correctly or cannot be started.

Callback service state Message in CES log when an Exchange (WebServices) source starts
Used [SourceName] – Using Push Notifications.
Not used An error message followed by:
[SourceName] – Using Standard Mode.

The Exchange Callback Service is configured to run correctly in most cases using default parameter values. You can however manually configure advanced parameters in the Exchange Callback Service configuration file to fine-tune out-of-the-box behaviors.

To fine-tune the Exchange Callback Service configuration file

  1. Consult the following list of available configuration file parameters to see if you need to change the default value of one or more of them.

    LogFileLifeTime
    Duration before a log file is automatically deleted by the service. Default is 30 days.
    LogMaxSize
    Maximum size before splitting a log file. Default is 10 MB (10 485 760 bytes).
    MaxConnections
    Maximum number of concurrent connections that the service can create when calling the Exchange WebServices. Default is 4 connections.
    ShowAllCounters
    Displays the usage statistics about the service in the CES console and logs before each live indexing run. Default is false.
    DataFilePath
    Location of the data files used by the service. By default, data files are located in the [Index_Path]\Index\Crawlers\EchangeCallbackService folder.
    LogFilePath
    Location of the log files created by the service. By default, log files are saved in the same folder as the other CES log files ([Index_Path]\Log).
    SubscriptionTimeout
    Duration before an Exchange subscription is considered invalid. This value should not be changed unless there are issues using the default value. Default is 30 minutes. Maximum allowed is 1440 minutes.
    HostName
    Host name used internally to build the web service URL. Changing this value affects directly the Callback Service Url parameter that is set on an Exchange source. Default is the computer name.
    PortNumber
    Port number used internally to build the web service URL. Changing this value affects directly the Callback Service Url parameter that is set on an Exchange source. Default is 8181.
  2. Using an administrative account, connect to the Coveo Master server.

  3. Browse to the CES bin folder ([CES_Installation_Path]\Bin).
  4. Using a text editor:

    1. Open the CESExchangeCallbackService.exe.config file.

    2. Under <configuration> in the content of the file, locate the <appSettings> section.

    3. Add one custom parameter per line under <appSettings> using the following format:

      <add key=”parameter_name” value=”value”>

    4. Save the file.

      Example: To specify a maximum number of connections equal to 6, add line 4 as shown in the following file excerpt.
      <?xml version="1.0" encoding="utf-8"?>
      <configuration>
        <appSettings>
      	<add key=”MaxConnections” value=”6”>
        </appSettings>
        ...
      </configuration>