A critical vulnerability was discovered in React Server Components (Next.js). Our systems remain protected but we advise to update packages to newest version. Learn More

Optimizely - update 403

Release summary

New features for Optimizely Content Cloud, Optimizely Commerce Cloud and Optimizely Languages. Bug fixes for Optimizely Content Cloud, Optimizely Commerce Cloud,  Optimizely Commerce PIM, Optimizely Profile Store.

Released items May 24, 2022

Area ID Type Description Released
CMS-22374
  Scheduled job stuck in running state after application crash

Fixed an issue where a job was stuck in a running state after an application crash by adding a Stop button that terminates the job.

EPiServer.CMS.Core 12.6.0; (Or a related package);
May 25, 2022
CMS-21775
  Use simple address as outgoing URL when available

You can use simple addresses as outgoing URLs (when simple URLs are available).  The following example shows how to set PreferredUrlFormat to Simple or Hierarchical (default) in startup.cs (or in appsettings.json).

public void ConfigureServices(IServiceCollection services)
{
    // omitted for brevity

    services.Configure<RoutingOptions>(o => o.PreferredUrlFormat = PreferredUrlFormat.Simple);
}

 

EPiServer.CMS.Core 12.6.0; (Or a related package);
May 25, 2022
CMS-22278
  [CMS 12] Improve exception message for faulty module zip files

Improved the error message for the ZipArchiveVirtualPathProvider.FileDataLoader method to include diagnostic details.

EPiServer.CMS.Core 12.6.0; (Or a related package);
May 25, 2022
CMS-21774
  URLs based on the owning content for files in contentassets folder

You can have friendly media URLs (like https://www.something.se/en/research/research-support/contentassets/some-document.pdf) that are based on the content owner by entering the following configuration code:

public void ConfigureServices(IServiceCollection services)
{
services.Configure<RoutingOptions>(o =>
{
	o.ContentAssetsBasePath = ContentAssetsBasePath.ContentOwner;
});
}

 

EPiServer.CMS.Core 12.6.0; (Or a related package);
May 25, 2022
CMS-23346
  [Decouple sites] Management site layout is broken when opened subpages

Fixed an issue where the Management site layout broke when subpages were opened.

EPiServer.CMS.UI 12.7.0; (Or a related package);
May 25, 2022
CMS-21563
  Blocks quick edit and image upload get stored in wrong folder

Fixed an issue where a block with an image property was created in Quick edit but was stored in the For this page folder instead of the For this block folder.

EPiServer.CMS.UI 12.7.0; (Or a related package);
May 25, 2022
CMS-22500
  Missing Cache-Control headers in CMS UI and Shell responses

Fixed an issue where the Cache-Control headers in CMS UI and Shell responses were missing endpoints.

EPiServer.CMS.UI 12.7.0; (Or a related package);
May 25, 2022
CMS-21895
  Migrate Identity data with CMS 12

You can now migrate ASPNET Identity data with CMS 12.

EPiServer.CMS.UI 12.7.0; (Or a related package);
May 25, 2022
CMS-22234
  Support editing tiff files

Content Cloud supports the editing of tiff files.

Although the default list may have file extensions that may not work with editing, the ImageEditorOptions.SupportedEditExtensions option is writable,

EPiServer.CMS.UI 12.7.0; (Or a related package);
May 25, 2022
COM-15604
  Find.Commerce is not compatible with Commerce 14.3

In Commerce Cloud 14.3.0, usage of BinartyFormatter was removed, which caused issues with Find.Commerce. Those changes were reverted to bring BinaryFormatter back in 14,3,1,

EPiServer.Commerce 14.3.1; (Or a related package);
May 25, 2022
LM-401
  Support .Net6

Language Manager is now supported in .NET 6.

EPiServer.Labs.LanguageManager 5.1.0; (Or a related package);
May 25, 2022
COM-15249
  [PIM] Error happens when in PIM, change Categories of a published product then run Job 'PIM: Publish approved products'

Fixed an issue where the publish job fails with an access denied error message after changing parent category for a product in PIM.

EPiServer.Commerce.PIM 1.0.1; (Or a related package);
May 25, 2022
COM-15564
  Align decimal datatype minimum and maximum value for model's property

Fixed an issue where no properties were auto-mapped in PIM when syncing models containing at least one decimal-backed property (float/decimal/etc.).

EPiServer.Commerce.PIM 1.0.1; (Or a related package);
May 25, 2022
COM-15573
  PIM integration sync does not include property validation settings

Fixed an issue where content type properties decorated with any validation attribute (StringLength/RegularExpression/Range) occasionally caused an error when publishing from PIM; these attributes are now ignored if the property is synced to PIM.

EPiServer.Commerce.PIM 1.0.1; (Or a related package);
May 25, 2022
COM-15587
  [PIM] Shouldn't sync property of Dictionary dataType in Commerce to PIM with controlType is TextField

Fixed an issue where properties of type EnumMultiValue or DictionaryMultiValue are synced to PIM with wrong ControlType descriptors: TextField, DropDown, MultiSelect, RadioButton; these should only be MultiSelect.

EPiServer.Commerce.PIM 1.0.1; (Or a related package);
May 25, 2022
PROF-7781
  Out of the box filter definitions for Commerce

A default set of filter definitions are now included out of the box in Visitor Intelligence. Marketers can create segments based on Commerce events and profiles without asking developers to create their own filter definitions.

EPiServer.Profiles.Client 1.24.0; (Or a related package);
May 25, 2022
PROF-6820
  [FilterDefinition] Can create a new profile filter definition with invalid property in Query

Create a new profile filter definition with an invalid property (which does not belong to the profile) in Query like this one:

POST: /api/v2.0/FilterDefinitions
{
    "Name": "Testing_VisitorGroup_input_value",
    "Description": "VisitorGroup with inputValue",
    "Query": "Testing eq {{value}}",
    "Parameters": {
        "value": "string"
    },
    "Category": "Profiles",
    "Type": "Profiles"
}

Expected result:

Returns 400 Bad Request with message Invalid filter definition.

Actual result:

Returns 201 Created and create new filter definition successfully.

The same thing happens if you create an event filter definition with an invalid property which does not belong to the track event.

EPiServer.Profiles.Client 1.24.0; (Or a related package);
May 25, 2022
PROF-7988
  Hide shared filter definitions that depend on Commerce events in the UI on CMS site

Only shared filter definitions compatible with currently installed products are displayed.

EPiServer.Profiles.Client 1.24.0; (Or a related package);
May 25, 2022
PROF-8001
  Only 10 profiles are listed when using MatchProfileById and MatchProfileByEmail for a segment

Steps to reproduce:

  1. Create a segment that includes more than 10 profiles.
  2. Get all profiles and emails that belong to the segment (they are less than 500 records), do MatchByProfileId or MatchByEmail
POST: segmentURL/segmentId/MatchByProfileId 

Expected result:

All the profiles based on profileIds/Emails should be returned.

Actual result:

Only 10 profiles are returned.

EPiServer.Profiles.Client 1.24.0; (Or a related package);
May 25, 2022
PROF-4579
  Visitor group personalization doesn't work for segments with a query on profile payload

Precondition:

Create profile test@test.com with Payload info like this:

"Payload": {
     "number": 2
}

Steps to reproduce:

  1. Using API, create a segment with ProfileQuery being Payload like this one:
    {
      "Scope": "default",
      "SegmentManager": "admin@example.com",
      "ProfileQuery": "Payload.number eq 2",
      "AvailableForPersonalization": true,
      "Archived": false,
      "FavoredBy": [
        "string"
      ],
      "Name": "Payload",
      "Description": "Payload"
    }
    
  1. Create a Visitor Group for the segment in step 1.
  2. Set personalize content for Visitor Group in step 2.
  3. Log in to the site with profile test@test.com and view the personalize content.

Expected result:

The user can see the personalized content.

Actual result:

The user cannot see the personalized content.

EPiServer.Profiles.Client 1.24.0; (Or a related package);
May 25, 2022
PROF-7847
  Time and count metrics for filter definitions

Marketers can now set the time or/and count metrics when creating a segment based on event filter definitions, and reuse the same filter definition in combination with the time period and the number of event occurrences.

EPiServer.Profiles.Client 1.24.0; (Or a related package);
May 25, 2022
PROF-6804
  [InsightUI][Segment]: Returns wrong profiles with profile filter definition - space in param

Precondition:

There is a profile filter definition which has at least one param in the query, like this one:

        {
            "Id": "fd_PDF_Name_eq",
            "Name": "PDF_Name_eq",
            "Description": "Name equal inputValue",
            "Query": "Name eq {{name}}",
            "Parameters": {
                "name": "string"
            },
            "Category": "Profiles Category",
            "Type": "Profiles"
        }

Steps to reproduce:

  1. Access to Insight > Segment > and click on Create a Segment button.
  2. Choose the filter definition in the precondition and insert the param name like: test 01.
    • Expected result: Returns only the profiles with name test 01.
    • Actual result: Returns many profiles which names do not have test 01.
  3. With the same filter definition, insert param name with value in double quotes like "test 01" - it returns the correct profile.
    If you click Save segment in step 2, this segment will have many profiles without test 01 in the name (exactly the number of profiles that are returned in step 2).
    Note: The same bug occurs if you insert parameter with value: test 00, but not for parameters test 02, test 03, test 04.
EPiServer.Profiles.Client 1.24.0; (Or a related package);
May 25, 2022
PROF-7904
  Display UI warning when the time and occurrence metric may be incompatible with a specific filter definition

An indication/warning is now displayed in the user interface when a metric is not applicable with the selected filter definition.

EPiServer.Profiles.Client 1.24.0; (Or a related package);
May 25, 2022
PROF-7733
  [Segment_v2.0]: Returns 500 when creating a new segment without Query property

Steps to reproduce:

  1. Create a new segment with event/profile filter definition without Query property in Filters:
{
  "Scope""default",
  "SegmentManager""Franklin Cummings",
  "AvailableForPersonalization"false,
  "Archived"false,
  "FavoredBy"null,
  "Name""Testing Segment",
  "Description""Testing Segment",
  "Filters": {
    "Items": [
      {
        "Type""Events",
        "Parameters": {   
          "value""home"
        }
      }
    ]
  }
}

Expected result:

Returns 400 Bad Request with Validation Error.

Actual result:

Returns 500 Internal Server Error.

EPiServer.Profiles.Client 1.24.0; (Or a related package);
May 25, 2022
PROF-7894
  [ProfileAPI]: Inconsistent display the null value

1. Create a new profile:

POST: /api/v1.0/profiles
{
    "Info":
    {
        "ZipCode"null
    }
}

-> It returns 201 Created with body:

{
    "ProfileId""545db9d4-79f8-49cb-ae63-34ab6ca95647",
      .....
    "Info": {
        "ZipCode"null
     }
}

2. Get the newly created profile in step 1:

GET /api/v1.0/profiles/default/545db9d4-79f8-49cb-ae63-34ab6ca95647

-> It returns the profile with info:

 {
     "ProfileId""545db9d4-79f8-49cb-ae63-34ab6ca95647",
     .....
     "Info": {},
 }

Expected result:

The Info property should display consistent information.

EPiServer.Profiles.Client 1.24.0; (Or a related package);
May 25, 2022
PROF-7762
  [Segment_v2.0]: Returns 500 Server Error when input a negative number in param with profile filter definition

Steps to reproduce:

  1. Create a profile filter definition with params being number data types (int, long, double):
{
  "Name": "Int_data2",
  "Description": "Number equal a value",
  "Query": "Payload.number eq {{value}}",
  "Parameters": {
    "value": "int"
  },
  "Category": "Profiles",
  "Type": "Profiles"
}

-> Create successfully

2.  Create a segment with filter definition in step 1 and insert a negative number in param like this:

{
  "Parameters": {
    "value": -2
  }
}

Expected result:

Returns 201 Created.

Actual result:

Returns 500 Internal Server Error.

Note: It does not occur in the event filter definition.

EPiServer.Profiles.Client 1.24.0; (Or a related package);
May 25, 2022
PROF-7689
  Specific error message is not returned when KQL query is invalid

Steps to reproduce:

Execute an invalid query using the event preview endpoint, for example:

Events | summarize count() by Payload

Expected result:

Specific error message with details of what is wrong and ideally suggests how to fix the problem.

Actual result:
Generic error response is displayed, like this:

{"error":{"code":"400","message":"Failed to execute the query.","target":"","details":[]}}
EPiServer.Profiles.Client 1.24.0; (Or a related package);
May 25, 2022

More on releases

Related topics

Last updated: May 25, 2022