Migrate from Vendr to Umbraco Commerce

Learn how to migrate a Vendr solution to Umbraco Commerce.

This guide provides a step-by-step approach to migrating a default Vendr solution to Umbraco Commerce.

Upgrade to the latest version of Vendr before continuing with the migration.

You can upgrade your installation by installation the latest version on top of the existing one.

You can find details on migrating the Checkout package as well as custom Payment Providers in the Further Migrations section of this article.

Key changes

Before outlining the exact steps, there are a few key changes to be aware of.

These changes will dictate the steps to take in the process of migrating to Umbraco Commerce.

Project, Package, and Namespace changes

Vendr
Umbraco Commerce

Vendr.Common

Umbraco.Commerce.Common

Vendr.Core

Umbraco.Commerce.Core

Vendr.Infrastructure

Umbraco.Commerce.Infrastructure

Vendr.Persistence

Umbraco.Commerce.Persistence

Vendr.Persistence.Sqlite

Umbraco.Commerce.Persistence.Sqlite

Vendr.Persistence.SqlServer

Umbraco.Commerce.Persistence.SqlServer

Vendr.Umbraco

Umbraco.Commerce.Cms

Vendr.Umbraco.Web

Umbraco.Commerce.Cms.Web

Vendr.Web

Umbraco.Commerce.Web

Vendr.Web.UI

Umbraco.Commerce.Web.StaticAssets

Vendr.Umbraco.Startup

Umbraco.Commerce.Cms.Startup

Vendr

Umbraco.Commerce

C# Class changes
  • Namespace changes as documented above.

  • All classes containing the Vendr keyword are now updated to UmbracoCommerce.

    • Examples: IVendrApi is now IUmbracoCommerceApi and AddVendr() is now AddUmbracoCommerce().

JavaScript changes
  • All vendr modules have changed to umbraco.commerce modules.

  • All vendr prefixed directives, services, and resources are now prefixed with uc.

  • All vendr prefixed events now follow this format: Umbraco.Commerce.{target}.{action}.

UI Changes
  • All static UI assets are served via a Razor Compiled Library (RCL) and are no longer found in the App_Plugins folder.

  • The folder within App_Plugins still exists for the static assets that are user configurable.

  • The folder with App_Plugins has been renamed from Vendr to UmbracoCommerce.

  • UI Config files have changed from .js files to .json.

Step 1: Replace dependencies

In this first step, we will be replacing all existing Vendr dependencies with Umbraco Commerce dependencies.

  1. Remove any installed Vendr packages (including Payment Providers):

dotnet remove package Vendr
  1. Take a backup of any Vendr-specific templates and config files you will want to reuse:

  2. Delete the Vendr App_Plugins folder:

rmdir App_Plugins\Vendr
  1. Install Umbraco.Commerce:

dotnet add package Umbraco.Commerce
  1. Install Umbraco Commerce packages including any payment providers previously removed.

  2. Reapply any backed-up config files in their new App_Plugins location.

  3. Move any backed-up templates into the ~/Views/UmbracoCommerce/Templates/ folder.

  4. Rename any config files with a .json file extension rather than .

  5. Compile your project against .NET 7.0.

Step 2: Update namespaces and entity names

Based on the Key Changes outlined above update all Vendr references to the new Umbraco Commerce alternatives. Ensure you update any Views/Partials that also reference these.

Step 3: Update the database

In this step, we will cover updating the database for Umbraco Commerce.

  1. Backup your database

  2. Rename database tables using the following query:

sp_rename vendrCurrency, umbracoCommerceCurrency;
sp_rename vendrTaxClass, umbracoCommerceTaxClass;
sp_rename vendrStock, umbracoCommerceStock;
sp_rename vendrOrderStatus, umbracoCommerceOrderStatus;
sp_rename vendrEmailTemplate, umbracoCommerceEmailTemplate;
sp_rename vendrPaymentMethod, umbracoCommercePaymentMethod;
sp_rename vendrShippingMethod, umbracoCommerceShippingMethod;
sp_rename vendrCountry, umbracoCommerceCountry;
sp_rename vendrRegion, umbracoCommerceRegion;
sp_rename vendrCurrencyAllowedCountry, umbracoCommerceCurrencyAllowedCountry;
sp_rename vendrPaymentMethodAllowedCountryRegion, umbracoCommercePaymentMethodAllowedCountryRegion;
sp_rename vendrPaymentMethodCountryRegionPrice, umbracoCommercePaymentMethodCountryRegionPrice;
sp_rename vendrPaymentMethodPaymentProviderSetting, umbracoCommercePaymentMethodPaymentProviderSetting;
sp_rename vendrShippingMethodAllowedCountryRegion, umbracoCommerceShippingMethodAllowedCountryRegion;
sp_rename vendrShippingMethodCountryRegionPrice, umbracoCommerceShippingMethodCountryRegionPrice;
sp_rename vendrTaxClassCountryRegionTaxRate, umbracoCommerceTaxClassCountryRegionTaxRate;
sp_rename vendrDiscount, umbracoCommerceDiscount;
sp_rename vendrDiscountCode, umbracoCommerceDiscountCode;
sp_rename vendrOrder, umbracoCommerceOrder;
sp_rename vendrOrderProperty, umbracoCommerceOrderProperty;
sp_rename vendrOrderLine, umbracoCommerceOrderLine;
sp_rename vendrOrderLineProperty, umbracoCommerceOrderLineProperty;
sp_rename vendrGiftCard, umbracoCommerceGiftCard;
sp_rename vendrOrderAppliedDiscountCode, umbracoCommerceOrderAppliedDiscountCode;
sp_rename vendrOrderAppliedGiftCard, umbracoCommerceOrderAppliedGiftCard;
sp_rename vendrStoreAllowedUserRole, umbracoCommerceStoreAllowedUserRole;
sp_rename vendrStoreAllowedUser, umbracoCommerceStoreAllowedUser;
sp_rename vendrFrozenPrice, umbracoCommerceFrozenPrice;
sp_rename vendrGiftCardProperty, umbracoCommerceGiftCardProperty;
sp_rename vendrActivityLog, umbracoCommerceActivityLog;
sp_rename vendrOrderPriceAdjustment, umbracoCommerceOrderPriceAdjustment;
sp_rename vendrOrderAmountAdjustment, umbracoCommerceOrderAmountAdjustment;
sp_rename vendrProductAttribute, umbracoCommerceProductAttribute;
sp_rename vendrProductAttributeValue, umbracoCommerceProductAttributeValue;
sp_rename vendrTranslatedValue, umbracoCommerceTranslatedValue;
sp_rename vendrProductAttributePreset, umbracoCommerceProductAttributePreset;
sp_rename vendrProductAttributePresetAllowedAttribute, umbracoCommerceProductAttributePresetAllowedAttribute;
sp_rename vendrOrderLineAttribute, umbracoCommerceOrderLineAttribute;
sp_rename vendrPrintTemplate, umbracoCommercePrintTemplate;
sp_rename vendrExportTemplate, umbracoCommerceExportTemplate;
sp_rename vendrStoreEntityTag, umbracoCommerceStoreEntityTag;
sp_rename vendrMigrations, umbracoCommerceMigrations;
sp_rename vendrStore, umbracoCommerceStore;
  1. Swap Vendr property editors for Umbraco Commerce property editors:

UPDATE umbracoDataType
SET propertyEditorAlias = REPLACE(propertyEditorAlias, 'Vendr.', 'Umbraco.Commerce.')
WHERE propertyEditorAlias LIKE 'Vendr.%'
  1. Swap the Vendr variants editor for the Umbraco Commerce variants editor in the block list data entry:

UPDATE umbracoPropertyData
SET textValue = REPLACE(textValue, 'Vendr.VariantsEditor', 'Umbraco.Commerce.VariantsEditor')
WHERE textValue LIKE '%Vendr.VariantsEditor%';
  1. Swap Vendr price/amount adjustments to Umbraco Commerce price/amount adjustments:

UPDATE umbracoCommerceOrderPriceAdjustment
SET type = REPLACE(type, 'Vendr.', 'Umbraco.Commerce.')
WHERE type LIKE '%Vendr.%';
UPDATE umbracoCommerceOrderAmountAdjustment
SET type = REPLACE(type, 'Vendr.', 'Umbraco.Commerce.')
WHERE type LIKE '%Vendr.%';
  1. Update template paths:

UPDATE umbracoCommerceEmailTemplate
SET templateView = REPLACE(templateView, '/App_Plugins/Vendr/templates/email', '/Views/UmbracoCommerce/Templates/Email')
WHERE templateView LIKE '%/Vendr/%';
UPDATE umbracoCommercePrintTemplate
SET templateView = REPLACE(templateView, '/App_Plugins/Vendr/templates/print', '/Views/UmbracoCommerce/Templates/Print')
WHERE templateView LIKE '%/Vendr/%';
UPDATE umbracoCommerceExportTemplate
SET templateView = REPLACE(templateView, '/App_Plugins/Vendr/templates/export', '/Views/UmbracoCommerce/Templates/Export')
WHERE templateView LIKE '%/Vendr/%';
  1. Update the migrations log:

UPDATE umbracoCommerceMigrations
SET migration = REPLACE(migration, 'Vendr.', 'Umbraco.Commerce.')
WHERE migration LIKE 'Vendr.%';
  1. Update the activity logs:

UPDATE umbracoCommerceActivityLog
SET eventType = REPLACE(eventType, 'vendr/', 'commerce/')
WHERE eventType LIKE 'vendr/%';

Step 4: Finalizing the migration

  1. Delete any obj/bin folders in your projects to ensure a clean build.

  2. Recompile all projects and ensure all dependencies are restored correctly

  3. Delete the existing Vendr license files in the umbraco\Licenses folder.

  4. Add your new Umbraco.Commerce license key to the appSettings.json file:

"Umbraco"" {
  "Licenses": {
    "Umbraco.Commerce": "YOUR_LICENSE_KEY"
  }
}
  1. Update any payment gateways that use a global webhook:

https://{site_url}/umbraco/commerce/payment/callback/{payment_provider_alias}/{payment_method_id}/
  1. Run the project.

It is highly recommended to ensure everything works as expected, before moving on to migrating packages and custom payment providers.

Further Migrations

If you have been using the Vendr Checkout package, you will need to follow some additional steps to migrate this package to Umbraco Commerce. Follow the link below for a complete guide:

Migrate Umbraco Commerce Checkout

Any custom payment providers used with Vendr also need to be migrated to Umbraco Commerce. Follow the link below to find detailed steps on how to perform this migration:

Migrate custom Payment Providers

Last updated