• CMS,  Commerce,  Episerver,  Uncategorized

    Episerver caching issue with .NET 4.7

    Update 1: The bug is fixed in .NET 4.7.1 (thanks to Pascal van der Horst for the information) Update 2: The related bug is fixed in CMS Core 10.10.2 and 9.12.5. If upgrading to that version is not an option, you can contact Episerver support service for further assistance. Original post: If you are using Episerver and update to .NET 4.7 (even involuntarily, such as you are using DXC/Azure to host your websites. Microsoft updated Azure to .NET 4.7 on June 26th) , you might notice some weird performance issues. If your servers are in Europe, Asia or Australia, then you can see a peak in memory usage. If your servers in…

  • SQL Server,  Tips,  Uncategorized

    Import a bacpac to SQL Server

    This is more of a note-to-self. I sometimes have to import a bacpac file from customer’s database (usually from Azure SQL database) to my local machine – . For most of the time it’ll be very easy when the databases are in .bak format, but for .bacpac file it can be pretty complicated. Sqlpackage.exe is the standard tool to import the .bacpac file, and it can be found with the installation of Visual Studio (for example C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\Extensions\Microsoft\SQLDB\DAC\130) or SQL Server ( C:\Program Files (x86)\Microsoft SQL Server\130\DAC\bin ). Latest version should be used because they can support the older formats (.bacpac exported from older SQL Server version),…

  • Catalog,  Commerce,  Episerver,  Uncategorized

    Price optimizing: to be or not to be

    It can be quite confusing when you first edit prices in Episerver Commerce. To your surprises, some of the prices you imported or edited might disappear, or change, without your consent! What happened? To answer that question, it’s essential to know there are two pricing system in Commerce: IPriceService and IPriceDetailService. They have some different characteristics, and one of them is very important: the default implementation of IPriceDetailService saves prices as-is, while the default implementation of IPriceService does not: it optimizes prices before saving. Prices which are best for customers will be favored over the “less good” ones.

  • CMS,  Episerver,  Performance,  Uncategorized

    Episerver CMS performance optimization – part 1

    Update: In Episerver CMS 11, released today (November 21st 2017), the simpleaddress router has been moved to the last of the route table. Original post: This is an unusual post – it is not about Commerce – my area of expertise, but about CMS. Recently I’ve been working on some support cases where SQL Server instance is on high utilization, and in some scenarios it eventually slows down the site. After investigation, it’s likely to come from a small, simple and helpful feature: Simple address. CMS content can have a property named “Simple address”, which allows you to create a “shortcut” url for that content. So if you have one page…

  • Catalog,  Commerce,  Episerver,  Performance,  Tips,  Uncategorized

    Can Episerver Commerce support our catalog size?

    One of the questions customers usually raise during evaluation of Episerver Commerce is : “Can it support our catalog size? We have (a very big number of ) entries. Will it work?” The answer is (of course, as always): It depends! I’ve seen “big” catalogs. Some big enough in number – 1 million entries catalogs are not very uncommon, and some are even (much) bigger. Theoretically, Episerver Commerce can support up to 512 millions 1 billion of entries (!), so you can have pretty much anything in your catalog until you reach a hard technical limit. Just for comparison, Amazon.com, which is arguably the biggest eCommerce site on the world, has…

  • Commerce,  Episerver,  Order,  SQL Server,  Uncategorized

    Tale from inside TransactionScope

    One of the last things you want to get from your Commerce site is that the order data is gone. What can be more confused than if your log shows that the cart has been converted into a purchase order, you even got the PO number, but after that, the order disappears? It’s nowhere to be found, even if you look into database. It’s kind of magic, but not the kind of magic you would want to have. But everything happens for a reason. And actually it’s with a good reason: data consistency. Episerver Commerce has the concept of TransactionScope. Simply put, it allows two or more database operations to…

  • gaming,  Uncategorized

    PS4 firmware 4.5 wifi problem fixed

    And finally the much anticipated 4.5 firmware of PlayStation 4/4 Pro has arrived, with some very neat features: extended storage, custom themes. It’s a big improvement for PS4 users, well, almost: the firmware comes with a big problem for ones who are using wifi: the download speed is now terrible, and even worse, the lag in game is making the games unplayable. Before 4.5, I had no problem joining matches on Uncharted 4, and playing Titanfall was very smooth – ping is never more than 100ms. After 4.5, I can’t hardly join a match on Uncharted 4 (errors in connections), and the lag in Titanfall spikes to more than 2000ms,…

  • Catalog,  Commerce,  Episerver,  Performance,  Tips,  Uncategorized

    The Catalog UI trade-off: performance or better UI

    I supposed this is a well known feature, but I was asked more than once about it, so it’s better to write something here to clarify the confusions. If you have some very, very big catalogs, you probably have seen this “notification” in Catalog UI By default, the Catalog UI groups a product and its variations in a parent-children view (they are not exactly parent-children, by the way). However, to do that, it needs to know about all the entries in that specific category. If it’s a small category, it should be no problem, but if it’s big one, then it’s inevitable slow. The lazy loading which the catalog content…

  • Home,  Uncategorized

    1600 vs 1400 vs 1200 rpm washing machine

    I got this question before – and now I bought one, I hope I can help you choosing the right washing machine. You might have read other answers on the Internet – and yes most of them are saying a 1200 rpm washing machine is as good as a 1600 rpm one, in term of the dryness of the clothes. Wrong! That might be true with synthetic clothes – which are the easiest ones to dry. But for cotton, it’s a big different. I tried same clothes with both 1400 rpm and 1600 rpm and my clothes are noticeable drier when it comes out of 1600 rpm mode. 1200 rpm,…

  • Catalog,  Commerce,  Episerver,  Uncategorized

    EntryContentBase, MetaObject, CatalogEntryDto, Entry: which should you use?

    It can be pretty confusing for new Commerce developers to understand how to work effectively with entries in Commerce. There are many things which represent the same concepts, however they are different and their APIs are not compatible. So which is which and what should you use? Which is which CatalogEntryDto is the DataSet to represent one or more entries (CatalogEntryDto can of course be empty). Beside the basic information like Name, Code, or MetaClassId, depends on how did you load it, a CatalogEntryDto can contain information about the assets, the associations or the variations (you can specify what to load by using CatalogEntryResponseGroup parameter. CatalogEntryDto, however, does not contain information…