---
title: Overview of migrating from Search & Navigation
slug: graph/docs/migration-documentation-overview
docTags: 
createdAt: 2026-07-30T20:30:18.888Z
---

Migrate from Optimizely Search & Navigation to Optimizely Graph using a controlled, low-risk approach. Run both systems in parallel, validate functionality, switch production traffic, and decommission Search & Navigation after the migration completes.

:::hint{type="info"}
**Note**
Optimizely published a walkthrough of automating the Search & Navigation to Optimizely Graph migration using Claude Code. See [Automated Search & Navigation to Graph Migration with Claude Code ](https://world.optimizely.com/blogs/connor-fortin/dates/2026/6/automated-search--navigation-to-graph-migration-with-claude-code/)on Optimizely World.
:::

## Overview of the migration to Optimizely Graph

This guide assumes that Optimizely Search & Navigation is installed and running in a production environment.

Optimizely recommends using the following incremental migration strategy:

1. [Install and configure Optimizely Graph](docId\:O-8InfwC7N6JBtbOesyxV).
2. [Run Graph alongside Search & Navigation.](docId\:O-8InfwC7N6JBtbOesyxV)
3. [Validate search behavior and performance.](docId\:O-8InfwC7N6JBtbOesyxV)
4. [Switch production traffic when results meet expectations.](docId\:O-8InfwC7N6JBtbOesyxV)
5. [Keep Search & Navigation available as a fallback until Graph is fully verified.](docId\:O-8InfwC7N6JBtbOesyxV)

## Advantages of using Optimizely Graph

Optimizely Graph provides a modern search and content delivery platform designed for headless and API-driven architectures, with the following key advantages:

- **GraphQL-based API** – Query only the data you need using a strongly typed schema.
- **Headless and omnichannel support** – Deliver content to web, mobile, and third-party applications from a single source.
- **Semantic and structured search** – Combine full-text search with structured filtering and relationships.
- **Modern CMS integration** – Integrate with [Optimizely CMS 13](docId:2QEZSUyIlYwc6rNrNBEZD) natively.
- **Flexible front-end architectures** – Support frameworks such as React, Vue, and other JavaScript-based solutions.
- **Improved scalability** – Support cloud-native workloads and high-volume query scenarios.

These capabilities make Optimizely Graph suitable for teams that require API-first development, headless CMS support, or advanced search scenarios.

:::hint{type="warning"}
**Important**
Before starting the migration, review what Graph does not provide compared to Search & Navigation:

- **Admin portal UI** – Optimizely Graph does not provide a web-based administration interface.
- **Statistics and analytics dashboard** – Optimizely Graph does not include built-in analytics or reporting.

For more information, see [Feature comparison](docId\:SeBULl_k3oGC4oxOFceNW).

Use the following guidance to decide whether to proceed:

- Continue if API-based administration and CMS integration meet your requirements.
- Reconsider if a web-based admin UI or built-in analytics are critical to your workflows.
- Plan alternative solutions, such as external analytics tools or custom implementations, before proceeding.
:::

## Install and configure Optimizely Graph

Install Optimizely Graph packages, configure settings, and sync content.

1. Install required NuGet packages:

```bash
dotnet add package EPiServer.ContentDeliveryApi.Cms
dotnet add package Optimizely.ContentGraph.CMS
```

:::hint{type="info"}
**Note**
This configuration requires Optimizely CMS 12 running on .NET 6 or later.
:::

2. Add the following configuration to `appsettings.json`:

```json
{
  "Optimizely": {
    "ContentGraph": {
      "GatewayAddress": "https://cg.optimizely.com",
      "AppKey": "your-app-key",
      "Secret": "your-app-secret",
      "SingleKey": "your-single-key",
      "PreventFieldCollision": true
    }
  }
}
```

3. Update `Startup.cs` to register the required services:

```csharp
public void ConfigureServices(IServiceCollection services)
{
    services.AddContentDeliveryApi();
    services.AddContentGraph();
}
```

4. Run the initial sync. This syncs content, content types, relationships, and media metadata to Graph.
   1. Go to **CMS Admin** > **Scheduled Jobs**.
   2. Select **Optimizely Graph Full Synchronization**.
   3. Select **Start**.
5. Verify the installation:
   1. Open the **Global Menu** and select **Optimizely Graph**.
   2. Run a test query, for example:

```graphql
{
  Content {
    total
    items {
      Name
    }
  }
}
```

## Maintain parallel operation

Run Optimizely Search & Navigation and Optimizely Graph concurrently. Content automatically syncs to both systems. Optimizely Search & Navigation continues to handle production traffic while you test Optimizely Graph in non-production scenarios.

## Test migrated features

Review the feature migration guides for detailed instructions:

- [Basic search](docId\:aM0WpNsNXe_n26IhkX5sG)
- [Synonyms](docId\:aM0WpNsNXe_n26IhkX5sG)
- [Best bets and pinned results](docId\:aM0WpNsNXe_n26IhkX5sG)
- [Autocomplete](docId\:aM0WpNsNXe_n26IhkX5sG)
- [Boosting](docId\:HlYcvwmfjgugmP4bKp-yu)

## Switch to Optimizely Graph

After you validate functionality and performance, route production traffic to Optimizely Graph.

:::hint{type="warning"}
**Important**
Keep Optimizely Search & Navigation running during this phase. Maintain indexing jobs and infrastructure so you can roll back quickly if issues occur.
:::

## Monitor and remove Optimizely Search & Navigation

Optimizely Graph now handles production traffic while Optimizely Search & Navigation continues to run as a backup. Remove Optimizely Search & Navigation when:

- No incidents have occurred for an agreed-upon monitoring period.
- Performance remains stable.
- User feedback is positive.
- Your team is confident in the migration.
