Coveo for Sitecore 5 is now available!

Upgrading from July 2017 (4.0.1547) to September 2017 (4.0.1536.8)

For the best Coveo for Sitecore experience, always follow the Leading Practices When Upgrading Coveo for Sitecore.

This section describes how to upgrade Coveo for Sitecore 4.0 from the July 2017 to the September 2017 release.

Step 1 - Upgrade Coveo Services

  1. Ensure you have installed the July 2017 release of Coveo Enterprise Search (CES 7.0.8996). For more details, see Upgrading CES.

  2. Ensure you have installed the August 2017 release of the Coveo Search API (8.0.1168).

Step 2 - Upgrade Coveo for Sitecore

Please, ensure that the Microsoft MVC security update MS14-059 is installed on every Sitecore host in your environment.

If you are using the Coveo Admin Service in secure mode, please read this notice before installing the package.

In the Coveo.SearchProvider.config file, make sure that the AdminServiceUri value uses the same hostname as the one specified in the certificate. If you are using a different hostname, such as localhost, you might get the error below when installing the package.

The remote certificate is invalid according to the validation procedure.
...
[WebException: The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel.]
...
[SecurityNegotiationException: Could not establish trust relationship for the SSL/TLS secure channel with authority 'localhost'.]
  1. Log into the Sitecore Desktop.

  2. Access the Installation Wizard (Sitecore Start Menu > Development Tools > Installation Wizard).
  3. Upload and install the Coveo for Sitecore XX 4.0 (1536.8).zip package. You can find it in Downloads.
  4. When prompted to overwrite files, click Yes to all.
  5. When prompted to overwrite items, select Overwrite, then click Apply to all.

    You might be prompted twice with this question. Simply select the Overwrite option and click Apply to all both times.

  6. Once the installation is completed, make sure that you restart both the Sitecore client and server.

Step 3 - Manually Update the Coveo Search Provider Configuration File

Merging Your Modifications into the Configuration Files

Since upgrading Coveo for Sitecore modifies the Coveo Search Provider configuration files (Coveo.SearchProvider.config.example and Coveo.SearchProvider.Custom.config.example) with the latest fixes and enhancements, you need to manually merge these modifications into your current configuration files (Coveo.SearchProvider.config and Coveo.SearchProvider.Custom.config). This method allows you to keep your own customization intact, while still benefiting from the latest enhancements brought in the product. You can use a merge tool such as WinMerge to do that.

Step 1 - Upgrade Coveo for Sitecore

Please, ensure that the Microsoft MVC security update MS14-059 is installed on every Sitecore host in your environment.

  1. Log into the Sitecore Desktop.

  2. Access the Installation Wizard (Sitecore Start Menu > Development Tools > Installation Wizard).
  3. Upload and install the Coveo for Sitecore XX 4.0 (1536.8).zip package. You can find it in Downloads.
  4. When prompted to overwrite files, click Yes to all.
  5. When prompted to overwrite items, select Overwrite, then click Apply to all.

    You might be prompted twice with this question. Simply select the Overwrite option and click Apply to all both times.

  6. Once the installation is completed, make sure that you restart both the Sitecore client and server.

Step 2 - Manually Update the Coveo Search Provider Configuration File

Merging Your Modifications into the Configuration Files

Since upgrading Coveo for Sitecore modifies the Coveo Search Provider configuration files (Coveo.SearchProvider.config.example and Coveo.SearchProvider.Custom.config.example) with the latest fixes and enhancements, you need to manually merge these modifications into your current configuration files (Coveo.SearchProvider.config and Coveo.SearchProvider.Custom.config). This method allows you to keep your own customization intact, while still benefiting from the latest enhancements brought in the product. You can use a merge tool such as WinMerge to do that.

Coveo.SearchProvider.config

In the comment at the beginning of the file, add the third line, giving you the following message:

<!--
    Do not modify this configuration file.
    Instead, you should patch this file using Coveo.SearchProvider.Custom.config.
    See Coveo.SearchProvider.Custom.config for additional description of the configuration elements.
-->

Before the coveoQueryFieldPipeline element, change the comment to this one:

<!-- Pipeline used to specify which fields should be returned on LINQ query results. -->

Coveo.SearchProvider.Custom.config

At the beginning of the file, add the following comment:

<!--
    This file patches the Coveo.SearchProvider.config file default configuration.
    It is automatically modified by Coveo for Sitecore configuration wizards.
    This is where you should add your custom configuration.
    See the parent file for all the configuration elements and additional descriptions.
-->

In the fieldMap node, after the first fieldNames element, change the comments to this one:

<!-- Use this section to configure options of Sitecore template fields or computed index fields in the Coveo search index.
     You should never modify field options directly in the Coveo index administration website as they will be overridden at the next configuration synchronization of Coveo for Sitecore.
     Always modify field options in the fieldMap. Then, synchronize the configuration to propagate your changes to the index. Most options need the items to be re-indexed.
     Mandatory attributes:
       fieldName: Defines the name of the Sitecore template field or Sitecore computed index field to configure options for.
       settingType: Defines the type of class to be used for the configuration of this field. This should not be changed.
     Most used option attributes:
       General options for all fields:
         isDisplayField: Defines whether the field should be returned in search results. Items don't need to be re-indexed when this option is modified.
         isExternal: Defines whether this field should be translated (addition of the "f" prefix and the source name hash suffix).
       String field options (cannot be modified for date, numeric, and long fields):
         isFacet: Defines whether facets can be bound to this field.
         isMultiValue: Defines whether this field contains multiple values.
         isSortable: Defines whether this field can be used to sort search results.
         includeForFreeTextSearch: Defines whether full-text search operations can be performed on this field.
         useForRanking: Defines whether values used in a filter on this field are used for search results ranking calculation and highlighting. Items don't need to be re-indexed when this option is modified.
       For additional options, descriptions, example values, default values, limitations, and more, see: https://docs.coveo.com/en/670/coveo-for-sitecore-v4/understanding-the-coveo-search-provider-configuration-file#fieldmap
       For examples with configuration samples, see: https://developers.coveo.cohttps://docs.coveo.com/en/811/coveo-for-sitecore-v4/changing-the-settings-of-sitecore-fields
       This is an example of field configuration. -->
<!--
    <fieldType fieldName="theSitecoreFieldToConfigure" isMultiValue="true" settingType="Coveo.Framework.Configuration.FieldConfiguration, Coveo.Framework" />
-->

After the fieldNames element, before the end of the fieldMap node, add the following elements:

<externalFields hint="raw:AddExternalField">
    <!-- Use this section to configure non-Sitecore fields to be used in Sitecore.
         No configuration synchronization or item re-indexing is required after a modification to this section.
         Mandatory attribute:
           fieldName: Defines the name of the non-Sitecore field to make available in Sitecore.
         Optionnal attribute:
           fieldTypeName: Defines the type of the field seen by the Coveo components (Facet, Facet Range, Slider...). Valid values are Number, Integer, date, datetime, and string.
         For more details, see: https://docs.coveo.com/en/670/coveo-for-sitecore-v4/understanding-the-coveo-search-provider-configuration-file#fieldmap
         For an example with configuration sample, see: https://docs.coveo.com/en/652/coveo-for-sitecore-v4/using-external-content-in-sitecore-facets
         This is an example of field configuration. -->
      <!--
        <field fieldName="theExternalFieldToUseInSitecore" />
      -->
</externalFields>

SwitchMasterToWeb.Coveo.config

Change the content inside your indexUpdateStrategies element to the following:

<coveoSyncMaster name="CoveoSyncMaster">
  <patch:attribute name="type" value="Sitecore.ContentSearch.Maintenance.Strategies.ManualStrategy, Sitecore.ContentSearch" />
  <param desc="database">
  <patch:delete />
  </param>
</coveoSyncMaster>
<coveoOnPublishEndAsync name="CoveoOnPublishEndAsync">
  <patch:attribute name="type" value="Sitecore.ContentSearch.Maintenance.Strategies.ManualStrategy, Sitecore.ContentSearch" />
  <param desc="database">
  <patch:delete />
  </param>
  <CheckForThreshold>
    <patch:delete />
  </CheckForThreshold>
</coveoOnPublishEndAsync>