--- title: About the architecture slug: '2554' canonical_url: https://docs.coveo.com/en/2554/ collection: coveo-for-sitecore-v5 source_format: adoc --- # About the architecture This page covers the architecture of Coveo for Sitecore. You'll learn about its different parts and how they interact with each other. This can be valuable if you need to troubleshoot issues. ## The building blocks From a conceptual point of view, Coveo for Sitecore is made of the following building blocks. ### Block 1: Coveo Search Provider This module is deployed as a Sitecore package (ZIP file). The Coveo Search Provider acts as a bridge between Sitecore and the [Coveo Platform](https://docs.coveo.com/en/186/). It's responsible for handling [queries](https://docs.coveo.com/en/231/) originating from within Sitecore and for synchronizing your [Coveo organization](https://docs.coveo.com/en/185/) [indexes](https://docs.coveo.com/en/204/) with your Sitecore search indexes. ### Block 2: Coveo Platform This module is responsible for creating, managing, and maintaining your [index](https://docs.coveo.com/en/204/). The [Coveo Platform](https://docs.coveo.com/en/186/) also handles all search [queries](https://docs.coveo.com/en/231/) in the background. Among other things, it contains: * a Push API, which is used to [index](https://docs.coveo.com/en/204/) your Sitecore items. * a Sitecore security provider, which handles Sitecore security permissions and lets you find only what you're allowed to see when you perform a query. ## Event workflow Depending on the type of action that you trigger in Coveo for Sitecore, a different sequence of events occur under the cover. Here are explained the most common scenarios. ### Scenario 1: Rebuilding your search indexes Rebuilding your search [indexes](https://docs.coveo.com/en/204/) causes these events to occur: ![Indexing event sequence | Coveo for Sitecore 5](https://docs.coveo.com/en/assets/images/c4sc-v5/c4sc-indexing-event.png) . The Sitecore application from where you performed the [rebuild](https://docs.coveo.com/en/2712/) (Sitecore Desktop or Content Editor) tells the Coveo Search Provider to [rebuild](https://docs.coveo.com/en/2712/) the chosen search [index](https://docs.coveo.com/en/204/) (for example, `Coveo_master_index`). . The Coveo Search Provider tells the [Coveo Platform](https://docs.coveo.com/en/186/) to create everything necessary on the [Coveo Platform](https://docs.coveo.com/en/186/) side to begin [indexing](https://docs.coveo.com/en/204/) Sitecore items. This includes: * One Coveo field for each Sitecore field selected in the **Fields** section of the **Indexing Manager** (see [About the Indexing Manager - Fields](https://docs.coveo.com/en/2566#fields)). * A field [mapping](https://docs.coveo.com/en/217/) to match each Coveo field with the corresponding Sitecore field. * A [source](https://docs.coveo.com/en/246/) of type Sitecore (for example, `Coveo_master_index - `). * If the Sitecore security permissions are [indexed](https://docs.coveo.com/en/204/), an Expanded Sitecore security provider (for example, `Expanded Sitecore Security Provider for `). The Sitecore security provider expands security permissions found on Sitecore items. . If [Sitecore permissions are indexed](https://docs.coveo.com/en/3140/), the Coveo Search Provider begins to retrieve the users and roles (known as identities) from Sitecore. . If Sitecore permissions are [indexed](https://docs.coveo.com/en/204/), the Coveo Search Provider pushes those identities to the Push API. . The Coveo Search Provider begins to retrieve Sitecore items from the database corresponding to the chosen search [index](https://docs.coveo.com/en/204/) (for example, `master`). . The Coveo Search Provider pushes those Sitecore items to the Push API. . The Push API [indexes](https://docs.coveo.com/en/204/) those Sitecore items, including their selected fields and their security permissions, if applicable. ### Scenario 2: Performing a query from a Coveo Hive search page through the reverse proxy > **Legacy feature** > > The Coveo Hive Framework is now in maintenance mode and is no longer recommended for new implementations. > > To build new search experiences, use one of Coveo's more modern, lightweight, and responsive libraries. > To get started, see the [Build search](https://docs.coveo.com/en/2473/) article. When the Coveo for Sitecore reverse proxy (typically located at `+http:///coveo/rest+`) is enabled, performing a query from a Coveo Hive search page triggers the following events: ![Diagram showing query processing when the reverse proxy is enabled | Coveo for Sitecore 5](https://docs.coveo.com/en/assets/images/c4sc-v5/c4sc-query-event.png) > **Note** > > When a user requests a Coveo-powered search page, a client-side process [generates a search token](https://docs.coveo.com/en/3401/) using the API key and the user identities. > The token is visible to the user in search page calls, but the API key isn't. . The Coveo Hive search page sends the query to the reverse proxy endpoint (typically located at `\http:///coveo/rest`). . The reverse proxy forwards the query to the [Coveo Platform](https://docs.coveo.com/en/186/) Search API endpoint. . The [Coveo Platform](https://docs.coveo.com/en/186/) processes the query and returns only the results that the user is allowed to view. . The [Coveo Platform](https://docs.coveo.com/en/186/) returns search results to the reverse proxy endpoint in a JSON format. . The reverse proxy returns the search results to the Coveo Hive search page. ### Scenario 3: Performing a query from a Coveo Hive search page directly to the Coveo Platform > **Legacy feature** > > The Coveo Hive Framework is now in maintenance mode and is no longer recommended for new implementations. > > To build new search experiences, use one of Coveo's more modern, lightweight, and responsive libraries. > To get started, see the [Build search](https://docs.coveo.com/en/2473/) article. [.version.c4sc.c4sc-new.5-0-822-2.October-30&-2020] [Coveo for Sitecore 5.0.822.2](https://docs.coveo.com/en/3360#release-notes) You can now configure Coveo for Sitecore to [bypass the reverse proxy](https://docs.coveo.com/en/3401/) and have your Coveo Hive search pages perform calls directly to the Coveo Platform Search API endpoint. Performing a query from a Coveo Hive search page with the reverse proxy disabled triggers the following events: ![Diagram showing query processing when the reverse proxy is disabled | Coveo for Sitecore 5](https://docs.coveo.com/en/assets/images/c4sc-v5/c4sc-query-event-bypassing-proxy.png) > **Note** > > When a user requests a Coveo-powered search page, a client-side process [generates a search token](https://docs.coveo.com/en/3401/) using the API key and the user identities. > The token is visible to the user in search page calls, but the API key isn't. . The Coveo Hive search page sends the query to the [Coveo Platform](https://docs.coveo.com/en/186/) Search API endpoint. . The [Coveo Platform](https://docs.coveo.com/en/186/) processes the query and returns only the results that the user is allowed to view. . The [Coveo Platform](https://docs.coveo.com/en/186/) returns search results to the Coveo Hive search page in a JSON format.