HomeDev GuideAPI Reference
Dev GuideAPI ReferenceUser GuideGitHubNuGetDev CommunityDoc feedbackLog In
GitHubNuGetDev CommunityDoc feedback

In the SerializedCarts data model, all cart data is stored in one table, SerializableCart. This table contains these defined and searchable columns:

  • CartId

  • Created

  • Modified

  • Name

  • CustomerId

  • MarketId (Commerce 11.0 and higher)

  • Data

The Data column is where all the cart data is serialized to JSON format and then stored as a _string_.

## Serializable components

Cart data is serialized to a JSON formatted string before persisting it to the database. To achieve this, several cart components participate in the serialization/deserialization which takes IMarket as a parameter.

## Add custom data

Serializable components implement the IExtendedProperties interface, and custom values can be added to the Properties collection on the Serializable components as long as the value can be JSON serialized.

Converting a serialized cart with custom properties to a purchase order requires the _Meta Fields_ corresponding to the custom properties to be present on the purchase order type. See [Extending order classes](🔗).

The mapping between the serialized cart's custom properties and the purchase order's corresponding meta fields is strictly based on _property name_. The serialized cart is created with an emptyPropertiesemptyProperties collection, meaning that it is not prepopulated with the keys or default values of the meta fields added to the purchase order, or the legacy cart meta-class.

## Enable SerializedCarts

By default, the SerializedCarts mode is _enabled_ for a new installation site and _disabled_ for an upgraded site.

To enable SerializedCarts mode, do the following:

  1. Edit the _ecf.app.config_ file.

  2. Go to the **Features** section.

  3. Change the SerializedCarts setting from _Disabled_ to _Enabled_.

If that setting does not exist, add it like this:

Alternatively, enable the SerializedCarts mode programmatically by adding the following to your InitializeModule class:

## Migrate existing legacy carts

If switching from a legacy version to Serializable carts, you may need to migrate existing carts. If so, run the scheduled job LegacyCartsMigrationJob available in the CMS admin view immediately after switching to the new cart system to complete the migration and remove legacy carts.


You should run the scheduled job _immediately_ after switching to serializable carts. After migrating legacy carts, the job is no longer visible in CMS admin view.