HomeDev GuideRecipesAPI Reference
Dev GuideAPI ReferenceUser GuideGitHubNuGetDev CommunityOptimizely AcademySubmit a ticketLog In
Dev Guide

Get started with Optimizely Graph for CMS 13

Learn how to configure and use Optimizely Graph with CMS 13, including SDK configuration, search modes, and modern search capabilities for migration scenarios.

Optimizely Graph provides a GraphQL-based content delivery layer for CMS 13 that lets you query, search, and retrieve content across channels from a single endpoint. Use Optimizely Graph to power headless front ends, build advanced search experiences, and replace Optimizely Search & Navigation with a cloud-hosted alternative.

For more information about Optimizely Graph, go to the Optimizely Graph overview.

📘

Note

If you already use Optimizely Graph on Content Management System (CMS) 12, go to Project migration for CMS 12 with Optimizely Graph.

Prerequisites

Verify the following before you start:

Request a developer instance

🚧

Important

Developer instances last only 30 days. You should wait until you need it to request one.

To request a developer account, any customers or partner can open a support ticket and include the following information:

  • First name
  • Last name
  • Email address
  • Organization name
  • Region (APAC, EMEA, UAE, or US)

The Engineering team creates the account and provides the credentials through the support ticket. The index is automatically removed after 30 days. After expiration, you must request a new account to continue access.


Enable Optimizely Graph

Register the Optimizely Graph integration in your startup configuration so CMS 13 syncs content to the Graph service.

Add the following code to your startup class:

services.AddContentGraph();

Understand the SDK purpose

The .NET (C#) SDK helps developers migrate from Optimizely Search & Navigation to Optimizely Graph. It provides patterns to implement search and content retrieval through a Graph-based approach.

For more information, go to the .NET (C#) SDK overview.

Choose a content search mode

Optimizely Graph supports three search modes. Select the mode that fits your use case.

Content search

Use content search when you need CMS-integrated results. This mode offers the following capabilities:

  • Compile-time type safety for filters.
  • Data loading through IContentLoader.
  • IContent instances in results.
  • Content permission and URL enforcement.

Typed search

Use typed search for structured external or global search scenarios. This mode offers the following capabilities:

  • Response deserialization into defined contracts.
  • Compile-time type safety for filters.
  • Support for global search pages and advanced listings.

Untyped search

Use untyped search for maximum flexibility. This mode offers the following capabilities:

  • Types and fragments accepted as strings.
  • Raw JsonElement results.
  • No compile-time type safety.

Implement search functionality

Optimizely Graph enables the following search capabilities across all modes:

  • Full-text search with highlighted terms.
  • Filters, operators, and logical connectors.
  • Fuzzy matching.
  • Extension methods for defining filters.
  • Locale-based and ID-based queries.
  • Sorting, including semantic sorting.
  • Cursor-based pagination.
  • Autocomplete and query suggestions.
  • Variations, facets, and boosting.
  • Pinned results.

Configure security and performance

Optimizely Graph includes built-in security and performance features you can configure for your deployment.

Security

The following security features are available:

  • Integrated tracking that respects "Do Not Track" settings.
  • Authentication through a single API key by default.
  • Optional HMAC authentication.
  • Authorization through FilterForVisitor, using IPrincipal and locale.
  • Option to include deleted documents.

Performance and observability

The following performance and observability features are available:

  • Built-in metrics for HttpClient.
  • Observability and query categorization.
  • Optional caching support.

Understand SDK limitations

The SDK does not replicate all features from Search & Navigation. The following features are not supported:

  • Full Language Integrated Query (LINQ) provider.
  • Direct link support. Use IContentLoader.GetAncestors() instead.
  • Recursive directives. Use IContentLoader.Get() instead.
  • Routing. Use IUrlResolver.Route() and ContentLoader.Get() instead.
  • Single document retrieval by ID.
  • Filtering on the current site.
  • Multi-search.

Next steps

Go to Migrate from Optimizely Search and Navigation to Optimizely Graph for a migration guide.