---
title: 2024 Optimizely Graph release notes
slug: graph/release-notes/2024-optimizely-graph-release-notes
docTags: 
createdAt: 2026-07-20T15:44:59.961Z
---

Subscribe to updates on this page using the notification and RSS feed options.

Optimizely Graph packages released throughout 2024. Product packages are found on the [Optimizely NuGet server](https://nuget.optimizely.com/).

:::hint{type="info"}
**Note**

Are you looking for release notes before January 2024? See the [Optimizely Release Notes](https://world.optimizely.com/documentation/Release-Notes/) on the Optimizely World site.
:::

You can find prior versions of user guides and when functionality was released or deprecated at the following locations:

- [Versioned user guides and release notes](../../suite-wide-information/archived-optimizely-documentation/versioned-user-guides-and-release-notes-2021-and-older.mdx).
- [Released functionality](../../suite-wide-information/archived-optimizely-documentation/released-functionality.mdx).
- [Obsolete functionality](../../suite-wide-information/archived-optimizely-documentation/obsolete-functionality.mdx).

## December 27

***Optimizely.ContentGraph.Cms 3.14.3***

**Bug fixes**

- [CG-8931](https://world.optimizely.com/support/Bug-list/bug/CG-8931) – Fixed a bug where users could not sort children by the page tree sort order when using a `_link` of type `CHILDREN` registered by the CMS integration because the `SortOrder` property is not exposed in the synced document.
- [CG-9798](https://world.optimizely.com/support/Bug-list/bug/CG-9798) – Fixed a bug where the `ContentArea` fields are sometimes synced as "String" types in the Optimizely Graph schema. This occurs due to the incorrect handling of `ContentArea` properties when pushed from the `ContentTypeIndexer`.
- [CG-10035](https://world.optimizely.com/support/Bug-list/bug/CG-10035) – Fixed a bug where `ContentTypeNameValidator` was not thread-safe.
- [CG-9355](https://world.optimizely.com/support/Bug-list/bug/CG-9355) – Fixed an issue in `AsyncLocal` in `ContentTypeSerializer` that caused issues when there were multiple parallel content type syncs (like when doing event indexing).
- [CG-9873](https://world.optimizely.com/support/Bug-list/bug/CG-9873) – Fixed an issue that caused an `IndexOutOfRange` exception for blocklist.
- [CG-9597](https://world.optimizely.com/support/Bug-list/bug/CG-9597) –  Fixed an issue in `Optimizely.ContentGraph.Cms` 3.13.0 that prevented synchronization of Forms to Gateway.
- [CG-10043](https://world.optimizely.com/support/Bug-list/bug/CG-10043) – Fixed an issue that called `GetContentTypes` over and over that caused huge unnecessary allocations from indexing.
- [CG-9216](https://world.optimizely.com/support/Bug-list/bug/CG-9216) – Changed the following interfaces from internal to external namespaces.
  - `IContentIndexer`
  - `IContentApiModelProperty`
  - `ITypedContentApiModelProperty`
- [CG-9218](https://world.optimizely.com/support/Bug-list/bug/CG-9218) Fixed an issue in `Optimizely.ContentGraph.Cms` 3.11.0 that broke `LinkItemFilter` for Content Delivery API.
- [CG-9801](https://world.optimizely.com/support/Bug-list/bug/CG-9801) –  Fixed an issue where the `XhtmlString`'s structure in the `Block` property was null when `RichTextStructAsJson=true`.
- [CG-10049](https://world.optimizely.com/support/Bug-list/bug/CG-10049) –  Fixed an issue where Optimizely Graph sync status icon is always showed as unsynced.

## December 17

***Optimizely.ContentGraph.Cms 3.14.2***
***Optimizely.ContentGraph.Core 3.14.2\&#xA;***

Introduced new settings to optimize the sync of related content in CMS 12. The CMS 12 and Optimizely Graph integration now expands `ContentReference`, `Url`, and `LinkItem` properties, as well as `ContentArea` and `ContentAreaItem`.

Previously, content related to other items through these properties could cause cascading updates. The new settings let you control when these expansions occur. For detailed information about these settings and their usage, see [Configure resync of related content](https://docs.developers.optimizely.com/content-management-system/docs/install-and-configure-optimizely-graph-on-your-site#configure-resync-of-related-content).

## December 3

***Optimizely.ContentGraph.Cms 3.14.1***
***Optimizely.ContentGraph.Core 3.14.1\&#xA;***

Improved the internal class `ContentTypeLoader` for faster content creation. The `ContentTypeLoader` is frequently used for sending content to Optimizely Graph.

## November 21

***Optimizely.ContentGraph.Cms 3.14.0***
***Optimizely.ContentGraph.Core 3.14.0***

- Released the [Conventions API](https://docs.developers.optimizely.com/content-management-system/docs/conventions-api) that lets you add abstract CMS types and interfaces from CMS 12 to Optimizely Graph. You can also extend types with custom fields.
  - To configure conventions, get the singleton instance of `ConventionRepository` and then do the configuration.
  - Perform the configuration only once during the site's startup because modifying conventions while the site is running can cause unpredictable behavior.

***Service deployment 3.13.3***

- Updated query results so that they stay longer in the CDN cache, by adding the `query-string cache_uniq=true` to the Optimizely Graph request.
  - The `query-parameter cache_uniq` must only be used for queries where you filter content for a specific item, for example, **get content by id**, **get content by path**, **get content by url**, or similar.
  - Optimizely Graph creates a cache-tag using the returned ID from the result and caches the result with that cache-tag. Optimizely Graph purges the cache (cache invalidation) for the cached result (when `cache_uniq=true`) when the content item with the specific ID is re-published or deleted.

## November 5

***Optimizely.ContentGraph.Cms 3.13.1***
***Optimizely.ContentGraph.Core 3.13.1***

- Updated the request protocols for the Client package from HTTP/1.1 to HTTP/2.0, improving performance and efficiency by leveraging Cloudflare's support for higher HTTP versions.

## October 29

***Optimizely.ContentGraph.Cms 3.13.0***

**Enhancements**

- Added the possibility to boost your results based on the value (number) that exists for a specific field. See [Boosting](https://docs.developers.optimizely.com/platform-optimizely/v1.4.0-optimizely-graph/docs/boosting).
- Added the ability to specify a GeoPoint in the GraphQL schema using an inner latitude (lat) and longitude (lon) field. See [Geo search](https://docs.developers.optimizely.com/platform-optimizely/v1.4.0-optimizely-graph/docs/geo-search).
- Added the ability to boost by the datetime field. See [Boosting of datetime fields with a Gaussian function](https://docs.developers.optimizely.com/platform-optimizely/v1.4.0-optimizely-graph/docs/boosting#boosting-of-datetime-fields-with-a-gaussian-function).

**Bug fixes**

- [CG-8641](https://world.optimizely.com/support/Bug-list/bug/CG-8641) – Fixed a bug where queries using the `Data` type for SaaS CMS accounts returned zero results.
- [CG-8910](https://world.optimizely.com/support/Bug-list/bug/CG-8910) – Fixed a bug where content in a local block was not being indexed for search, preventing it from appearing in the parent content's \_fulltext field.
- [CG-8935](https://world.optimizely.com/support/Bug-list/bug/CG-8935) – Fixed a bug where querying a page type's ContentArea returned an error after updating complex properties from non-required to required with `CMSGraphOptions.EnableNullability` set to `true`.

## September 25

***Optimizely.ContentGraph.Cms 3.11.0***

**Enhancement**

Added the ability to [mark required fields](https://docs.developers.optimizely.com/content-management-system/docs/install-and-configure-optimizely-graph-on-your-site#configure-required-fields) as not nullable in GraphQL for CMS 12.

**Bug fixes**

- [CG-7262](https://world.optimizely.com/support/bug-list/bug/CG-7262) – Fixed a bug where pages with a LinkItem property set to Automatic in a multilingual CMS configuration did not generate language-specific Href links. Instead, both language versions are linked to the same language page.
- [CG-7731](https://world.optimizely.com/support/Bug-list/bug/CG-7731) – Fixed a bug where ContentReferences were instantiated using new ContentReference(id) instead of consistently utilizing the three-parameter override constructor, `new ContentReference(id, workid, providername)`.
- [CG-8291](https://world.optimizely.com/support/Bug-list/bug/CG-8291) – Fixed a bug where the scheduled job in CMS would sometimes fail with the error "timed out while waiting for a dynamic mapping update".
- [CG-8314](https://world.optimizely.com/support/Bug-list/bug/CG-8314) – Fixed a bug where an empty CMS or Alloy site would crash if a user typed some keywords and searched for content.
- [CG-8519](https://world.optimizely.com/support/Bug-list/bug/CG-8519) – Fixed a bug where requests could result in a 401 error when the Optimizely provisioning service experienced a high load.
- [CG-8558](https://world.optimizely.com/support/Bug-list/bug/CG-8558) – Fixed a bug where extracting content could sometimes give the error "Stream does not support reading".
- [CG-8566](https://world.optimizely.com/support/Bug-list/bug/CG-8566) – Fixed a bug where referenced content is not sent to Optimizely Graph in correct batches when a content item that is being referenced from different places is updated. This can lead to longer synchronization time.
- [CG-8955](https://world.optimizely.com/support/Bug-list/bug/CG-8558) – Fixed a bug where queries with facets on numbers could sometimes get the wrong matching values.

## August 7

***Optimizely.ContentGraph.Cms 3.10.0***

**Enhancements**

Added the ability to add a property similar to \_\_typename in the CMS integration.

**Bug fixes**

- [CG-6303](https://world.optimizely.com/support/bug-list/bug/CG-6303) – Fixed a bug where links of page types did not display in relative paths when ForceAbsolute is set to false.
- [CG-7957](https://world.optimizely.com/support/bug-list/bug/CG-7957) – Fixed a bug where when updating a property on a page with several languages and the property on that page is not unique per language, it would take a long time to update the property in Optimizely Graph.
- [CG-8205](https://world.optimizely.com/support/Bug-list/bug/CG-8205) – Fixed a bug where blocks configured with language fallbacks were not appearing in the alternative language version of the page.
- [CG-8253](https://world.optimizely.com/support/bug-list/bug/CG-8253) – Fixed a bug where it was impossible to set the MaxDeepLevels for properties.
- [CG-8314](https://world.optimizely.com/support/bug-list/bug/CG-8314) – Fixed a bug where an empty CMS or Alloy site would crash if a user typed some keywords and searched for content.
- [CG-8319](https://world.optimizely.com/support/bug-list/bug/CG-8319) – Fixed a bug where an error would display when editing a page containing a fallback language setting in ContentArea.

## June 25

***Optimizely.ContentGraph.Cms 3.9.0***

**Enhancements**

Released the ability to use a scheduled job to send Commerce content to Optimizely Graph.

**Bug fixes**

- [CG-7431](https://world.optimizely.com/support/bug-list/bug/CG-7431) – Fixed a bug where the indexing job failed with a "mapper\_parsing\_exception" error when content types had properties named "Link".
- [CG-7685](https://world.optimizely.com/support/bug-list/bug/CG-7685) – Fixed a bug where the `p_VirtualLinkProp` field in the `LinkPropertiesBlock` query returned null instead of the correct value.
- [CG-6608](https://world.optimizely.com/support/Bug-list/bug/CG-6608) – Fixed a bug where indexing failed due to a Rich Text fields (`XHtmlString`) serialization error when a Form was included in a Rich Text field.
- [CG-7918](https://world.optimizely.com/support/bug-list/bug/CG-7918) – Fixed a bug where indexing failed due to a Rich Text fields (`XHtmlString`) serialization error when a Form was included in an Inline block.
- [CG-8215](https://world.optimizely.com/support/bug-list/bug/CG-8215) – Fixed a bug where the sync intermittently removed content items from the Optimizely Graph service, causing HTTP 404 errors on the website.

## June 21

***Service deployment***

- Introduced the capability to send `XHTML` strings as JSON objects within the schema.
- Released the ability to use the \`exist\` operator for date or number fields.
- Released the ability to do recursive calls within a query.
- Released the ability to use categorical facets to create facets for integer values.

## May 21

***Optimizely.ContentGraph.Cms 3.8.0***

**Enhancements**

- Added the ability to add an attribute to content type properties in C# to select if and how each property should sync with Optimizely Graph.
- Implemented support for DateTime objects in the JSON content type. You can configure this in startup.

**Bug fixes**

- [CG-6934](https://world.optimizely.com/support/Bug-list/bug/CG-6934) – Fixed a bug where Optimizely Graph encountered syncing issues with content providers that do not inherit from CMS or Commerce base types. This limitation hampered the integration of alternative content sources like Geta categories.

## April 16

***Optimizely.ContentGraph.Cms 3.7.0***

**Enhancements**

- Added the ability to prevent field collisions by updating the appSettings.json in CMS.
- GraphQL implemented support for DateTime objects in JSON content type. Configure this in startup.
- Added the ability to implement the interface `IGraphLink` and register the type in `startup.cs`.
- Added the ability to add an attribute on content type properties in C# to select if and how each property should sync with Optimizely Graph.
- Added support for the creation of snippets for values for searchable string fields. A snippet is a short text fragment comprising the words you have searched for.
- Added the ability to sort by the \_modified field, so you can sort content by the datetime of modification by the system.
- Released the ability to set the minimum score for the returned search results so that you can limit the number of irrelevant results

**Bug fixes**

- [CG-7048](https://world.optimizely.com/support/Bug-list/bug/CG-7048) – Fixed a bug where you could not query a name inside inline fragments.
- [CG-7260](https://world.optimizely.com/support/Bug-list/bug/CG-7260) – Updated the sorting query to be more robust, so it can sort correctly, even when the type is incorrectly mapped to the index schema.
- [CG-7424](https://world.optimizely.com/support/Bug-list/bug/CG-7424) – Fixed an issue where the "contains" and "match" operators return incorrect data when handling text that contains tone marks.

## March 19

***Optimizely.ContentGraph.Cms 3.6.0***

**Enhancements**

- Included an option for users to choose not to extract text from media content. Go to `startup.cs` and set `ExtractMedia` to false.
- GraphQL implemented support for DateTime objects in JSON content type. Configure this in startup.

**Bug fixes**

- [CG-6778](https://world.optimizely.com/support/Bug-list/bug/CG-6778) – Fixed an issue where restricted content did not display in the `ContentArea` of a page even though the content had the same access permissions as the page.
- [CG-6834](https://world.optimizely.com/support/Bug-list/bug/CG-6834) – Fixed an object mapping issue when the Optimizely Graph content synchronization job was run.
- [CG-6682](https://world.optimizely.com/support/Bug-list/bug/CG-6682) – Made `SearchableSuffixContentTransformer.MaxDepth` configurable by using code or `appsettings.json`.

## January 16

***Optimizely.ContentGraph.Cms.3.5.2***

**Enhancements**

- Implemented `XHtmlString` field in JSON format for the following content types:
  - `ContentReference`
  - `ContentReferenceList`
  - `LinkItem`
  - `LinkItemCollection`
  - `ContentArea`
  - `ContentAreaItem`
  - `PageReference`

**Bug fixes**

- [CG-6681](https://world.optimizely.com/support/Bug-list/bug/CG-6681) – Fixed an issue where the Content Management System (CMS) became unresponsive due to high memory usage when the Optimizely Graph sync job was run multiple times.
- [CG-4640](https://world.optimizely.com/support/Bug-list/bug/CG-4640) – Fixed an issue where the Optimizely Graph content sync job did not stop after the job was canceled and the page was refreshed.
- [CG-6567](https://world.optimizely.com/support/Bug-list/bug/CG-6567) – Ensured that when querying for form data using `ContentDeliveryAPI`, `formModel` property returns in the result.
- [CG-6268](https://world.optimizely.com/support/Bug-list/bug/CG-6268) – Fixed an issue where the MVC engine was called from Content Delivery.
- [CG-6361](https://world.optimizely.com/support/Bug-list/bug/CG-6361) – Fixed an issue where the Delta indexing job ran successfully after reindexing the site but an error message displayed in the console.

```javascript
  [20:31:15 ERR] Deleting failed for content by path:
  System.ArgumentNullException: operations cannot be null, empty, or contain any
  null or empty items. (Parameter 'operations')

    at Optimizely.ContentGraph.Core.Internal.Helpers.ObjectExtensions.ValidateNotNullOrEmptyArguments[T](IEnumerable`1
  argument, String paramName)

    at Optimizely.ContentGraph.Core.Client.StreamAsync(IEnumerable`1 operations,
  CancellationToken cancellationToken)

    at Optimizely.ContentGraph.Cms.Core.Internal.ContentIndexer.DeleteAsync(IEnumerable`1
  deleteItems)  
```

- [CG-6475](https://world.optimizely.com/support/Bug-list/bug/CG-6475) – Fixed an issue where `IList` property caused an error when you synchronized `contenttype`.
- [CG-6573](https://world.optimizely.com/support/Bug-list/bug/CG-6573) – Fixed an issue where the sync job failed and an error log displayed when a block list property was created from Content Types UI instead of with code.
