This content is archived. See latest version here

Last updated: Oct 12 2015

Note: Episerver uses the Episerver asset system by default. If you want to enable the legacy asset management system, set the UseLegacyAssetSystem configuration setting to true in the web.config files of both the Commerce Manager and the front-end sites. 

This topic describes the legacy asset management system and its features, including: customizing assets, displaying assets, securing assets and authorization, and storing data. Episerver Commerce lets you associate assets with products and SKUs. Those associated assets are then available in the Entry.Assets collection. However, you can render and retrieve assets independently. Episerver Commerce also includes controls that let you display or make digital assets downloadable.

Episerver Commerce comes with asset management providers for file storage, MSSQL storage and Amazon S3. You can also create your own asset management provider. See Storing Data for information.

Classes in this topic are available in the following namespaces:

Item assets

ItemAsset represents an asset association with a SKU. Provides the linking information (SKU and Asset IDs), and is a simple object with properties. The Entry has a collection of these objects representing the assets associated with an entry.

Example: using Entry object

ItemAsset[] assets = Entry.Assets;
foreach (ItemAsset asset in assets)
int assetId = asset.AssetKey;
string groupName = asset.GroupName;

Folder elements


Contains the information pertaining to the asset. Also contains a method to get the virtual URL associated with an asset (GetUrl()).

Example: using FolderElementEntity

FolderElementEntity[] asset = EntityManager.List<FolderElementEntity>(FolderElementEntity.ClassName, filters);
        string url = asset0.GetUrl();
        DateTime dateCreated = asset0.Created;

Contains a static method to create a new asset.

Example: creating an asset

FolderElementEntity.Create(asset parent folder id, file name, System.IO.Stream)
Contains static methods to copy, delete, and move assets.

Example: copying, deleting and moving assets

FolderElementEntity.Copy(element object ref, parent folderid);
            FolderElementEntity.Delete(element object ref);
            FolderElementEntity.Move(element object ref, new parent folderid);

This object also provides access to custom fields that you create in the Business Foundation {BF} definition of the FolderElement class.

Example: accessing custom fields

FolderElementEntity[] asset = EntityManager.List<FolderElementEntity>(FolderElementEntity.ClassName, filters);
        string additionalInfo = asset0.Properties"MyAddedProperty".Value.ToString();


Represents an asset folder, and is useful when you are navigating the asset hierarchy. Retrieve with EntityManager. This is a Manager class that retrieves FolderElementEntity and FolderEntity objects.

Example: retrieving FolderEntity objects

FolderEntity[] folders = EntityManager.List<FolderEntity>(FolderEntity.ClassName, filters);
        string name = folders0.Name;
        PrimaryKeyId folderId = folders0.PrimaryKeyId.Value;

Creating a Folder

The following example creates an asset folder.

Example: creating a folder using CreateFolder

private int CreateFolder(string name) 
                                FolderEntity folder = new FolderEntity(); 
                                folder.Name = name; 
                                folder.PrimaryKeyId = BusinessManager.Create(folder); 
                                //Moves folder under the root 
                                FolderEntity.Move(folder, 1); 
                                return folder.PrimaryKeyId.Value; 
                catch (Exception ex) 
                                LogManager.GetLogger("Asset Upload").Error(ex.Message, ex); 
                                return -1; 

            //Adding an asset 

            Private void AddFilesToFolder(int siteFolderId) 
                            foreach (FileInfo info in dir.GetFiles()) 
            FolderElementEntity entity = FolderElementEntity.Create(siteFolderId, info.FullName, info.OpenRead()); 

Asset providers


Represents an asset provider and returns information about the provider, to retrieve blob information. In most cases, you do not need to use this provider. If you want to implement complex business logic regarding the storage provider or override business logic in the provider, use BlobStorageProvider.

BlobStorage is a Manager class to retrieve BlobStorageProviders. It also exposes events that can be listened to, for instance when an asset is added, allowing custom logic to be implemented during asset management activities.

Example: using BlobStorageProvider

BlobStorageProvider prov = BlobStorage.Providerselement.BlobStorageProvider;
        string description = prov.Description;
        string name = prov.Name;


Simple object with blob information about the asset. Its properties are a subset of the FolderElementEntity object.

Example: using BlobInfo

BlobStorageProvider prov = BlobStorage.Providerselement.BlobStorageProvider;
        BlobInfo info = prov.GetInfo(new Guid(myFolderElementEntity.BlobUid.ToString()));
        string fileName = info.FileName;

There are four primary database tables with asset information:

  • CatalogItemAsset. Contains the asset to product/SKU mapping.
  • cls_FolderElement. Contains information regarding the assets.
  • cls_Folder. Contains information regarding folders in the asset system.
  • McBlobStorage. Contains the asset blob information used by the SqlBlobStorageProvider.

Do you have feedback on this documentation? Send an email to For development-related questions and discussions, refer to our Forums on