Known issues in Content Manager

The following list describes issues known to exist in Content Manager.

When you publish a Structure Group, Components in Regions are not published
When you are publishing a Page directly that contains Regions with Components in them, those Components will be published. However, if you publish a Structure Group that contains such a Page, Components in its Regions will not be published. To work around this issue, you can separately publish the Page or the Components on the Page.
When using Azure Active Directory for Single Sign-On, a User can have at most 150 groups assigned to them
The following Microsoft Azure documentation topic describes a limitation in Azure Active Directory: https://docs.microsoft.com/en-us/azure/active-directory/hybrid/how-to-connect-fed-group-claims#options-for-applications-to-consume-group-information. As the topic states, "Azure Active Directory limits the number of groups it will emit in a token to 150 for SAML assertions, and 200 for JWT to prevent tokens getting too large. If a user is a member of a larger number of groups than the limit, the groups are emitted and a link to the Graph endpoint to obtain group information."
You cannot use a host header for HTTP communication with Toplogy Manager if your operating system is Windows Server 2019
Host headers for Topology Manager only work if you use Windows Server 2016.
Publishing is 20% slower using Microsoft Windows Server 2019 compared to Microsoft Windows Server 2016 if you use AWS
Publish performance testing on both Windows 2019 and Windows 2016 reveals a 20% decrease in performance in Windows 2019 compared to Windows 2016 if you use AWS.
ISearchIndexingHandler is not backward compatible
The Core Service may raise an error like the following one:
Unable to load 'Search Index Handler' for assembly 
'SearchIndexerUnifiedExtension.dll' and type 'SearchIndexerUnifiedExtension.SearchIndexerUnifiedExtension'
Method 'ExtractIndexFields' in type 'SearchIndexerUnifiedExtension.SearchIndexerUnifiedExtension' from assembly 
'SearchIndexerUnifiedExtension, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' does not have an implementation.

Component: Tridion.AddonService.SDK
Errorcode: 865
User: USER

StackTrace Information Details:
   at System.Reflection.RuntimeAssembly.GetType(RuntimeAssembly assembly, String name, Boolean throwOnError, Boolean ignoreCase, ObjectHandleOnStack type)
   at System.Reflection.RuntimeAssembly.GetType(String name, Boolean throwOnError, Boolean ignoreCase)
   at System.Reflection.Assembly.GetType(String name, Boolean throwOnError)
   at Tridion.ContentManager.Search.Indexing.SearchIndexingEngine.GetSearchIndexingHandlersFromConfiguration()
   at Tridion.ContentManager.Search.Indexing.SearchIndexingEngine.GetSearchIndexingHandlersFromConfiguration()
If you see this error, your code is using ISearchIndexingHandler, which is not backward compatible, because it uses CoreserviceClient.
To fix this problem, after your upgrade, rebuild your custom search indexer against the matching version of Tridion.ContentManager.CoreService.Client.dll.
CMSession.CoreServiceClient requires a rebuild of your GUI extensions
To get the Core Service client instance, your GUI extension can use the public helper property CMSession.CoreServiceClient. Content Manager Explorer, for example, exposes the latest Core Service client endpoint through this property. After an upgrade, this property returns a different version of the CoreService client than before the upgrade.
If your GUI extension uses the CMSession.CoreServiceClient property to get an instance of the Core Service client, you must rebuild the extension after your upgrade to target the latest CoreService endpoint. Otherwise, the extension will fail after the upgrade.
.NET method Uri.EscapeDataString(urlString) has changed behavior
Version 4.0 or older of the Microsoft .NET Framework is not supported. This may have an effect on how your URLs are parsed if they contain brackets:
  • In .NET 4.0 and older, characters that are reserved in RFC 2396 are escaped. RFC 2396 allows brackets.
  • In .NET 4.5 and newer, characters that are restricted in RFC 3986 are escaped. RFC 3986 restricts brackets.
This change is related to the enabling of IRIs (Internationalized Resource Identifiers). For more information, refer to this page on the MSDN Web site: https://msdn.microsoft.com/en-us/library/system.uri%28v=vs.110%29.aspx
To quickly see the difference in behavior, run the following code, targeting first .NET 4.0 and then .NET 4.6.2:
string url= @"http://some.url/page (bracketed).html";
Console.WriteLine(url);
Console.WriteLine(Uri.EscapeDataString(url));
The complete list of characters that are restricted (that is, that will be encoded) as per RFC 3986 are:
: / ? # [ ] @ ! $ & ' ( ) * + , ; =
Use of Recursive in OrganizationalItemItemsFilter causes other filter parameters to be ignored
An OrganizationalItemItemsFilter lets you combine multiple filter parameters. One filter parameter is Recursive, which causes the filter to recurse into child organizational items. However, setting Recursive to true has the unintended side effect of rendering almost all other filter parameters ineffective, as if they were not set. Specifically, if Recursive is set to true, ItemTypes is the only other filter parameter that gets processed; the filter ignores BasedOnSchemas, SchemaPurposes, ComponentTypes, TemplateTypeIds, LockFilter and NotBasedOnSchema.
For example, consider the following code sample:
OrganizationalItemItemsFilter filter = new OrganizationalItemItemsFilter(Session)
  {
    SchemaPurposes = new[] { SchemaPurpose.Component },
    ItemTypes = new[] { ItemType.Schema },
    Recursive = true
  };
var componentSchemas = Publication.RootFolder.GetListItems(filter);
The call to GetListItems should apply all parameters and return only Schemas with a Component Purpose in the given Publication's root folder and subfolders. However, because of this issue, GetListItems instead only applies the Recursive and ItemTypes parameters, not the SchemaPurposes parameter, and returns all Schemas, regardless of Purpose, in the Publication's folder tree.
This issue affects TOM.NET and the Core Service alike.