2. Contoso
S u i t e s
An Overview of
Episerver
Commerce
2
3. Contoso
S u i t e s
Episerver Commerce is a complete digital
commerce suite that has the industry’s
highest ROI.
It has everything you need to manage
catalogues, orders, customer data and
payments across regions. The solution also
helps you easily provide better experiences.
You can seamlessly combine content and
product information, and automatically
personalize journeys using artificial
intelligence.
What is it?
3
4. Episerver
Total Economic Impact™ | Episerver versus the Competition
Content management effort
reduction savings:
$1.1 million
Episerver on Microsoft Azure
savings over on-premises:
$875 thousand
Incremental revenue
uplift:
$4.6 million
Subscription and
conversion costs:
$1.2 million
Forrester interviewed 6 customers and found a composite
experienced benefits of $6.5M over 3 years versus costs of
$1.2M, delivering a net present value of $5.3M and a
443% return on investment (ROI) with a payback under 6
months
Source: Forrester Consulting, August 2018
5. Contoso
S u i t e s
Solution
Overview
Project structure within an standard CMS and
Episerver Commerce setup.
5
CMS
Commerce
ASP.NET Project
ASP.NET Project
• Catalogue Management
• Marketing
• Customer/Orders (BETA)
• Customer Management
• Markets
• Order Management
• Admin & Configuration
6. Contoso
S u i t e s
Catalogue View
Gives the ability to manage categories, products and variants.
6
Good
• Familiar CMS View
• Supports Drag and
Drop
• Reordering & Filtering
• Pricing & Inventory
Bad
• Sometimes Buggy/Slow
• Direct Saving
• Poor Block Support
• Weird Asset System
7. Contoso
S u i t e s
Marketing View
Allows for campaign and discounts to be set up for items, orders and shipping.
7
Good
• Nice interface
• Ability to exclude combinations
• Easy to extend in code
Bad
• Exclusions in a weird place
8. Contoso
S u i t e s
Commerce Application – The Good
For managing customer, carts, purchase orders, markets and settings such as meta data.
8
System Features
• Markets
• Warehouses
• Payments
• Tax
• Shipping
Order Features
• Carts (Serializable)
• Customer Data
• Purchase Orders
• Delivery Options
• Admin Searching Carts/POs
9. Contoso
S u i t e s
Commerce Application – The Bad, and the Ugly
For managing customer, carts, purchase orders, markets and settings such as meta data.
9
• Slow
• Ugly
• Leftover Features
• Confusing Navigation
• Hard to extend
• Catalogue Manager Oddities
10. Contoso
S u i t e s
However…Customer Service UI (Beta)
Replacing a lot of what we had in the commerce application with shiny UI.
10
12. Contoso
S u i t e s
Markets
Allows for grouping of countries, languages and currencies in to unique combinations. These can then be used against to
products, pricing and campaigns to show different content to different markets.
12
13. Contoso
S u i t e s
Warehouses
Allows for the configuration of locations that will store inventory. Can be physical, pickup points or online warehouses.
13
• Pretty Easy to Set up
• Multiple types of warehouse
14. Contoso
S u i t e s
Shipping
14
Jurisdiction Group
Jurisdiction
Configurate shipping providers, methods a and groups for showing correct shipping options
Provider
SingleBasketShippingProvider: IShippingPlugin, IShippingGateway
15. Contoso
S u i t e s
Payments
Configures payment providers allows in a cart process for each market.
15
• Allows you to create your own payment handlers
• Allows for custom parameters for config
• Allows filtering for different shipping methods
16. Contoso
S u i t e s
Tax
Configures tax and tax jurisdiction for cart processing.
16
17. Contoso
S u i t e s
Orders
Management of carts and purchase orders.
17
• Lots of views/reports
• Functionary often a little hidden /
hard to find
• Difficult to customize
• Migrating to the CSR (yay)
19. Contoso
S u i t e s
Catalogue
Modelling the catalogue and working within the editing interface
19
• Think about the structure and the names ahead of time.
• Model the catalogue as the meta system does not sync well (OOTB).
• Try not to have multiple catalogues if requiring different routes
• Add asset images for catalogue icons
• Understand which parts instantly save and
the impact
• Remove the catalogue name using the
HierarchicalCatalogPartialRouter
20. Contoso
S u i t e s
Cart
Working with the inbuilt cart data structure and workflow
20
• Always write code to work of ICart to support any cart current or existing.
• Be careful when calling cart.ApplyDiscounts() as once apply to the cart for the rest of it’s life.
• When running cart validation or editing validation make sure to run them in the correct order
• Make sure you have the correct inventory Tracked value set on the Variant
• Ignore the cart searching features if using the Serialized Cart
• Make sure to use your own custom payment provider when creating the payment object
21. Contoso
S u i t e s
Orders
Handling orders across carts and purchase orders
21
• Be aware of the different between the ICart implementations
• Make sure you thoroughly check breaking changes on Commerce Upgrades
• Make sure to set the address ID to a unique value when creating an Order
• Specifically work with a PurchaseOrder type
• Be aware that Tax recalculates when you load and resave a PO
• Use the default WishList type for a wishlist. Be aware that cart cleaning ignores this only.
• Be careful with rounding on Tax
• Be aware that the default shipping Helper does not handle shipping discounts out of the box
22. Contoso
S u i t e s
Implementing Modules
Replacing default implementations with custom logic
22
• Make sure to look at the reference implementation by Decompiling the assembly
• Restart the environment to make sure the code is picked up
• Make sure to register any new modules the DI framework
• Unit test modules as much as possible
23. Contoso
S u i t e s
Meta Fields
Extending inbuilt types with extra data (carts, purchase orders, line items, addresses etc)
23
• Configured in Commerce Manager
• Does not have a code sync feature out of the box
• Difficult to maintain across environments
• Cart & Purchase Order types mis-matched (Money type)
• Purchase Order Conversion Issues
• It’s Hard to delete meta fields
• Use XML meta export/import
24. Contoso
S u i t e s
Database
The database, dynamic and powerful.
24
• Learn the structure of the database (Cart changes)
• Profile stored procedures such as the Order search
• Don’t be afraid to create your own queries
• Consider direct database work for importing bypassing APIs
• Be aware that the database generates dynamic tables when things change
• For DXC support readonly mode for failover
25. Contoso
S u i t e s
Importing & Syncing Data
Syncing catalogue data - considerations
25
• Consider the size of the data that you are syncing
• We aware of using scheduled jobs for large datasets
• If using scheduled jobs support cancellation and updates for admin users.
• Be aware of XML and CSV import mechanisms
• Speed up imports via code by disabling find indexing an reindexing after
• For future catalogues Azure WebJobs are coming!!
26. Contoso
S u i t e s
Tips
Tips from a developer who learnt the hard way
26
• Set up and refer to quicksilver always for any issues https://github.com/episerver/Quicksilver
• Make sure you thoroughly check breaking changes on Commerce Upgrades
• Upgrade to the latest wherever possible (Else Quan Mai will get angry)
• Ignore blocks where possible for Commerce or use Global shared blocks
• Logs issues everywhere & create admin tools to identify issues
• Post on Episerver world and wait for Quan Mai to get back to you (buy his book)
• Create helper libraries for accessing Commerce code
• Ignore the publish flag in Commerce manager for the catalogue
27. Contoso
S u i t e s
27
Latest Features (V12)
• Support personalization service 1.4 for improved GDPR support
• CSR UI Beta – Replacement
• The ability to copy discounts in the marketing section
• MarketId, MarketName, and PricesIncludeTax added to IOrderGrop (Imarket obsoleted)
• Calculators have been restructured for efficiency
• Calculators do not recalculate when order have no changes
• New rounding strategy performs all promotion calculations with full precision and rounds only once
• Ability to select multiple markets for a marketing campaign
• Multiple data collection updates for reporting.
Episerver Commerce was originally a product called Mediachase which Episerver acquired in March 2012
In that the last 7 years Episerver have continually improving commerce, bring legacy mediachase features in to the native CMS Canvas experience
Today it has a powerful set of features and a complex ability to customize features
Integration with tracking features for Episerver insight, campaign for machine learning driven personalization
And that time to value has been borne out by independent analyst firms like Forrester.
Through customer interviews, data collection and the subsequent financial analysis, Forrester concluded that Episerver provides customers a 443% return on investment over 3 years with a break-even point of less than 6 months – and leads the industry for rapid time to value.
What the Forrester TEI affords is a meticulous process to clearly and unbiasedly prove the results the average Digital Experience Cloud customer is generating in both the short and long term.
These findings unequivocally verify that Episerver makes your company incredibly more valuable and your staff decidedly more productive.
CMS View looks like the Episerver CMS we all know and love with the DOJO features
Commerce manager is a legacy product that works quite different to the CMS. It’s slow clunky, metafields are a mess, doesn’t always work great
Catalogue design is important, try to reduce the number of items as Products and Variants by rearranging the category structure
Direct saving with items such as inventory and pricing means you don’t get the familiar editing prompts which can be confusing
Commerce items are essentially pages yet the block support is fundamentally broken for the standard “For this page” blocks. This forces everything in to being shared.
Weird asset system for adding media with a random string group key. However this
A lot of out of the box discounts
Easily extendible in code
Lost of great features out of the box
Extendibility of overriding these features is mega powerful
Still in Beta
Been in Beta quite a while
Already UI a little tricky to use in places
- Markets allow you to segment these configurations for location allowing complex global scenarios
- Allow you to set up multiple warehouses with different location. These for example allow you to show the distance of a pickup location so customers can see the location that’s closest
Jurisdiction groups contain jurisdictions
Providers out of the box come with a set of shipping providers but you can create your own by inheriting :IShippingPlugin, IShippingGateway. Often needs a restart to pick up the class file, can be dodgy.
Methods are the key, they contain the base price and the provider and the jurisdiction group. You can only assign a method to a group, so each group needs to be granular
Makes sure any defaults are deleted rather than deactivated
Lots of options
Can create your own by implement IPaymentPlugin Often needs a restart to pick up the class file, can be dodgy.
Can filter to specific markets
- Make sure when setting up a payment in your basket to use Your provider
Lost of great features out of the box
Extendibility of overriding these features is mega powerful
Lost of great features out of the box
Extendibility of overriding these features is mega powerful
As you see the types in the CMS on the grid views try and sensibly name everything granular
Multiple catalogues do not work well in Episerver when trying to use the HierarchicalCatalogPartialRouter. Try to route all commerce through a single CMS item.
Inventory/Pricing save instantly and do not events for the Variant such as the Find Indexing, be aware of this in case of any custom indexing
Then serializable cart and order cart both support the ICart so working with this is beneficial
Validation if in the wrong order can lead to odd results
The track field on the Variant not on the Inventory
Lots of options
Can create your own by implement IPaymentPlugin Often needs a restart to pick up the class file, can be dodgy.
Can filter to specific markets
- Make sure when setting up a payment in your basket to use Your provider
Often meta fields do not sync properly and require restarts to delete fields
Sometimes the fields don’t show in the field view but do in the meta class view
Editing meta fields dynamically edits the schema of database tables to add columns dynamically. Can be flaky, check tables and delete/re-add
DXC has failover out of the box. In a failover scenarios a database might go in to failover mode.
Blog post on speeding import
auto heal & timeouts in DXC can affect scheduled jobs
Logging on importing very important
CSR – Already partially released. Require the beta feature enabled