from Ubercart to Drupal Commerce

(notes from a session at DrupalCon 2010)

Commerce Guys' vision: make Drupal the #1 platform for ecommerce

  • Ubercart has a lot of legacy code and can't easily take advantage of D7's advances
  • D7 has tons of features for a killer ecommerce platform, only needs the ecommerce features: checkout, shipping, payment, security.

Drupal Commerce development principles

  • hard separation of APIs from UI
  • core development (like payment) separated from plugin modules (like PayPal) so they don't hold up each other's development
  • use D7's core entity and field systems to re-implement products, orders, line items, receipts.
  • more structured product entry and flexible add-to-cart form display
  • customizable checkout flow with form API integration
  • stronger lateral integration with key modules like Views (for display) and Rules (for role-based discounts, location-based tax, etc.)
  • strictly enforced code and documentation standards
  • plan to release distributions for specific use cases - nonprofits, etc.


  • catalog is a default View of products with their SKUs, titles, prices.
  • each product has D7 fields rather than attributes ... adding a new field option doesn't auto-generate a new SKU, but a contrib module will do that. Trying to keep core lean.
  • "Add to cart" button/selector is a display format for the referenced product, so each SKU doesn't necessarily have to have its own representation in the catalog
  • Order entity (not a node) available to Views. Customizable-format order numbers will be separate from auto-increment orderid to prevent disconcerting gaps when orders are not completed.
  • line items (formerily order products) are also entities, so you can edit an order to add/remove/edit line items.
  • checkout panes are now built with form API, so can be altered through standard hooks.
  • no more serialized arrays!  Only objects!  Hooray!

Migration path may be tricky -- CCK to D7 fields upgrade path is yet to be determined.

  • but current Ubercart data is not in CCK, so that may not be an obstacle
  • there will probably be a migration module, rather than an upgrade script.
Taxonomy upgrade extras: