Optimizely - update 474
Release summary
New features for Optimizely Graph (formerly Optimizely Content Graph). Bug fixes for Optimizely Content Management System (CMS), Optimizely Graph and Optimizely Content Delivery API (headless). Security enhancement for Optimizely Google Analytics.
Released items September 22, 2023
Area | ID | Type | Description | Released |
---|---|---|---|---|
|
HAPI-2681 |
Inconsistent behavior when you get expired content by Id and contentUrl
Fixed an issue that caused inconsistent behavior when you called CD to get expired content by Id and contentUrl. The Id returned 404 not found and contentUrl returned the expired page.
EPiServer.ContentDeliveryApi 3.9.0; (Or a related package);
| Sep 22, 2023 | |
|
HAPI-2682 |
Url is not correct when the master language content and locale of machine is different from the master language
Fixed an issue that provided the incorrect URL when the local machine had a culture of en (for example), and you created content in master language (sv) and non-master language (en). When you called CD to get above content without setting accept-language, the content.url was linked to the en page.
EPiServer.ContentDeliveryApi 3.9.0; (Or a related package);
| Sep 22, 2023 | |
|
HAPI-2703 |
Add stop gap solution for non HTML output
You can get rich text stored in XhtmlString in a different structured delivery format than just an HTML string.
EPiServer.ContentDeliveryApi 3.9.0; (Or a related package);
| Sep 22, 2023 | |
|
CMS-30050 |
Editing block with JsonIgnore attribute shows infinite loader
Fixed an issue where the blocks that used the JsonIgnore attribute caused the UI to display an infinite loader due to an error on handling the ignored property while editing the block.
EPiServer.CMS.UI 12.22.7; (Or a related package);
| Sep 22, 2023 | |
|
GA-475 |
Security Improvement
Improved security to mitigate a high-severity security vulnerability that might give an attacker access to sensitive data in the application. Read more at: https://world.optimizely.com/blogs/bien-nguyen/dates/2023/9/vulnerability-in-episerver-googleanalytics--v3-and-v4/
EPiServer.GoogleAnalytics 3.0.2; (Or a related package);
| Sep 22, 2023 | |
|
HAPI-2717 |
Application synchronization may throw ConcurrencyException
Fixed an issue that caused a ConcurrencyException when the synchronization of application was configured from code and the web app was started with multiple instances simultaneous. The process was terminated due to an unhandled exception.
EPiServer.ContentDeliveryApi 3.9.0; (Or a related package);
| Sep 22, 2023 | |
|
HAPI-2697 |
Could not get content by friendly URL if you set custom BaseRoute
Fixed an issue that returned login page content (instead of the 200 with detail content), when you set a custom {{BaseRoute}} and called to get the content by friendly URL.
EPiServer.ContentDeliveryApi 3.9.0; (Or a related package);
| Sep 22, 2023 | |
|
HAPI-2513 |
Call CMA to create content return error 500 if item of ContentArea contains null item
Fixed an issue that returned 500 with error Object reference not set to an instance of an object when you called CMA to create content if item of ContentArea was null.
EPiServer.ContentDeliveryApi 3.9.0; (Or a related package);
| Sep 22, 2023 | |
|
HAPI-2693 |
CD.Form hosted page does not resolve correctly
Fixed an issue that caused the {{IPageRouteHelper.ContentLink}} to return the Start page when you requested a CD endpoint and the host was language-mapped.
EPiServer.ContentDeliveryApi 3.9.0; (Or a related package);
| Sep 22, 2023 |
Optimizely Graph
New features for Optimizely Graph
- CG-4187– New Feature – Return friendly URL for PropertyImageUrl and PropertyDocumentUrl
Previously, Optimizely Graph returned permanent links but now also returns friendly URLs for PropertyImageUrl and PropertyDocumentUrl.
- CG-2997– New Feature – Scheduled job shows "successful" even if issues occurred.
The scheduled job was updated to meet the following criteria:
- The scheduled job completes only after Optimizely Graph has finished ingesting the content.
- The schedule may fail if Optimizely Graph does not respond with an appropriate message.
- If the scheduled job completes with errors, errors/affected journal Ids are listed in the scheduled job's log.
- As soon as a journal failed to handle, the job is stopped immediately.
- Get the job status every 60 seconds.
- CG-4559 – New Feature – You can get notifications for content with specific status only
Added a feature to let you specify one or more Statuses, such as Published and/or Draft, that triggers a notification.
- CG-5094– New feature – Support Basic authentication with HMAC credentials
To simplify HMAC authentication, Optimizely supports Basic authentication as an alternative, which takes appKey as username and secret as password.
Usage: concat appKey and secret with column [:] character then encode value as base64.
The gateway implementation stores the auth object as HMAC auth on the tenant object. For example:
https://www.debugbear.com/basic-auth-header-generator Authentication: `Basic base64($appKey:$secret)`
- CG-2876 – New Feature – Extend _fulltext field with Number, Date and Boolean types
You can now extend the fulltext search to all types, such as set dates, integers and other types. This feature includes the following criteria:
- Change the mapping to support Number, Date, and Boolean types
- Update mapResponse in Gateway to collect Number, Date, and Boolean searchable type into _fulltext field (now only string)
- CG-3895 – New feature – Create OpenAPI endpoint for content types
You can send content types for your source to Optimizely Graph using an OpenAPI client, so you can use existing OpenAPI tools for synchronizing content types for your source; from your application. You can use any OpenAPI client of customers choose to synchronize content types to Optimizely Graph. The OpenAPI client must get the "contract" of JSON-body for sending content types. As default value for the id parameter, system omits the source_routing parameter on the cluster request.
- CG-3896 – New feature – Create OpenAPI endpoint for content (data)
You can send content types for your source to Optimizely Graph using an OpenAPI client, so you can use existing OpenAPI tools for synchronizing content types for your source; from your application. You can use any OpenAPI client of customers choose to synchronize content types to Optimizely Graph. The OpenAPI client must get the "contract" of JSON-body for sending content types. As default value for the id parameter, system omits the source_routing parameter on the cluster request.
- CG-4537 – New feature – Implement semantic search for English content (iteration 1), part 1 Cluster
Added semantic search, which uses artificial intelligence (AI) to interpret the intention of a user query and the contextual meaning of terms as their occur to return more relevant results. Semantic search solves the “vocabulary mismatch” problem. The technology to implement this supports automating synonyms, clustering documents, detecting meaning and intent in queries, question answering, chatbots, and ranking search results.
- CG-4639 – New feature – Implement semantic search for English content (iteration 1), part 2 Gateway
Added semantic search, which uses artificial intelligence (AI) to interpret the intention of a user query and the contextual meaning of terms as their occur to return more relevant results. Semantic search solves the “vocabulary mismatch” problem. The technology to implement this supports automating synonyms, clustering documents, detecting meaning and intent in queries, question answering, chatbots, and ranking search results.
- Implemented “neural search” query in Optimizely Graph query language when _fulltext is used with matching.
- Added new ranking enum in Optimizely Graph query language, for example, SEMANTIC and use this to activate neural search queries.
- Semantic search is ignored for indexes without model, so reverts to standard ranking.
- CG-5135 – New feature – Add source routing to Journal endpoints
As a Optimizely Graph user that has multiple content sources to synchronize to Optimizely Graph, you can record synchronization status in Journal service for each of my content source.
The Journal service has the following endpoints:
- GET "/journal/stream/:journalId": get the indexing status of a QueueResult record
- POST "/journal/indexing": create/update an indexing job record
- POST "/journal/stream": creates a new QueueResult record
- GET "/journal/indexing/:indexingJobId": retrieves an indexing job by ID
- GET "/journal/indexing/:indexingJobId/status" : get the status of an indexing Job
For each of the endpoint, you can pass the content source ID and retrieve/update the record for that content source only. If content source parameter is not provided, the Journal service returns data for the default source (CMS). Indexing contents for another source with /content/v2 endpoint should writes journal records with that source.
For each endpoint, you can add a new optional parameter named sourceId as a querystring parameter. When creating new records, if the sourceId parameter is provided, it is added to the Journal record and the IndexingJob record. If sourceId is null/empty, it is not added to the record (for CMS - default source).
When retrieving Journal or IndexingJob records, if the sourceId parameter is provided, query and filter the records by the sourceId parameter. If the sourceId is null/empty, only records without or with sourceId = null are returned (for CMS source).
Bug fixes for Optimizely Graph
- CG-2629 – [Postman] [status !=published] Name of Image File is not updated
Fixed an issue where the result of a query did not return and updated name.
- CG-5311 – GraphiQL is not loaded on Chrome and Firefox.
Fixed an issue that prevented GraphiQL from loading in Chrome or Firefox.
- CG-5130 – Optimizely Graph returns images that were deleted by the API in the CMS
Fixed an issue where Optimizely Graph returned images that were deleted by the API in the CMS.
- CG-5040 – "Root" and "Recycle Bin" are returned on Content Graph when the site is deployed to DXP.
Fixed an issue that incorrectly returned the root and Recycle bin when you ran the following query.
query MyQuery {
Content(locale: ALL, orderBy: { Created: ASC }) {
total
items {
Name
Url
ContentType
}
}
} - CG-4634 – [Search Provider] returns Expired content
Fixed an issue that returned expired content when you searched for property of
Datetime
,DateList
,Double
,IntegerList
/Enumerable of Int
,Int
, orBoolean
. - CG-4561 – Indexing job fails when ContentAreaItem property refers to a Nested InlineBlock.
Fixed an issue that cause the indexing job to fail after creating a StandardPage that has ContentAreaItem property referring to an Inline Block.
- CG-2625 – Optimizely Graph indexing job fails when changing status of a block including another block under For This Page.
Fixed an issue where the Optimizely Graph indexing job failed if you changed the status of a block that included another block under For This Page.
- CG-5103 – Delta Indexing not working when reindexing a deleted item
Fixed an issue that did not index a content item that was previously set to deleted.
- CG-4413 – Exception 'InternalServerError' when running autocomplete tests
Fixed an issue that caused exceptions (The HTTP request failed with status code InternalServerError) when a number of tests were run at the same time; approximately 50% failed, but when each test was run individually, it passed.
- CG-5042 – [Fuzzy Search] Issue with "contains" operator
Fixed an issue with the contains operator that did not return data.
- CG-4307 – The 'like' operator works incorrectly when using both a leading and trailing '%' character
Fixed an issue where no item was returned for the like operator when you used both a leading and trailing % character.
- CG-4433 – [Music Festival] Search param still returns undefined when searching with empty string
Fixed an issue that displayed the search parameter as undefined when you searched the Music Festival demonstration site with an empty string.
- CG-4434 – [Music Festival] Wrong search value when user click on the number of an item in facets
Fixed an issue that returned an incorrect result when you used the search facets in Music Festival demonstration site. If you clicked the number on the right of a specific item, it got that number as a search value, which returned an incorrect search result.
- CG-4868 – Should not return blank values for searchable properties in _fulltext search in Postman
Fixed an issue where some blank values for the searchable properties that had no values filled were returned in _fulltext result with type of "".
- CG-4872 – _fulltext search not returning value for Boolean searchable field if value = false
Fixed an issue where the default value (false) for the _fulltext Boolean field did not display in the search results.
- CG-5154 – When you get an error build schema, 400 should return instead of 500
Fixed an issue that returned a 500 status instead of the correct 400 status when you synchronized content types with issues that caused GraphQL schema build errors with invalid ContentTypes.
- CG-5272 – Content type changes not synchronized until running the full indexing job
Fixed an issue by adding documentation about how to configure synchronization of content type when the site starts.
- CG-5303 – Content Graph content synchronization job is failed.
Fixed an issue where the indexing job failed.
- CG-3035 – Cursor : Should not show error 500 if user assign an incorrect value to cursor
Fixed an issue that returned error 500 with the message: Oops, something went wrong. Please report us with request id. (It should have returned 0 items.)
Other product release notes
- Optimizely Content Marketing Platform (CMP)
- Optimizely Configured Commerce
- Optimizely Data Platform (ODP)
- Optimizely Experimentation
- Optimizely Product Information Management (PIM)
Related topics
- Install Optimizely updates for CMS 11 and Commerce 13
- Upgrade to CMS 12
- Optimizely services and product lifecycles
- Optimizely continuous release process
- Configure session durations
Last updated: Sep 22, 2023