Spreadsheet: 136d87d9-47cf-442e-9f3e-6b6f1c85612e
Sheet: Commerce Server 10 Guidance

Commerce Server 10 Breaking Changes
As a result of rebranding the product, Commerce Server 10 has introduced a number of breaking changes that you need to be aware of when migrating your solutions to the latest version of the product.  While a large number of these are detected at compile time, there are many that will not manifest themselves until runtime.
The purpose of this spreadsheet is to provide you with guidance on migrating your existing solutions from previous versions of Commerce Server to Commerce Server 10.  This spreadsheet contains mappings illustrating the old and new names for assemblies, namespaces and other artifacts.
To further assist you, configuration files have been included as part of the Commerce Server 10 installation to provide you with a reference on migrating your configuration files.  They can be found under the default installation path of [NAME] (x86)\Commerce Server 10\PartnerSDK\Sample Files.
We highly recommend that you reference the Site Template(s) available on http://cstemplates.codeplex.com for a working example of a site using Commerce Server 10.  Analyzing the configuration files within these Site Templates will be useful in performing your own migrations to Commerce Server 10.
What's in this [NAME]?
This spreadsheet contains a number of sheets that allow you to filter and pivot on the various namespaces and or / assemblies.  The sheets breakdown like this:
·         Commerce Server 10 Guidance – this sheet that contains the higher level changes that you should be aware of when migrating your solution
·         CS Assemblies & Namespaces – a sheet that contains the mapping of Commerce Server 2009 R2 assemblies and namespaces to Commerce Server 10 assemblies and namespaces
·         XML Namespaces – a sheet that contains the mapping of Commerce Server 2009 R2 XML schema namespaces to Commerce Server 10 XML schema namespaces
·         [NAME] – a sheet that contains the list of classes that have been deprecated or replaced with newer versions
Broad Sweeping Product Changes
A large portion of the breaking changes are a result of the rebranding of the product.  These items were applied uniformly across the entire product.
·         Microsoft is dropped from the beginning name of all assemblies, and replaced with CommerceServer (no company prefix)
·         Commerce Server Core (Base Class Library) assemblies have the prefix of “CommerceServer.Core” to provide obvious separation from other APIs
·         Commerce Server Foundation (Multi Channel Foundation) assemblies have the prefix of “CommerceServer.Foundation” to provide obvious separation from other APIs
·         All namespaces reflect the new “Core” and “Foundation” prefixes
·         All classes reflect the new “Core” and “Foundation” prefixes
·         Assemblies that contained "CrossTierTypes" in their name have been shortened to "CrossTier" (dropping the "Types" postfix)
·         All assemblies have an aligned assembly version of 10.0.0.0
·         The public key token for all Commerce Server assemblies is changed to f5c79cb11734af7a
What does this mean for you?
·         All project references must be updated to reference the newly named and versioned assemblies
·         All configuration files that are referencing the assemblies need to be updated to reference the newly named and versioned assemblies.  This includes any app.config, web.config and channelconfiguration.config files you may have
·         All using statements need to be updated to reference the newly named namespaces
·         A full recompile of your solution and any tools you've developed, including any extension points, using references to the new assemblies
Logging and Tracing Replacements
Classes are removed from the logging and tracing components and replaced with new components.
Trace listeners are no longer used.  Instead, use the CommerceTrace class to push trace messages to ETW.  For more details see the “Replaced Classes” tab in this spreadsheet.
Configuration Restructuring
Commerce Server 10 improves configuration naming and organization in certain areas.  The configuration has been restructured to be more meaningful, easier to understand and logically organized to faciliatate splitting across the tiers.
“Microsoft” was removed from any configuration section that previously used it as a prefix.
What does this mean for you?
·         The full hierarchy of Commerce Server configuration has been changed to this form of organization:
<commerceServer>
<crosstier>
<exceptionHandling>
<exceptionPolicy>
<exceptionHandler/>
</exceptionPolicy>
</exceptionHandling>
<extensibility>
<operationStatusConverter/>
</extensibility>
</crosstier>
<foundation>
<cacheRefresh/>
<channelConfiguration/>
<debug/>
</foundation>
<presentation>
<presentationConfiguration>
<default>
<types>
<type/>
</types>
<caching>
<cacheRefresh>
<cacheEvent/>
</cacheRefresh>
<cacheTypes>
<cacheType/>
</cacheTypes>
<caches>
<cache/>
</caches>
</caching>
</default>
<overrides>
<override>
<types>
<type/>
</types>
</override>
</overrides>
</presentationConfiguration>
<operationServices>
<operationService/>
</operationServices>
<router>
<commerceSession/>
</router>
<userRecognition>
<anonymousUser/>
<registeredUser/>
</userRecognition>
</presentation>
</commerceServer>
·         There’s a new section handler definition that you will need at the top of your app.config / web.config files
<sectionGroup name="commerceServer">
<sectionGroup name="crosstier">
<section name="exceptionHandling" type="CommerceServer.Foundation.Configuration.CommerceExceptionHandlingSection, CommerceServer.Foundation.CrossTier, Version=10.0.0.0, Culture=neutral, PublicKeyToken=f5c79cb11734af7a" />
<section name="extensibility" type="CommerceServer.Foundation.Configuration.CommerceExtensibilitySection, CommerceServer.Foundation.CrossTier, Version=10.0.0.0, Culture=neutral, PublicKeyToken=f5c79cb11734af7a" />
</sectionGroup>
<sectionGroup name="foundation">
<section name="cacheRefresh" type="CommerceServer.Foundation.Configuration.CommerceCacheRefreshSection, CommerceServer.Foundation, Version=10.0.0.0, Culture=neutral, PublicKeyToken=f5c79cb11734af7a"/>
<section name="channelConfiguration" type="CommerceServer.Foundation.Configuration.CommerceChannelConfigurationSection, CommerceServer.Foundation, Version=10.0.0.0, Culture=neutral, PublicKeyToken=f5c79cb11734af7a"/>
<section name="debug" type="CommerceServer.Foundation.Configuration.CommerceDebugSection, CommerceServer.Foundation, Version=10.0.0.0, Culture=neutral, PublicKeyToken=f5c79cb11734af7a"/>
</sectionGroup>
<sectionGroup name="presentation">
<section name="presentationConfiguration" type="CommerceServer.Foundation.Configuration.CommercePresentationConfigurationSection, CommerceServer.Foundation.Presentation, Version=10.0.0.0, Culture=neutral, PublicKeyToken=f5c79cb11734af7a"/>
<section name="operationServices" type="CommerceServer.Foundation.Configuration.CommerceOperationServicesSection, CommerceServer.Foundation.Presentation, Version=10.0.0.0, Culture=neutral, PublicKeyToken=f5c79cb11734af7a" />
<section name="router" type="CommerceServer.Foundation.Configuration.CommerceRouterSection, CommerceServer.Foundation.Presentation, Version=10.0.0.0, Culture=neutral, PublicKeyToken=f5c79cb11734af7a" />
<section name="userRecognition" type="CommerceServer.Foundation.Configuration.CommerceUserRecognitionSection, CommerceServer.Foundation.Presentation, Version=10.0.0.0, Culture=neutral, PublicKeyToken=f5c79cb11734af7a" />
</sectionGroup>
</sectionGroup>
Order Object Serialization Bindings
Deserializing order data from previous versions of Commerce Server with Commerce Server 10 could result in 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 will occur when the Order system attempts to deserialize your data into Microsoft.CommerceServer.* named (or custom derived) types, which no longer exist.  Order data can cause this error if:
·         You have Order data from previous versions of Commerce Server
·         You use the Weakly Typed properties of the Order objects to serialize arbitrary data to the MarshalledData column in your SQL tables.
What does this mean for you?
·         Update the SerializationBindings with your Orders Web Service, as well as any app.config / web.config / channelconfiguration.config files to include the SerializationBindings from old types to new.
·    Update the Sites/Site/orders/SerializationBindings section of ChannelConfiguration.config (non-shared context mode)
·    Update the configuration/CommerceServer/orders/SerializationBindings section of Web.config / App.config / ChannelConfiguration.config (shared context mode)
·    Update the configuration/CommerceServer/orders/SerializationBindings section of Web.config (Orders Web Service)
Note: The value specified in "OldType" do 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 the SerializationBindings, please see the topic named "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"/>
<[NAME].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.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"/>
<[NAME].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"/>
<[NAME].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"/>
</SerializationBindings>
Namespace [NAME]
[NAME] namespaces that previously used the prefix http://schemas.microsoft.com have been changed to http://schemas.commerceserver.net/2013/01.  This includes those used by the Commerce Server Web Services.
What does this mean for you?
·         In general this will be transparent, but if you have extended the web services, or modified the Desktop Business Tools using the Partner SDK, you may need to update any embedded schema references.
Commerce Server Web Service Updates
The Commerce Server Web Services have had their references updated to reflect the new class prefixes.
What does this mean for you?
·         If you manually package / deploy the Commerce Server Web Services with your solution, updates are required to the web service .asmx file and web.config files to reflect the new class name and assembly references
·         Any Commerce Server Web Services that are packaged using Site Packager (PUP) will need to be updated with corrected .aspx, .asmx, and web.config files to reflect the new class name and assembly references
Commerce Server Foundation Refactoring
A new assembly has been introduced into the Foundation.  CommerceServer.Foundation.Presentation.dll has been introduced to provide a clear separation between presentation, cross tier and application level classes.  As a result of this refactoring, classes have been moved to the appropriate assembly.  If you're looking for where an existing class has been moved, please refer to the CommerceServerAPIReference.chm that gets installed with the product.
What does this mean for you?
·         You will receive compile time errors for missing classes and namespaces since some of those classes may have been moved.
·         You will need to add a reference to the new CommerceServer.Foundation.Presentation assembly to your presentation level components
Authentication Deprecations
The following http modules have been deprecated and removed from Commerce Server.
·         CommerceDirectMailerAuthenticationModule (removed due to deprecation of the Direct Mailer feature)
·         [NAME] (legacy CS2002 feature that was deprecated in CS2007 - now removed from the product)
·         CommerceDataWarehouseAuthenticationModule (removed due to deprecation of the Data Warehouse feature)\
What does this mean for you?
·         If you're using any of these modules within your web.config or app.config, you will receive runtime errors when attempting to load the modules, since they no longer exist.
·         You must remove these modules from your configuration files.  If you were using these obsoleted modules, you'll need to migrate your code to use a new authentication scheme