How to deserialize marshalled data from previous versions of Commerce Server


Description

If you have Order data from previous versions of Commerce Server and use the Weakly Typed Properties of the Order objects to serialize arbitrary data to the MarshalledData column in your SQL tables, when attempting to deserialize them with Commerce Server 10, you will receive the following error:

System.Runtime.Serialization.SerializationException: Unable to find assembly 'Microsoft.CommerceServer.Runtime, Version=6.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.

This error happens due to the Order system attempting to deserialize your data into Microsoft.CommerceServer.* named (or custom derived) types, which no longer exist.

Order data can cause this error if:

  1. You have Order data from previous versions of Commerce Server.
  2. You use the Weakly Typed properties of the Order objects to serialize arbitrary data to the MarshalledData column in your SQL tables.
The issue affects Commerce Server 10.0 and later versions

Solution

Below are the steps you can follow to use Order Object Serialization Bindings to deserialize marshalled data from previous versions of Commerce Server:

Note: The value specified in "OldType" does NOT have to exist in an assembly. The old type is not instantiated, but is used internally as a lookup.

The following is an example of the SerializationBindings changes needed when using the out-of-the-box Commerce Server types. You will need to augment this with your own derived types (if any).

For more documentation on SerializationBindings, please see the topic "SerializationBindings Element" in the core Commerce Server Documentation help file installed with Commerce Server 10.

<SerializationBindings>
  <SerializationBinding OldType="Microsoft.CommerceServer.Runtime.Orders.LineItem  ,    Microsoft.CommerceServer.Runtime      ,Version=6.0.1.0,Culture=neutral,      PublicKeyToken=31bf3856ad364e35"
                        NewType="CommerceServer.Core.Runtime.Orders.LineItem, CommerceServer.Core.Runtime,Version=10.0.0.0,Culture=neutral, PublicKeyToken=f5c79cb11734af7a"/>
  <SerializationBinding OldType="Microsoft.CommerceServer.Runtime.Orders.Basket  ,    Microsoft.CommerceServer.Runtime      ,Version=6.0.1.0,Culture=neutral,      PublicKeyToken=31bf3856ad364e35"
                        NewType="CommerceServer.Core.Runtime.Orders.Basket, CommerceServer.Core.Runtime,Version=10.0.0.0,Culture=neutral, PublicKeyToken=f5c79cb11734af7a"/>
  <SerializationBinding OldType="Microsoft.CommerceServer.Orders.StatusCodes  ,    Microsoft.CommerceServer.Orders.CrossTierTypes      ,Version=6.0.1.0,Culture=neutral,      PublicKeyToken=31bf3856ad364e35"
                        NewType="CommerceServer.Core.Orders.StatusCodes, CommerceServer.Core.Orders.CrossTier,Version=10.0.0.0,Culture=neutral, PublicKeyToken=f5c79cb11734af7a"/>
  <SerializationBinding OldType="Microsoft.CommerceServer.Runtime.Orders.WeaklyTypedPropertyDictionary  ,    Microsoft.CommerceServer.Runtime      ,Version=6.0.1.0,Culture=neutral,      PublicKeyToken=31bf3856ad364e35"
                        NewType="CommerceServer.Core.Runtime.Orders.WeaklyTypedPropertyDictionary, CommerceServer.Core.Runtime,Version=10.0.0.0,Culture=neutral, PublicKeyToken=f5c79cb11734af7a"/>
  <SerializationBinding OldType="Microsoft.CommerceServer.Runtime.Orders.OrderAddressCollection  ,    Microsoft.CommerceServer.Runtime      ,Version=6.0.1.0,Culture=neutral,      PublicKeyToken=31bf3856ad364e35"
                        NewType="CommerceServer.Core.Runtime.Orders.OrderAddressCollection, CommerceServer.Core.Runtime,Version=10.0.0.0,Culture=neutral, PublicKeyToken=f5c79cb11734af7a"/>
  <SerializationBinding OldType="Microsoft.CommerceServer.Runtime.Orders.OrderFormCollection  ,    Microsoft.CommerceServer.Runtime      ,Version=6.0.1.0,Culture=neutral,      PublicKeyToken=31bf3856ad364e35"
                        NewType="CommerceServer.Core.Runtime.Orders.OrderFormCollection, CommerceServer.Core.Runtime,Version=10.0.0.0,Culture=neutral, PublicKeyToken=f5c79cb11734af7a"/>
  <SerializationBinding OldType="Microsoft.CommerceServer.Runtime.Orders.OrderForm  ,    Microsoft.CommerceServer.Runtime      ,Version=6.0.1.0,Culture=neutral,      PublicKeyToken=31bf3856ad364e35"
                        NewType="CommerceServer.Core.Runtime.Orders.OrderForm, CommerceServer.Core.Runtime,Version=10.0.0.0,Culture=neutral, PublicKeyToken=f5c79cb11734af7a"/>
  <SerializationBinding OldType="Microsoft.CommerceServer.Runtime.Orders.ShipmentCollection  ,    Microsoft.CommerceServer.Runtime      ,Version=6.0.1.0,Culture=neutral,      PublicKeyToken=31bf3856ad364e35"
                        NewType="CommerceServer.Core.Runtime.Orders.ShipmentCollection, CommerceServer.Core.Runtime,Version=10.0.0.0,Culture=neutral, PublicKeyToken=f5c79cb11734af7a"/>
  <SerializationBinding OldType="Microsoft.CommerceServer.Runtime.Orders.PromoCodeRecord  ,    Microsoft.CommerceServer.Runtime      ,Version=6.0.1.0,Culture=neutral,        PublicKeyToken=31bf3856ad364e35"
                        NewType="CommerceServer.Core.Runtime.Orders.PromoCodeRecord, CommerceServer.Core.Runtime,Version=10.0.0.0,Culture=neutral, PublicKeyToken=f5c79cb11734af7a"/>
  <SerializationBinding OldType="Microsoft.CommerceServer.Runtime.Orders.PromoCodeRecordCollection  ,    Microsoft.CommerceServer.Runtime      ,Version=6.0.1.0,Culture=neutral,        PublicKeyToken=31bf3856ad364e35"
                        NewType="CommerceServer.Core.Runtime.Orders.PromoCodeRecordCollection, CommerceServer.Core.Runtime,Version=10.0.0.0,Culture=neutral, PublicKeyToken=f5c79cb11734af7a"/>
  <SerializationBinding OldType="Microsoft.CommerceServer.Runtime.Orders.LineItemCollection  ,    Microsoft.CommerceServer.Runtime      ,Version=6.0.1.0,Culture=neutral,      PublicKeyToken=31bf3856ad364e35"
                        NewType="CommerceServer.Core.Runtime.Orders.LineItemCollection, CommerceServer.Core.Runtime,Version=10.0.0.0,Culture=neutral, PublicKeyToken=f5c79cb11734af7a"/>
  <SerializationBinding OldType="Microsoft.CommerceServer.Runtime.Orders.PromoCodeStringCollection  ,    Microsoft.CommerceServer.Runtime      ,Version=6.0.1.0,Culture=neutral,        PublicKeyToken=31bf3856ad364e35"
                        NewType="CommerceServer.Core.Runtime.Orders.PromoCodeStringCollection, CommerceServer.Core.Runtime,Version=10.0.0.0,Culture=neutral, PublicKeyToken=f5c79cb11734af7a"/>
  <SerializationBinding OldType="Microsoft.CommerceServer.Runtime.Orders.PaymentCollection  ,    Microsoft.CommerceServer.Runtime      ,Version=6.0.1.0,Culture=neutral,      PublicKeyToken=31bf3856ad364e35"
                        NewType="CommerceServer.Core.Runtime.Orders.PaymentCollection, CommerceServer.Core.Runtime,Version=10.0.0.0,Culture=neutral, PublicKeyToken=f5c79cb11734af7a"/>
  <SerializationBinding OldType="Microsoft.CommerceServer.Runtime.Orders.OrderAddress  ,    Microsoft.CommerceServer.Runtime      ,Version=6.0.1.0,Culture=neutral,      PublicKeyToken=31bf3856ad364e35"
                        NewType="CommerceServer.Core.Runtime.Orders.OrderAddress, CommerceServer.Core.Runtime,Version=10.0.0.0,Culture=neutral, PublicKeyToken=f5c79cb11734af7a"/>
  <SerializationBinding OldType="Microsoft.CommerceServer.Runtime.Orders.Shipment  ,    Microsoft.CommerceServer.Runtime      ,Version=6.0.1.0,Culture=neutral,      PublicKeyToken=31bf3856ad364e35"
                        NewType="CommerceServer.Core.Runtime.Orders.Shipment, CommerceServer.Core.Runtime,Version=10.0.0.0,Culture=neutral, PublicKeyToken=f5c79cb11734af7a"/>
  <SerializationBinding OldType="Microsoft.CommerceServer.Inventory.InventoryCondition  ,    Microsoft.CommerceServer.CrossTierTypes      ,Version=6.0.1.0,Culture=neutral,      PublicKeyToken=31bf3856ad364e35"
                        NewType="CommerceServer.Core.Inventory.InventoryCondition, CommerceServer.Core.CrossTier,Version=10.0.0.0,Culture=neutral, PublicKeyToken=f5c79cb11734af7a"/>
  <SerializationBinding OldType="Microsoft.CommerceServer.Runtime.Orders.CreditCardPayment  ,    Microsoft.CommerceServer.Runtime      ,Version=6.0.1.0,Culture=neutral,      PublicKeyToken=31bf3856ad364e35"
                        NewType="CommerceServer.Core.Runtime.Orders.CreditCardPayment, CommerceServer.Core.Runtime,Version=10.0.0.0,Culture=neutral, PublicKeyToken=f5c79cb11734af7a"/>
  <SerializationBinding OldType="Microsoft.CommerceServer.Orders.PaymentMethodTypes  ,    Microsoft.CommerceServer.Orders.CrossTierTypes      ,Version=6.0.1.0,Culture=neutral,      PublicKeyToken=31bf3856ad364e35"
                        NewType="CommerceServer.Core.Orders.PaymentMethodTypes, CommerceServer.Core.Orders.CrossTier,Version=10.0.0.0,Culture=neutral, PublicKeyToken=f5c79cb11734af7a"/>
  <SerializationBinding OldType="Microsoft.CommerceServer.Runtime.Orders.ShippingDiscountCollection  ,    Microsoft.CommerceServer.Runtime      ,Version=6.0.1.0,Culture=neutral,      PublicKeyToken=31bf3856ad364e35"
                        NewType="CommerceServer.Core.Runtime.Orders.ShippingDiscountCollection, CommerceServer.Core.Runtime,Version=10.0.0.0,Culture=neutral, PublicKeyToken=f5c79cb11734af7a"/>
  <SerializationBinding OldType="Microsoft.CommerceServer.Runtime.Orders.DiscountApplicationRecordCollection  ,    Microsoft.CommerceServer.Runtime      ,Version=6.0.1.0,Culture=neutral,      PublicKeyToken=31bf3856ad364e35"
                        NewType="CommerceServer.Core.Runtime.Orders.DiscountApplicationRecordCollection, CommerceServer.Core.Runtime,Version=10.0.0.0,Culture=neutral, PublicKeyToken=f5c79cb11734af7a"/>
  <SerializationBinding OldType="Microsoft.CommerceServer.Runtime.Orders.ShippingDiscountRecord  ,    Microsoft.CommerceServer.Runtime      ,Version=6.0.1.0,Culture=neutral,      PublicKeyToken=31bf3856ad364e35"
                        NewType="CommerceServer.Core.Runtime.Orders.ShippingDiscountRecord, CommerceServer.Core.Runtime,Version=10.0.0.0,Culture=neutral, PublicKeyToken=f5c79cb11734af7a"/>
  <SerializationBinding OldType="Microsoft.CommerceServer.Orders.DiscountType  ,    Microsoft.CommerceServer.Orders.CrossTierTypes      ,Version=6.0.1.0,Culture=neutral,      PublicKeyToken=31bf3856ad364e35"
                        NewType="CommerceServer.Core.Orders.DiscountType, CommerceServer.Core.Orders.CrossTier,Version=10.0.0.0,Culture=neutral, PublicKeyToken=f5c79cb11734af7a"/>
  <SerializationBinding OldType="Microsoft.CommerceServer.Orders.PromoCodeState, Microsoft.CommerceServer.Orders.CrossTierTypes, Version=6.0.1.0,Culture=neutral, PublicKeyToken=31bf3856ad364e35" 
                        NewType="CommerceServer.Core.Orders.PromoCodeState, CommerceServer.Core.Orders.CrossTier,Version=10.0.0.0,Culture=neutral, PublicKeyToken=f5c79cb11734af7a"/>
</SerializationBindings>