Follow this article to receive email notifications when new packages are available for Optimizely Graph. Product packages are found on the Optimizely NuGet server and and include updates to the following components:
Are you looking for release notes before January 2024? See the Optimizely Release Notes on the Optimizely World site.
Are you looking for Graph Documentation? See the Optimizely Graph Documentation.
You can find prior versions of user guides and when functionality was released or deprecated at the following locations:
CMS to Graph Integration
November 21
Optimizely.ContentGraph.Cms 4.2.0
Enhancement
- Improved content language branch creation. This enhancement sends only enabled language information to Optimizely Graph, reducing the overhead of content type synchronization and improving performance. Optimizely Graph now creates a language index when a language is enabled in CMS settings.
Bug fixes
- CMS-46587 – Fixed the issue where the Delta Indexing job finished with the message "nothing to synchronize" when it should have synchronized new pages after disabling event indexing, creating and publishing a page, and then starting and canceling a Full indexing job.
November 4
Optimizely.ContentGraph.Cms 4.1.1
Bug fixes
- CMS-46036 – Fixed an issue where creating multiple content types with the same name in different namespaces could lead to content type synchronization failures during full graph indexing. This fix ensures that the graph indexing job correctly identifies and omits duplicated content types and their associated property blocks, allowing content type synchronization to complete successfully.
-
CMS-46185 – Fixed circular reference detection in
ContentApiModelTransformerto prevent infinite recursion and memory issues. -
CMS-46308 – Fixed an issue where content types containing
IList<T>properties or indexers causedPropertySettingFailureExceptionmessages to appear in logs during full synchronization. -
CMS-46384 – Fixed a potential issue where Optimizely Graph delta synchronization job could fail with a
System.InvalidOperationExceptionstating that a command could not be created without an existing connection. - CMS-46561 – Fixed an issue where the delta synchronization process in CMS 12 repeatedly loaded referenced content within different batches, causing redundant re-indexing and reduced performance. Each referenced item is now indexed only during each synchronization cycle.
October 27
Optimizely.ContentGraph.Cms 4.1.0
Enhancements
- Improved the CMS 12 indexing job output for administrators to get clearer visibility into indexing progress, errors, and job summaries for both full and delta syncs.
- Enhanced the Optimizely Graph Search functionality by resolving shared internal identifiers and ensuring that the CMS search provider acts as a fallback, which allows content that was excluded from Graph synchronization to remain discoverable within the CMS UI. See How to add search providers in Optimizely CMS 12.
Bug fix
-
CMS-45494 – Fixed an issue where blocks created directly from a
ContentAreawere being synced through_streaminstead of_doc. Previously, whenUIOptions.InlineBlocksInContentAreaEnabledwas set to false, creating and publishing a new block from theContentAreadropdown resulted in the block syncing incorrectly. This fix ensures that newly created blocks are now properly synced through_doc, aligning with expected behavior.
September 18
Optimizely.ContentGraph.Cms 4.0.1
Bug fix
- CMS-45133 – Fixed an issue where the Graph indexing job unexpectedly stopped and incorrectly reported “Stop of job was called” when the job had not been stopped.
August 25
Optimizely.ContentGraph.Cms 4.0.0
Enhancements
- Updated Synchronize with Optimizely Graph to sync directly, bypassing the queue and skipping hash validation, allowing immediate content updates. Previously, it used the
_streamendpoint, causing delays if the queue was long. - Added the GraphQL Boolean type in Optimizely Graph indexing to ensure correct type mapping and improve interoperability. Previously, bool properties in C# were converted to the custom Bool type, which limited compatibility with the default GraphQL Boolean type. You can now query bool properties using the standard Boolean type without extra configuration.
- Added the ability to enable hash calculation and validation before sending documents to the Optimizely Graph synchronization, which prevents redundant updates and improves data consistency. Use
SendDocAsyncoverload withSendDocOptionsto include a hash, and by callingGetHashByDocumentIdAsyncto retrieve stored hashes.
Bug fixes
-
CMS-44070 – Fixed the error that occurred during content synchronization when a block property was defined in a top-level abstract base class and was inherited by a concrete
PageDatatype. -
CMS-43039 – Fixed the Graph integration issue where the
SimpleAddressproperty is not synchronized with the graph on publish. -
CMS-40715 – Fixed the error that occurred during content synchronization when a block property was defined in a top-level abstract base class and was inherited by a concrete
PageDatatype.
Breaking changes in the C# API
Improved the API design by refining the required constructor parameters, resulting in a cleaner and more efficient setup. See Breaking changes below:
Optimizely.ContentGraph.Core.Connection
CustomDelegatingHandler– Removed the constructor that accepted anHttpMessageHandlerparameter.EPiServer.DependencyInjection.ServiceCollectionExtensions
Removed obsolete overloads of theAddContentGraphmethod.
Removed obsolete methodUseUnsupportedTypes.Optimizely.ContentGraph.Core.Configuration.QueryOptions
Removed obsolete memberEnablePreviewTokens; useEPiServer.Web.UIOptions.UsePreviewTokensinstead.
Removed obsolete memberIncludeLanguagesWithNoContent.Optimizely.ContentGraph.Core.Client
Obsolete class removed.Optimizely.ContentGraph.Core.IGraphQLClientFactory
Interface removed; useIClientinstead.Optimizely.ContentGraph.Core.GraphQLClientFactory
Class removed; useIClientinstead.Optimizely.ContentGraph.Core.IGraphQLClient
Interface removed; useIClientinstead.Optimizely.ContentGraph.Core.GraphQLClient
Class removed; useIClientinstead.Optimizely.ContentGraph.Core.IClient
SendDocAsyncmethod removed in favor of a new overload.QueryandQueryAsyncincludes an optional parameterDictionary<string, string>? queryStringParams.
Added new methodSendJournalStreamAsync.Optimizely.ContentGraph.Core.Serializer.ISerializer
RemovedTask<string> SerializeAsync<T>(T data, CancellationToken cancellationToken).
Added synchronous overloads forSerializeandDeserialize.Optimizely.ContentGraph.Core.Serializer.CustomSerializer
Class is now internal.Optimizely.ContentGraph.Cms.NetCore.Controllers
ContentIndexingStore– Class is now internal.GraphQLAdminController– Class is now internal.JournalController– Class is now internal.Optimizely.ContentGraph.Cms.NetCore.Models.ContentTypeDeserializerResult
Class was removed.
July 20
Optimizely.ContentGraph.Cms 3.19.2
Bug fixes
- CMS-43570 – Fixed an issue where Content type indexing sometimes returned incorrect property types.
-
CMS-43405 – Fixed an issue where the
contentRepository.Movemethod threw an exception when moving content multiple times. -
CMS-43579 – Fixed an issue where, when graph integration is installed,
IContentRepository.Moveinitializes a newHttpContextif it is null.
July 8
Optimizely.ContentGraph.Cms 3.19.1
Bug fixes
-
CMS-43039 – Fixed the Graph integration issue where the
SimpleAddressproperty is not synchronized with the graph on publish. -
CMS-41855 – Fixed an issue where expiring content 'now' with the
ContentVersionSynchronizationModeset toContentVersionSyncMode.PublishedOnlydoesn't work in Graph. -
CMS-42373 – Fixed the issue where language-specific links weren't being generated in a multilingual CMS setup for
LinkItemset to "Automatic" in the property block. -
CMS-42421 – Fixed the issue where
LinkItemexpansion in Optimizely Graph returns the parent block's language version, not the referenced content's selected language
June 9
Optimizely.ContentGraph.Cms 3.19.0
Enhancements
- Enhancements were made to extract media content (searchable text) during file upload rather than during indexing.
Bug fixes
- CMS-42243 – Fixed the issue where the RESET for the Graph, which exists in CMS UI, should only be accessible to users who is administrators.
-
CMS-42535 – Fixed an issue where the link in
XhtmlStringdid not reflect the current language.
May 20
Optimizely.ContentGraph.Cms 3.18.0
Enhancements
- Enhancements were made to disable the expansion of page content areas within other content areas. This is controlled with the option
QueryOptions.ExpandLevel.ExpandPageContentAreasInContentAreas.
Bug fixes
- CMS-41690 – Fixed the custom properties issue, which is exposed through the Conventions API that loads in the master language within the content area.
-
CMS-41330 – Fixed the issue where the
PublicUrlResolverresolves the incorrect URL when a content reference points to a CMP DAM asset.
April 4
Optimizely.ContentGraph.Cms 3.16.6
Bug fixes
- CG-12230 – Fixed the issue that if content is updated multiple times, it should only be indexed once.
March 26
Optimizely.ContentGraph.Cms 3.16.5
Bug fixes
-
CG-10894 – Fixed an issue where executing a query on the GraphiQL portal caused issues after using the PUT
/api/content/v3/typesendpoint. -
CG-11122 – Fixed a bug where an error occurred when processing sequential documents with no searchable fields, resulting in a
map type field [_fulltext_source]having an empty string value.
February 27
Optimizely.ContentGraph.Cms 3.16.0
Enhancements
- Improvements were made to Optimizely Graph management by introducing a new smooth rebuild cleanup job that allows for zero-downtime upgrades. This enhancement improves control, performance, stability, and throughput during content ingestion, making the process three times faster.
Bug fixes
- CG-7448 – Fixed an issue to ensure that empty languages are not included in the language field.
-
CG-9602
– Fixed an issue with custom implementations of
IContentTypeSerializerfollowing the upgrade to version 3.13. -
CG-9661
– Fixed an issue where the value of
_p_EditorialBlock.MainBody_was null when thePropertyIndexingModeattribute was set to 'Default'. -
CG-10009
– Fixed an issue related to the inability to expand on the
IList<LinkItem>property type. - CG-10011 – Fixed an issue that allowed users to add values that were out of range.
-
CG-10045
– Fixed an issue where content type synchronization failed with an
INVALID_CONTENT_TYPE_ERRORwhen indexing block properties declared in an abstract class. - CG-10086 – Fixed an issue where extension methods were not available for abstract types.
- CG-10100 – Fixed an issue where values were null under the Expanded section of the ContentArea within the block properties.
- CG-10410 – Fixed an issue where searchable fields in block properties with OutputOnly indexing mode returned null values.
- CG-10471 – Fixed an issue that caused the system to throw an exception error when PropertySettingFailureException is triggered in DummyContentBuilder.
-
CG-10566
– Fixed an issue that caused a NullReferenceException when invoking
the
OnConventionsChangeevent handler if conventions were configured in the initialization module. -
CG-10667
– Fixed an issue where the
RequestVerificationTokenheader was missing in Notification API calls when using GraphiQL. - CG-10749 – Enhanced the performance of content translation.
Gateway
December 9
Optimizely Graph provides an optional early access channel for customers who want to test upcoming Gateway features before the general (service deployment) release. Learn more about Optimizely Graph releases and channels.
Gateway 3.23.0
Enhancements
Added new click-through tracking endpoint for search, including Datadog integration and tenant-level metrics.
Added a
GETendpoint to retrieve all synonyms for a slot, now included in Swagger. Learn more about SynonymsAdded support for returning full content items and
ContentAreavalues as a single_jsonpayload in GraphQL queries. This eliminates the need to create large fragment-heavy queries for complex content models and improves performance by reducing query size and server load. Learn more about _json field
Bug fixes
-
CG-8230 – Fixed incorrect secondary sorting when
IntegerListvalues matched;VersionStatusis now used before Name. -
CG-13216 – Removed blank and whitespace-only values from
_fulltextto improve search result quality. - CG-13399 – Fixed fuzzy full-text query expansion errors that caused 500 responses when terms exceeded the 128-term limit.
- CG-14165 – Fixed incorrect sorting of pinned items; results are now ordered by defined priority values.
- CG-14704 – Fixed cursor expiration issue where cursor lifetime dropped to 1–2 minutes instead of the expected duration.
-
CG-15045 – Fixed a bug where child items in Optimizely Graph returned stale
PublishDatewhen queried via a parent item. No resolution or recovery steps are required.
Service Deployment
May 8
Service deployment 3.18.0
Enhancements
- Improvements were made so that the cache TTL considers
StopPublishvalues when setting the TTL for cache responses to ensure that the cached result is purged when a content item has its stop publish date and time.
Bug fixes
- CG-12308 – Fixed the issue where the reference type does not work in Visual Builder.
-
CG-12717 – Fixed the issue where the "preview mode" in CMS sometimes does not get the updated values from Graph after a content item was updated using the
_docendpoint.
April 4
Service deployment 3.17.0
Enhancements
- Improvements were made to let you hover over a reference field to get information on the GraphiQL page.
- Improvements were made to let you define a reference property type that fetches referenced content based on certain instructions.
Bug fixes
-
CG-9673 – Fixed sorting between properties and either
booleanorBooleanList. -
CG-9674 – Fixed the issue where the
_linkfunction returned identical values for different link types in a query - CG-11045 – Fixed the issue where the query for HTML tags is not working correctly with the match operator.
- CG-11074 – Fixed the issue where Highlight is not working correctly with the contains operator.
- CG-11115 – Fixed contract issues for SaaS CMS.
February 27
Service deployment 3.16.0
Enhancements
- Introduced Cached Templates, which can be used to speed up Optimizely Graph queries by reusing stored query structures through the
stored=truequery string andcg-stored-query: templateheader. See Cached Templates. - Added the ability to enhance cache hit ratios by using
itemqueries instead ofitemsin GraphQL for single entities, permitting precise caching and faster response times using unique identifiers like IDs or URLs. See item queries.
Bug fixes
- CG-7042 – Fixed an issue where certain HTML tags could not be removed using the match operator.
- CG-8874 – Fixed an issue where no value was provided for the terms query.
- CG-9559 – Fixed the issue where media files, other than images, were not being extracted.
- CG-10040 – Updated the match operator to be case-insensitive.
- CG-10486 – Added support for decimal seconds in the Date type for GraphQL.
- CG-10495 – Fixed an issue where an exception occurred when retrying failed requests.
- CG-10520 – Fixed an issue where the highlight feature was not functioning correctly with list objects.
January 7
Service deployment 3.15.0
- Added support for geographical queries with Geopoint types in the GraphQL API. See Geo search.
- Improved query performance by creating a faster "warm-up" process by enabling a single query execution to efficiently warm up pages associated with that query, even with different variables. See Optimizely Graph schema.
Bug fixes
- CG-5968 – Fixed a bug where you could not filter by a null or blank value.
-
CG-8857 – Fixed a bug where the highest-ranked item when using the
_fulltextfield and thecontainsoperator was miscalculated. -
CG-9274 – Fixed a bug where autocomplete with
p_EditorialBlockandp_EditBlockListwas not returning normally. -
CG-9362 – Fixed a bug where an error would occur when the
_semanticWeightwas set to null. -
CG-9592 – Fixed a bug where you could not add a
_rankingoption to query variables using theorderByparameter. - CG-9599 – Fixed a bug where a "Too many aliases in the query" error would occur.
Please sign in to leave a comment.