Breaking changes in Litium Studio 4.7

.NET Framework 4.5.2

In Litium Studio 4.7 we have upgraded the .NET framework to the latest released version. Ensure your system and production system are ready to run .NET framework 4.5.2 before starting installing or upgrading. See system requirements for specifications.


The old default logger log4net is removed and you should use the new extension method this.Log() instead. Read more about the logging here.

Parameter languageID is mandatory

When creating the Litium.Foundation.Search.QueryRequest it's important to include the language-ID the search should be made for. Otherwise the search will throw an exception due to lack of language information to be able to query the search index for the result.

When building advanced queries and your tag name (example: Litium.Foundation.Modules,ProductCatalog.Search.TagNames.TypeNameTranslation) value ends with a dash (-) means that the value is language dependent. The search in Litium Studio will then automatically add the correct language from the QueryRequest during the search.

Delivery method name should be unique

Unique constraint is added on the delivery method name: There cannot be two delivery methods in the ECommerce module with the same name. Before upgrading make sure there are no duplicate names from the Control Panel > ECommerce > Delivery methods.

The name cannot be edited from back-office, if you have duplicate names you need to delete the duplicate delivery methods.

The Checkout flow has a new signature

The default checkout flow implementation has got a new parameter in the constructor. If using your own implementation of your checkout flow that inherits from Litium.Foundation.Modules.ECommerce.Plugins.Checkout.CheckoutFlow you need to add and pass the IPriceCalculator to the default implementation.

Variant group has article number

The Variant group has got the new mandatory field called articleNumber, the field is not changeable. During upgrade the field will get the VariantGroupID as the article number but you can use the scripts found here to upgrade the article number (after you have made your upgrade to Litium Studio 4.7) to change  to the value of a field already existing on the variant group.

Article number on articles are now also read-only in the API

In earlier releases the article number on articles was changable in the API but read-only in the UI. This is changed so that the article number also is read-only in the API.

The content and settings area is removed from the Web Publishing module

When we added the module extension panels (the Content and Settings tabs) in Litium Studio 4.6.0 we decided to hide the content and settings-area (the old extensibility point) if it was not in use for the current pagetype. In Litium Studio 4.7 we have removed the old content and settings-area since it's not working optimally with the new editing interface. If you are still using the old content and settings area content will not be shown.

The Masterpage for the Control panel is changed

The Control panel masterpage (~/LitiumStudio/Framework/ControlPanel.master) has got new names on some of the content place holders. If you have pages in your solution using the masterpage the ContentPlaceHolderID-attributes need to be updated for the following <asp:Content-controls:

  • ToolbarRight to LitiumStudioToolbar
  • ContentRight to LitiumStudioContent

OnPreInit event in templates

Ensure that the base.OnPreInit is included in your template that overrides the OnPreInit-method; otherwise the CurrentState will not work. For example, the CurrentState.Current.Page or CurrentState.Current.WebSite will be null.

The Dashboard is not automatically loading

All widgets that depend on external data; for example the Google Analytics widgets, need to load all third party library by themselves. The Dashboard will no longer automatically load the jsapi from google.

Error handler implementation

Litium.Foundation.GUI.Plugins.ErrorHandler.IErrorHandler has been depricated and the new interface Litium.Foundation.Modules.CMS.Plugins.Routing.IErrorPageResolver should be used instead. The new interface will work the same way as the Litium.Foundation.Modules.CMS.Plugins.Routing.IPageNotFoundResolver.


The Global.asax is no longer needed for Litium Studio so the Litium.Foundation.GUI.GlobalApplication has been depricated. If you need a Global.asax for your project the inheritance should be changed to System.Web.HttpApplication if it previously was Litium.Foundation.GUI.GlobalApplication.

C# definitions

The setup of c# definitions for page types in the Web Publising module and templates in the Product Catalog and Relations modules has been changed and will only run once. If the setup has created the pagetype, template and property and the page type is then removed, the template and/or property will not be restored during the next site restart unless the Overwrite-property for the page type attribute is true.

If you need to re-run the definition you must clean out the specific template from the database table Foundation_Setting. You will find the correct rows to delete with the key in the following format: "BuilderStore:[c# types fullname]:[optional identifier]". The optional identifier is only used for web site strings and will be the same as the web site id. When the rows are removed and the site is restarted the definition will run again.

Visit statistics and Prospect Finder link is removed

The Statistics link including "Prospect finder" and "Visit statistics" has been removed from Litium Studio web publishing module since most customers use Google Analytics for statistics. Litium Studio has built-in support for Google Analytics.


The indexing process has been rebuilt with breaking changes for project that have implemented their own search indices.

  1. Registering index jobs using the new SearchIndexConfiguration class, the update process is registrated on the UpdateAction property
  2. Registering index jobs into the index queue with the IndexJobQueue.Enqueue method, the old UndexUpdateJobQueue is removed together with the IndexUpdateJob

The above changes are made to optimize the indexing process.

Receivers are removed from the Circular search index

To improve performance for the circulare search index build the receivers are not longer indxed together with the circular. This will mean that you can't use the search index to search for a receivers address and find all circulare that is sent to the receiver.

Changed events

The WebSiteStringCreated, WebSiteStringDeleted and WebSiteStringUpdated events in the Web Publishing module has been changed to not contain the value for the string.

Depricated assemblies:

Inversion Of Control

InversionOfControl (IoC) has got a new place inside the Litium.Owin assembly. Remove the Litium.Common.InversoinOfControl assembly from your solution and change any implementation to use classes from the new namespace Litium.Owin.InversionOfControl.


The lifecycle components has got a new place inside the Litium.Owin assembly. Remove the Litium.Common.Lifecycle assembly from your solution and change any implementation to use classes from the new namespace Litium.Owin.Lifecycle.


Caching components has got a new place inside the Litium.Owin assembly. Remove the Litium.Common.Caching assembly from your solution and change any implementation to use classes from the new namespace Litium.Owin.Caching. ICacheKey and CacheKey are moved into Litium.Common.Caching into Litium.Foundation.Caching.

Removed soft dependencies in the database between E-commerce and Relations

The soft dependencies between E-commerce and Relations has been removed due to performance reasons-

  • The field "IsEcommerceCustomer" on persons has been removed. If you are using the "IsEcommerceCustomer" in your code it needs to be rewritten in order to compile.
  • Updating customer number on placed orders when changing customer number on a person is removed. Use the search based on UserId if you want to retreive a persons orders.
Is this page helpful?
Thank you for your feedback!