Backwards compatibility and API changes in Content Manager introduced in Tridion Sites 10

The Content Manager APIs have changed somewhat in this release, which may affect your customizations.

Support for dates with or without a time zone

Tridion Sites 10 changes to how Content Manager APIs handle dates, particularly for system metadata fields, such as the CreationDate and RevisionDate fields.

Prior to Tridion Sites 10

In previous releases, system metadata fields stored date/time strings with an unspecified time zone.

For example:

2022-04-27T14:10:50

Additionally, date fields in Schema or Component content were stripped of their time zone and milliseconds were disregarded.

From Tridion Sites 10

Now system metadata fields provide date strings in the ISO-8601 UTC format (Coordinated Universal Time).

For example:

2022-04-27T14:10:50.647Z

The "Z" is the zone designator for the zero UTC offset, also known as "Zulu" time. See: ISO 8601 - Wikipedia for more information on this standard.

For backward compatibility, all Content Manager API's (WCF Core Service, Core Service.REST and TOM.NET) now support saving and loading of dates in both the ISO-8601 UTC format or with an unspecified time zone. This API change provides backward compatibility for dates provided by the Content Manager user interfaces regardless of whether or not they have a time zone specified. This means the following:

  • User-entered dates -- Neither the Classic user interface nor Experience Space allows the user to specify a time zone when entering a date, and so the API saves these with an unspecified time zone. The dates will therefore show to all users as entered regardless of the current user's time zone.

  • System dates -- System metadata properties, including CreationDate and RevisionDate, now include the time zone. End users do not see a time zone, but these system dates will be converted into the user's own time zone (as before).

In all cases, Content Manager will retrieve a stored date exactly the way it was stored and will perform no conversion. Content Manager no longer strips off the time zone and no longer disregards the milliseconds. If a date is stored in the ISO/UTC format, it will be retrieved as such, and the same for dates without a time zone.

HTTP-based endpoints for the ECL API

In this release, the ECL (External Content Library) introduces HTTP-based endpoints that are more "firewall friendly ." There are two new endpoints, as follows:
Basic HTTP endpoint
The basic HTTP endpoint is the best option in most cases.
This option supports interoperability, such as for non-.NET clients, and where there is need to be stateless in order to avoid issues with Load Balancers.
The URL path for this endpoint is the following: /webservices/ExternalContentLibraryService2012.svc/basicHttp
WS-HTTP endpoint
The web services HTTP endpoint can be used where user impersonation is needed.
This option requires sticky sessions.
The URL path for this endpoint is the following: /webservices/ExternalContentLibraryService2012.svc/wsHttp

Both endpoints are hosted in an IIS web application and deployed in the Content Manager web services Web App (next to the Core Service and Import/Export Service ).

Precompiled ECL Service client

This release introduces a precompiled ECL Service client, provided as a .NET assembly. We recommended that you use this client for your .NET projects. For other languages, you can generate a client using the WSDL provided by the ECL Service.

You can find the precompiled client on a Content Manager server in the following folder: %TRIDION_CM_HOME%\bin\client\ExternalContentLibraryService

The namespace for the client is as follows: Tridion.ExternalContentLibrary.Service.Client

In addition, the client comes with the following example configuration: Tridion.ExternalContentLibrary.Service.Client.dll.config

Core Service.REST API delta

The following table describes the the changes in the Core Service.REST API between release Tridion Sites 9.6 and Tridion Sites 10.

New/Changed/DeletedControllerMethod/PropertyDescription
NEWBinariesPOST /v{api-version}/items/{escapedFolderId}/uploadUploads a single binary file and creates a multimedia component.
NEWBatchOperationsPOST /v2.0/batch/startActivityStarts a batch of activities.
NEWBatchOperationsPOST /v2.0/batch/finishActivityFinishes a batch of activities.
NEWBatchOperationsPOST /v2.0/batch/restartActivityRestarts a batch of activities.
NEWBatchOperationsPOST /v2.0/batch/reassignActivityReassigns a batch of activities.
NEWListsGET /v2.0/lockedItemsGets a list of locked items (either versioned items or organizational items).
NEWListsGET /v2.0/usersGets a list of Users.
NEWListsGET /v2.0/groupsGets a list of Groups.
NEWOrganizationalItemsGET /v2.0/items/{escapedOrgItemId}/itemsPage/{pageIndex}Gets a paginated list of child items of a specified organizational item.
CHANGEDSearchGET /v{api-version}/items/search changed to GET /v2.0/system/searchSearches the system for a specified text string.
NEWSettingsGET /v2.0/userSettingsGets user settings for an authenticated user.
NEWSettingsPUT /v2.0/userSettingsSaves user settings for an authenticated user.
NEWSettingsDELETE /v2.0/userSettingsDeletes user settings for an authenticated user.
NEWSettingsGET /v2.0/applicationSettingsGets application settings for specified application ID.
NEWSettingsPUT /v2.0/applicationSettingsSaves application settings with specified application ID.
NEWSettingsDELETE /v2.0/applicationSettingsDeletes application settings for specified application ID.
NEWWorkflowGET /v2.0/activityInstancesGets a list of Activity Instances.
NEWWorkflowPOST /v2.0/items/{escapedActivityInstanceId}/restartActivityRestarts an automated Activity Instance which is in Failed state.
NEWWorkflowPOST /v2.0/items/{escapedActivityInstanceId}/reassignActivityReassigns a Workflow Activity to another User or Group.

Core Service.REST deprecated methods

This release includes the following deprecated methods.

ControllerDeprecated methodDescription
ApplicationDataGET /v2.0/items/{escapedItemId}/appDataGets application data for all applications related to a specified item.

Replaced with methods from Settings controller.

ExtensionsGET /v2.0/extensionsGets a list of Experience Space extensions.
ListsGET /v2.0/checkedOutItemsGets a list of items that are checked out.

Replaced with a new method GET /v2.0/lockedItems.

WCF Core Service API delta

The following table describes the the changes in the WCF Core Service API between release Tridion Sites 9.6 and Tridion Sites 10.

Tridion.Common
New/Changed/DeletedInterface/classMethod/PropertyDescription
NEWTridion.Configuration.ConfigurationSectionsGetSection(...)Gets a section element by name,
Tridion.ContentManager
New/Changed/DeletedInterface/classMethod/PropertyDescription
DELETEDTridion.ContentManager.Configuration.GeneralConfigurationLicenseSettingsGets or sets the license related settings.
DELETEDTridion.ContentManager.Configuration.LicenseSettings Specifies license related settings.
NEWTridion.ContentManager.ContentManagement.LockedItemsFilter Represents a filter that can be used to obtain locked item (either versioned items or organizational items).
DELETEDTridion.ContentManager.ContentManagement.SearchQueryGetListResults(...)Get a subset of the query results as an XML list.
NEWTridion.ContentManager.Extensibility.Events.InitialAssignActivityEventArgs Represents event data for events related to initial assigning of the first inside a process instance.
NEWTridion.ContentManager.Pagination Represents the filter/output needed for retrieving a paginated list.
NEWTridion.ContentManager.Publishing.Models.IdentifiableObjectModelOwningPublicationIdGets or sets a native Tridion Content Manager URI which uniquely identifies an owning publication.
NEWTridion.ContentManager.Security.GroupsFilterExcludeEveryoneGroupGets or sets a value indicating whether the special "Everyone" Group (representing all CM users) should be returned.
NEWTridion.ContentManager.StronglyTypedFilterPaginationGets or sets the pagination (input and output) used for retrieving only a single list page.
NEWTridion.ContentManager.SystemManagerGetLockedItems(...)Gets a list of items (Versioned Items or Organizational Items) that are locked.
NEWTridion.ContentManager.SystemManagerGetListLockedItems(...)Gets a list of items (Versioned Items or Organizational Items) that are locked.
NEWTridion.ContentManager.Workflow.ActivityPrimarySubjectGets the Primary Subject for this Activity.
NEWTridion.ContentManager.Workflow.ActivityInstanceApprovalStatusGets the Approval Status for this Activity Instance.
NEWTridion.ContentManager.Workflow.ActivityInstanceProcessDefinitionGets the Process Definition on which the Activity Instance is based.
NEWTridion.ContentManager.Workflow.ActivityInstanceWorkflowTypeGets the workflow type of the Process which contains this Activity.
NEWTridion.ContentManager.Workflow.ActivityInstancesFilterIncludePrimarySubjectGets or sets a value indicating whether the Primary Subject is set in the returned list.
Tridion.ContentManager.Common
New/Changed/DeletedInterface/classMethod/PropertyDescription
NEWTridion.ContentManager.DataPipeline.IIdentifiableObjectOwningPublicationIdGets or sets a native Tridion Content Manager URI which uniquely identifies an owning publication.
NEWTridion.ContentManager.Security.RightsLockManagementGrants the user rights to unlock items locked by other users.
Tridion.ContentManager.CoreService.Client
New/Changed/DeletedInterface/classMethod/PropertyDescription
NEWTridion.ContentManager.CoreService.Client.ActivityDataPrimarySubjectGets the Primary Subject for this Activity.
NEWTridion.ContentManager.CoreService.Client.ActivityInstanceDataApprovalStatusGets the Approval Status for this Activity Instance.
NEWTridion.ContentManager.CoreService.Client.ActivityInstanceDataProcessDefinitionGets the Process Definition on which the Activity Instance is based.
NEWTridion.ContentManager.CoreService.Client.ActivityInstanceDataWorkflowTypeGets the workflow type of the Process which contains this Activity.
NEWTridion.ContentManager.CoreService.Client.ActivityInstancesFilterDataIncludePrimarySubjectGets or sets a value indicating whether the Primary Subject is set in the returned list.
DELETEDTridion.ContentManager.CoreService.Client.CoreServiceClientGetSearchResultsXmlPaged(...)Gets a paged list of items as XmlElement constrained by the specified SearchQueryData.
DELETEDTridion.ContentManager.CoreService.Client.CoreServiceClientGetSearchResultsPaged(...)Gets a paged list of IdentifiableObjectData constrained by the specified SearchQueryData.
NEWTridion.ContentManager.CoreService.Client.GroupsFilterDataExcludeEveryoneGroupGets or sets a value indicating whether the special "Everyone" Group (representing all CM users) should be returned.
NEWTridion.ContentManager.CoreService.Client.CookiesEnabledWSHttpBindingRepresents a cookies-enabled WS-HTTP binding, which insures that WS-HTTP endpoints can be used through a Load Balancer and with cookie-based Sticky Sessions.
DELETEDTridion.ContentManager.CoreService.Client.ISessionAwareCoreServiceGetSearchResultsXmlPaged(...)Gets a paged list of items as XmlElement constrained by the specified SearchQueryData.
DELETEDTridion.ContentManager.CoreService.Client.ISessionAwareCoreServiceGetSearchResultsPaged(...)Gets a paged list of IdentifiableObjectData constrained by the specified SearchQueryData.
DELETEDTridion.ContentManager.CoreService.Client.ICoreServiceGetSearchResultsXmlPaged(...)Gets a paged list of items as XmlElement constrained by the specified SearchQueryData.
DELETEDTridion.ContentManager.CoreService.Client.ICoreServiceGetSearchResultsPaged(...)Gets a paged list of IdentifiableObjectData constrained by the specified SearchQueryData.
NEWTridion.ContentManager.CoreService.Client.LockedItemsFilterData Represents the data of a filter that can be used to obtain locked item (either versioned items or organizational items).
NEWTridion.ContentManager.CoreService.Client.PaginationData Represents the filter data needed for retrieving a paginated list.
NEWTridion.ContentManager.CoreService.Client.RightsLockManagementGrants the user rights to unlock items locked by other users.
DELETEDTridion.ContentManager.CoreService.Client.SessionAwareCoreServiceClientGetSearchResultsXmlPaged(...)Gets a paged list of items as XmlElement constrained by the specified SearchQueryData.
DELETEDTridion.ContentManager.CoreService.Client.SessionAwareCoreServiceClientGetSearchResultsPaged(...)Gets a paged list of IdentifiableObjectData constrained by the specified SearchQueryData.
NEWTridion.ContentManager.CoreService.Client.StronglyTypedFilterDataPaginationGets or sets the pagination data used for retrieving only a single list page.
DELETEDTridion.OidcClient.UrlUtils Internal utility class used for Access Manager integration.