Blog posts by Tuan Le2019-04-23T13:51:38.0000000Z/blogs/tuan-le/Optimizely WorldDigital marketing & Product merchandising in Episerver Commerce implementation/blogs/tuan-le/dates/2019/4/digital-marketing--product-merchandising-in-episerver-commerce-implementation/2019-04-23T13:51:38.0000000Z<p><span style="font-weight: 400;">In my opinion, an e-commerce site is essentially a virtual store where digital marketers drive traffic to, and where merchandisers display products with or without promotions for customers to discover products and add wanted items to the shopping cart then proceed to checkout, make payment to place purchase orders for fulfilment via delivery or collection.</span></p>
<p><img src="/link/0de92222647e48c2a89b440a3211822c.aspx" /></p>
<p><span style="font-weight: 400;">Therefore, in any Episerver Commerce implementation, developers will have to provide the following functions which can be grouped under one of above 7 functional components.</span></p>
<ul>
<li>Digital marketing<span style="font-weight: 400;">: functions related to attracting traffic to the website using digital channels such as search engine, advertisement network, affiliate network, social media or email.</span></li>
<li>Product merchandising<span style="font-weight: 400;">: functions related to displaying products and offers on the website to drive sales.</span></li>
<li>Customer<span style="font-weight: 400;">: functions for users to register, manage their accounts, view order history as well as functions for customer service department to receive inquiry, chat with customers, view orders or place telephone / mail orders.</span></li>
<li>Product discovery<span style="font-weight: 400;">: functions for users to </span></li>
<ul>
<li><span style="font-weight: 400;">Find products through navigation or search</span></li>
<li><span style="font-weight: 400;">Learn more about products with all the required details including price, product images, video, data sheets</span></li>
<li><span style="font-weight: 400;">Compare related products</span></li>
<li><span style="font-weight: 400;">See if products are in stock online and/or in store</span></li>
<li><span style="font-weight: 400;">Locate store to visit for real feel of products </span></li>
</ul>
<li>Promotion<span style="font-weight: 400;">: functions related to stimulate sales through promotions / discounts such as percent off, buy X get Y free, free shipping ...</span></li>
<li>Conversion<span style="font-weight: 400;">: functions for users to add items to carts, proceed to checkout, make payment to place orders.</span></li>
<li>Order fulfilment<span style="font-weight: 400;">: functions related to fulfilling orders which is typically done by sending order data to back-end systems and notifying customers when orders have been shipped or ready for collection.</span></li>
</ul>
<p><span style="font-weight: 400;">When implementation an ecommerce site using Episerver Commerce, from technical perspectives, developers can always refer to a very comprehensive </span><a href="/link/d73f7bea32794abe99494974557df14a.aspx"><span style="font-weight: 400;">developer’s guide</span></a><span style="font-weight: 400;"> in Episerver World, and the 2 invaluable books written by </span><a href="/link/5341f632537c4b0ab6b8fb651bd310f8.aspx?userid=9b7dad33-b57b-e011-a4b8-0018717a8c82"><span style="font-weight: 400;">Quan Mai</span></a><span style="font-weight: 400;">: </span><a href="https://leanpub.com/proepiservercommerce"><span style="font-weight: 400;">Pro Episerver Commerce</span></a><span style="font-weight: 400;"> and </span><a href="https://leanpub.com/epicommercerecipes"><span style="font-weight: 400;">Episerver Commerce recipes</span></a><span style="font-weight: 400;">. However, I feel that new Episerver Commerce developers, including those with extensive Episerver CMS experience, might still feel a bit lost in their first Episerver Commerce project if they don’t have a solid understanding of e-commerce concepts especially in relation to </span>digital marketing<span style="font-weight: 400;"> and </span>product merchandising<span style="font-weight: 400;">.</span></p>
<p><span style="font-weight: 400;">Therefore, I decided to write this blog post to discuss the above 2 concepts and link them to Episerver Commerce technical aspects. In other words, this blog post will not deep dive into technical details but trying to connect the dots so that new Episerver Commerce developers can understand </span>digital marketing<span style="font-weight: 400;"> and </span>product merchandising<span style="font-weight: 400;"> functional components in the context of Episerver implementation. So if you’re an Episerver developer or tech lead who is relatively new to Episerver Commerce, I hope that this blog post would be useful.</span></p>
<p><span style="font-weight: 400;">Remark</span><span style="font-weight: 400;">: While an e-commerce site can sell physical products or non-physical products and target consumers or businesses, this blog is about B2C e-commerce site selling physical products in order to make the content more concise and to the point. However, general concepts are still applicable to B2B and non-physical products.</span></p>
<h1><span style="font-weight: 400;">Digital marketing</span></h1>
<p><span style="font-weight: 400;">An e-commerce site is a dead site without traffic, hence in any Episerver Commerce implementation, developers must pay close attention to the requirements for digital marketing which is the driving force for site traffic. However, without proper planning, digital marketing typically comes late into the picture hence requiring rework which can be expensive and might potentially cause some delay or even destabilise the site. Therefore, it is advisable that you should have some sessions with digital marketers to understand their requirements early in the build process.</span></p>
<p><span style="font-weight: 400;">Firstly, you should understand that the most important tools that any digital marketers would need are Google Tag Manager (GTM) and Google Analytics (GA) to collect site statistics including traffic, user behaviours and conversions. Therefore, it is a must to include GTM code snippet in the master template so that GTM is enabled for all pages. GA tracking code can then be installed via GTM. In addition, GA Enhanced Commerce should be enabled in all Episerver Commerce implementation with necessary data layers for which you can refer to </span><a href="https://krompaco.nu/2015/03/google-analytics-enhanced-ecommerce-features-with-tag-manager/"><span style="font-weight: 400;">this blog post</span></a><span style="font-weight: 400;"> as a good starting point. Besides, marketers might need additional tools such as Hotjar for heatmapping or Facebook tracking pixel which can also be installed via GTM.</span></p>
<p><span style="font-weight: 400;">Secondly, please bear in mind that digital marketers use several channels to acquire visitors namely organic search, paid search, online advertisement, social, email, affiliate, referral and of course direct traffic. And as a developer, you must get the followings right for digital marketers to do their jobs effectively.</span></p>
<ul>
<li>Technical SEO<span style="font-weight: 400;">: </span><span style="font-weight: 400;">Organic search results in search engines are based on relevance to the search terms and exclude advertisements</span><span style="font-weight: 400;"> or organic search is free traffic coming to the e-commerce sites. And SEO (Search Engine Optimization) is the practice of increasing the quantity and quality of traffic to your website through organic search engine results. Hence as a developer, you will need to support digital marketers to achieve their SEO goals including: </span></li>
<ul>
<li><span style="font-weight: 400;">Providing </span><a href="https://blog.nicolaayan.com/2018/11/a-simple-editable-robots-txt-in-episerver/"><span style="font-weight: 400;">editable robots.txt in Episerver</span></a><span style="font-weight: 400;"> to instruct search engine robots how to crawl & index pages. </span></li>
<li><span style="font-weight: 400;">Generating sitemap to inform search engines about pages on your sites that are available for crawling. This can be done using </span><a href="https://github.com/Geta/SEO.Sitemaps"><span style="font-weight: 400;">an existing Nuget package</span></a><span style="font-weight: 400;"> for Episerver.</span></li>
<li><span style="font-weight: 400;">Maintaining </span><a href="https://www.practicalecommerce.com/SEO-Optimal-Ecommerce-URLs"><span style="font-weight: 400;">SEO-friendly URL structure</span></a><span style="font-weight: 400;"> especially by customising product URLs in Episerver via </span><a href="https://vimvq1987.com/redirecting-your-product-urls-in-episerver-commerce/"><span style="font-weight: 400;">redirection</span></a><span style="font-weight: 400;"> to provide both humans and search engines with an easy-to-understand indication of what the destination page will be about.</span></li>
<li><span style="font-weight: 400;">Rendering the pages especially product listing and product detail pages with proper </span><a href="https://moz.com/blog/seo-meta-tags"><span style="font-weight: 400;">meta tags</span></a><span style="font-weight: 400;"> (titles and </span><a href="https://www.practicalecommerce.com/How-to-Write-Traffic-generating-Meta-Descriptions-for-Ecommerce"><span style="font-weight: 400;">descriptions</span></a><span style="font-weight: 400;">), and </span><a href="https://inchoo.net/online-marketing/ideal-heading-tag-structure-ecommerce-websites/"><span style="font-weight: 400;">heading tags</span></a><span style="font-weight: 400;"> for on-page SEO.</span></li>
<li><span style="font-weight: 400;">Using proper </span><a href="https://schema.org/"><span style="font-weight: 400;">schema markup</span></a><span style="font-weight: 400;"> for </span><a href="https://moz.com/ugc/5-essential-ecommerce-rich-snippets-for-your-store"><span style="font-weight: 400;">products, reviews & ratings, pricing, availability</span></a><span style="font-weight: 400;"> and </span><a href="https://searchengineland.com/optimized-store-landing-pages-important-part-local-search-strategy-280355"><span style="font-weight: 400;">stores</span></a><span style="font-weight: 400;"> to increase product visibility and enhance click-through rates (CTR).</span></li>
</ul>
<li>Social sharing: <span style="font-weight: 400;">to produce the best visual display when a product is shared on social media, you must implement </span><a href="https://developers.facebook.com/docs/payments/product/"><span style="font-weight: 400;">Open Graph tags</span></a><span style="font-weight: 400;"> and </span><a href="https://www.practicalecommerce.com/How-to-Set-Up-a-Twitter-Card-for-Your-Ecommerce-Site"><span style="font-weight: 400;">Twitter cards</span></a><span style="font-weight: 400;"> so that social media networks know how to render rich social snippets for your contents which will boost engagements and drive traffic to the site.</span></li>
<li>Product feed generation: <a href="https://en.wikipedia.org/wiki/Product_feed"><span style="font-weight: 400;">product data feed</span></a><span style="font-weight: 400;"> is a file made up of a list of products and attributes of those products organized so that each product can be displayed, advertised or compared. Product feeds are used in various marketing channels on which r</span><span style="font-weight: 400;">etailers spend most of their marketing budgets</span><span style="font-weight: 400;">: </span><span style="font-weight: 400;">paid price comparison websites, paid search affiliates, affiliate networks, marketplaces, and social networks. Google product feed is the most widely used product feed format which can be generated using an available </span><a href="https://github.com/Geta/GoogleProductFeed"><span style="font-weight: 400;">Nuget package for Episerver</span></a><span style="font-weight: 400;">. Digital marketers typically use another product feed management tool to produce feeds in other formats if required.</span></li>
<li>Email Direct Marketing:<span style="font-weight: 400;"> EDM refers to the process of building an email database of customers and/or potential customers and sending them communications or special offers directly. It is a low-cost channel which is used extensively by marketers to build brand loyalty or convert sales. Outgoing emails are typically authored and distributed by Marketing Automation software including Episerver’s very own Episerver Campaign, however, email database is built with newsletter subscription function that you will have to provide on the website for both registered and non-registered users with custom integration or </span><a href="/link/260ff2fe11e14a1c8de398e69e5dfc16.aspx"><span style="font-weight: 400;">Episerver Forms Marketing Automation Integration connectors</span></a><span style="font-weight: 400;"> available for a number of well-known Marketing Automation software but your client would need to purchase a license for the connector. In addition, you might also need to send product feeds and configure client-side scripts to send user behavioural events such as cart abandonment to trigger context-based EDM.</span></li>
<li>Landing page<span style="font-weight: 400;">: a </span><a href="https://www.wsiworld.com/blog/the-importance-of-landing-pages/"><span style="font-weight: 400;">landing page</span></a><span style="font-weight: 400;"> is any web page that consumers can land on, but in the digital marketing realm, it’s usually a standalone page, distinct from your homepage or any other page, that serves a single and focused purpose. Therefore, digital marketers will spend significant time and effort to create good landing pages for their campaigns whether to convince users to provide personal info when signing up for some offers or to persuade potential customers to make some purchases. Your job as a developer is to provide a good toolbox for marketers with:</span></li>
<ul>
<li><span style="font-weight: 400;">A number of reusable content blocks such as individual product block, related products block, newsletter subscription, search box …</span></li>
<li><span style="font-weight: 400;">A number of custom form controls in customisable look-and-feel Episerver Forms with </span><a href="https://blog.nicolaayan.com/2018/09/episerver-dynamically-populate-a-second-dropdown-based-on-first/"><span style="font-weight: 400;">extended functions</span></a><span style="font-weight: 400;"> for marketers to create forms to collect information.</span></li>
<li><span style="font-weight: 400;">A few landing page templates for specific use-cases for quick authoring.</span></li>
<li><span style="font-weight: 400;">A very flexible landing page template with one single responsive grid-based content area sandwiched between the site-wide header and footer that can house as many content blocks as editors wish. For that purpose, you can use an available </span><a href="https://github.com/valdisiljuconoks/EPiBootstrapArea"><span style="font-weight: 400;">Bootstrap-based content area for Episerver</span></a><span style="font-weight: 400;"> or choose your own </span><a href="https://www.episerver.com/learn/resources/blog/corey-hamilton/which-responsive-framework-is-right-for-you-/"><span style="font-weight: 400;">responsive framework</span></a><span style="font-weight: 400;">. </span></li>
</ul>
</ul>
<h1><span style="font-weight: 400;">Product merchandising</span></h1>
<p><span style="font-weight: 400;">According to </span><a href="https://www.practicalecommerce.com/7-Merchandising-Lessons-from-Top-Online-Retailers"><span style="font-weight: 400;">PracticalCommerce</span></a><span style="font-weight: 400;">, e-commerce merchandising is the art and science of displaying products or offers on a website with the goal of increasing sales. Therefore, when building an e-commerce site, you need to provide all the required tools and functions for merchandisers to do their jobs. However, similar to digital marketing, some merchandising requirements can be overshadowed by more explicit and transactional requirements hence might be introduced later in the build process even after go-live hence you end up seeing some frustrating merchandisers. </span></p>
<p><span style="font-weight: 400;">Therefore, it’s important to elicit requirements from merchandisers early in your discovery phase to understand what you need to build for them. There are 4 key areas for merchandising namely category, product page, homepage and checkout.</span></p>
<ul>
<li><a href="https://productcoalition.com/merchandising-your-homepage-to-win-d9d31f1dee01"><span style="font-weight: 400;">Homepage merchandising</span></a><span style="font-weight: 400;">: Homepage is certainly the hub for navigation hence merchandisers want to guide their visitors to find what they want to reduce bounce rate and improve conversions. Homepage merchandising typically involves the provision of hero image content block to display latest offer / promotion and content block for featured brands, featured products, new arrivals, best selling products and seasonal product offerings. In addition, merchandisers usually need a block to display list of products a visitor recently viewed which can be implemented using Episerver cart where you maintain the last 10 or 20 products that a user recently viewed. You should not use a custom table to keep track of all viewed products as the table can become very huge and significantly affect the performance. Some retailer want to show “Recently viewed products” block as part of the site-wide footer.</span></li>
<li><a href="https://www.ecommerceillustrated.com/category-merchandising/"><span style="font-weight: 400;">Category merchandising</span></a><span style="font-weight: 400;">: optimizing the presentation of products in the category and sub-category grid pages (product listing page) is the most important technique used by merchandisers to influence a customer's purchase decision in a given buying context. In Episerver Commerce implementation, </span><a href="/link/c4d2d57a9dfc44f99a364355cc766d08.aspx"><span style="font-weight: 400;">Episerver Find</span></a><span style="font-weight: 400;"> should be used to retrieve the product list for product listing page and the following functions must be built to enable merchandisers to do their job effectively:</span></li>
<ul>
<li><span style="font-weight: 400;">Filters and facets: sufficient filters and facets should be provided for customers to refine the product list in order to find the wanted items for purchase. These must be done by defining </span><a href="/link/735d13cd61d945fea9af717653d07737.aspx"><span style="font-weight: 400;">catalog contents</span></a><span style="font-weight: 400;"> with adequate product attributes and use Episerver Find out of the box functions for </span><a href="/link/c4b497a341a743c2bb4a43db5d011711.aspx"><span style="font-weight: 400;">facets</span></a><span style="font-weight: 400;"> and </span><a href="/link/21fef25e8d7e4df9bec4a0e0eed896e8.aspx"><span style="font-weight: 400;">filters</span></a><span style="font-weight: 400;">.</span></li>
<li><span style="font-weight: 400;">Sort options: various sort options are required such as popularity / best selling, featured (curated), price, name, arrival date and also relevance. Episerver Find provides out-of-the-box </span><a href="/link/ff4b65b0ae8d4e5798231d3745cceadf.aspx"><span style="font-weight: 400;">sorting functions</span></a><span style="font-weight: 400;"> where you can modify sorting rule to match merchandising requirements. You might need to introduce additional invisible product attributes for sorting purposes. Different customers will have different preferred default sort options which can vary at category levels.</span></li>
<li><span style="font-weight: 400;">Spotlight content: some e-commerce sites want to have separate blocks above the product grid to feature certain products such as “best sellers”, “hot new releases” … These can be implemented as content blocks in Episerver where products are retrieved from Episerver Find based on certain criteria or hand-picked by merchandisers.</span></li>
<li><span style="font-weight: 400;">Pinned products: merchandisers usually want to pin certain products on top of the list to promote sales which can be implemented either by creating a content area in category node for merchandisers to drag and drop pinned products there or by introducing a “pinned” attribute with ranking in each product.</span></li>
<li><span style="font-weight: 400;">Boost and bury: this is the mechanism for merchandisers to boost some products to the top and bury some products at the bottom based on pre-defined rules which can be common across all categories or specific for an individual category. For example, boosting products with excessive stocks and bury products with low stocks. Your job is to elicit these boost and bury rules, add new attributes to products if required as the basis for rule evaluations that can be built into Episerver Find </span><a href="/link/ff4b65b0ae8d4e5798231d3745cceadf.aspx"><span style="font-weight: 400;">sort option</span></a><span style="font-weight: 400;">, and provide options for merchandisers to choose which rules to apply.</span></li>
<li><span style="font-weight: 400;">External merchandising: finally, some merchandisers might want to use external merchandising service such as </span><a href="/link/6f83679b702c4df8b436d3aed97afd8b.aspx"><span style="font-weight: 400;">Episerver Perform</span></a><span style="font-weight: 400;"> or </span><a href="https://www.bloomreach.com/en"><span style="font-weight: 400;">BloomReach</span></a><span style="font-weight: 400;"> to recommend relevant products based on AI and other personalisation mechanisms. And this is where you will need to understand their APIs for integration into Episerver Commerce. </span></li>
</ul>
<li><a href="https://www.ecommerceillustrated.com/ecommerce-guide-merchandising-product-pages/"><span style="font-weight: 400;">Product page merchandising</span></a><span style="font-weight: 400;">: merchandisers use product detail pages extensively to upsell, cross-sell and recommend products by showing blocks of other products related to the main products typically based on </span><a href="/link/9562e99a5ab2407b9061fd37cc7afcf6.aspx"><span style="font-weight: 400;">product association relations</span></a><span style="font-weight: 400;"> in Episerver. These relations can be either statically defined in product catalog or dynamically populated by scheduled jobs looking at transaction history or external merchandising tool such as those determine visually similar products through image processing.</span></li>
<ul>
<li><span style="font-weight: 400;">Upsell: Presents newer or better versions of the product being viewed to guide the customer towards the same product but at a higher price point. This may be a newer or deluxe model, a larger size or quantity, or the item as part of a bundle of products.</span></li>
<li><span style="font-weight: 400;">Cross-sell: Shows related products which are complementary to the product being viewed. The intent is to surface related products that the customer would be interested in buying in addition to the product being viewed to increase items per order and average order value. Common cross-sell techniques include “customers who bought X also bought” or “frequently bought together” or “Shop this look”</span></li>
<li><span style="font-weight: 400;">Product recommendation: show either alternative products for the product being viewed or seemingly randomized products based on what’s trending, what’s new or other merchandising logic. Common product recommendation techniques include “Similar styles”, “You may also like” or “customers who viewed X also viewed”.</span></li>
</ul>
<li><a href="https://www.ecommerceillustrated.com/merchandising-cart-pages/"><span style="font-weight: 400;">Checkout merchandising</span></a><span style="font-weight: 400;">: merchandisers also want to place blocks of related products in cart page such as “Items related to your cart”, “Customers also bought” or “Products you might like” which are built based on </span><a href="/link/9562e99a5ab2407b9061fd37cc7afcf6.aspx"><span style="font-weight: 400;">product association relations</span></a><span style="font-weight: 400;"> in Episerver. In addition, merchandisers also want to place in-line cross-sell or upsell to persuade customers to </span></li>
<ul>
<li><span style="font-weight: 400;">buy add-ons such as extended warranty packages (also use </span><a href="/link/9562e99a5ab2407b9061fd37cc7afcf6.aspx"><span style="font-weight: 400;">product association relations</span></a><span style="font-weight: 400;">) </span></li>
<li><span style="font-weight: 400;">or to increase quantity / add another product for further discounts or free shipping. There is no out of the box function in Episerver to do this hence you might have to customise Episerver </span><a href="/link/3be81369d7124a7189912d90e80605e3.aspx"><span style="font-weight: 400;">promotion engine</span></a><span style="font-weight: 400;">.</span></li>
</ul>
</ul>
<h1><span style="font-weight: 400;">Conclusion</span></h1>
<p><span style="font-weight: 400;">As discussed above, out of 7 functional components in a typical Episerver Commerce implementation, digital marketing and product merchandising functional components can be overshadowed by explicit transactional ones namely customer, product discovery, promotion, conversion and order fulfilment. Therefore, it is important for developers to pay attentions to digital marketing and product merchandising to ensure business requirements are fully captured and implemented using available Episerver Commerce building blocks.</span></p>How to effectively tackle the takeover of an Episerver Commerce site/blogs/tuan-le/dates/2019/4/how-to-effectively-tackle-the-takeover-of-an-episerver-commerce-site/2019-04-03T11:03:06.0000000Z<p><span>I have participated in several projects over the past few years where the client asked us to come in and take over their Episerver Commerce sites from the current team, which may either be in-house or provided by another Episerver partner.</span></p>
<p><span>In my opinion, taking over Episerver Commerce sites can be quite messy given the complex nature of any commerce implementation as compared to CMS. In addition, short hand-over periods and a lack of up-to-date documentation can pose some challenges.</span></p>
<p><span>However, by following the simple TACKLE framework I outlined below, we have succeeded in a number of Episerver Commerce takeover projects, including taking over sites for big retailers. Therefore, I’ve decided to write this piece to share our practice.</span></p>
<p><span>The TACKLE framework outlined below emphasizes the actions that must be taken, in a certain order, to effectively manage the transition and establish trust with some quick wins before venturing into more substantial changes. The framework consists of six sequential steps that help you to focus on one thing at a time instead of trying to do everything at the same time. </span></p>
<p><span> <img src="/link/e3ba088a36b7474c8545757ab88d3d28.aspx" /></span></p>
<p><span><strong>T</strong> – Take over from the outgoing team with a pragmatic approach</span></p>
<p><span><strong>A</strong> – Analyze issues and pain points across the value chain</span></p>
<p><span><strong>C</strong> – Compile sufficient documentation on the current state</span></p>
<p><span><strong>K</strong> – Knockdown “easy” obstacles to score early wins</span></p>
<p><span><strong>L</strong> – Learn about the target state, identify gaps and define an implementation roadmap</span></p>
<p><span><strong>E</strong> – Enhance the platform, following the roadmap, to drive optimization through iterative changes</span></p>
<h2><span>Take over from the outgoing team with a pragmatic approach</span></h2>
<p><span>Any takeover project starts with the transition from the outgoing team. The transition window is typically quite limited in duration, with actual time to work together with the outgoing team usually being even shorter. Therefore, you need to make every second count. Don’t waste your time on trivial stuff and focus on getting the key information.</span></p>
<p><span>At first, you should request access to all environments, credentials, documentation and, of course, the source code repository. With the source code on hand, as a developer, you might be tempted to take a deep dive into a code review, but that should wait. Step back and try to understand the big picture first!</span></p>
<p><span>In order to garner a good understanding of the entire system, you should focus on key areas, from both technical and functional perspectives.</span></p>
<p><span>In terms of infrastructure, if it is a standard setup on DXC, your life will be much easier. Otherwise, you would need to find out how the environments are currently set up – whether they are on-premises or use self-managed cloud hosting, and whether CDN is in place. In a load balanced environment, you should pay attention to how <a href="http://www.jondjones.com/learn-episerver-cms/episerver-developers-guide/episerver-caching/how-does-episerver-caching-work-in-a-load-balanced-set-up">cache invalidation</a> works, as inconsistent content or pricing can cause a bit of drama. </span></p>
<p><span>The underlying infrastructure is critical, but the most important and yet most complex topic would be integration – as outlined in <a href="/link/59a26c3551434010a66fc504c18810eb.aspx">my other blog post</a> – as an e-commerce system always interconnects and depends on other systems to function. The below illustration depicts a diagram I drew for one of our Episerver Commerce takeover projects. As you can see, I used different </span>colors for different external systems and the corresponding arrows showing data flow. This kind of integration diagram is a great visual aid for the whole team to understand how data flows in and out of Episerver. In addition, you should try to work out the data elements and the mechanism for each integration touch point as well as whether the endpoints are configured in web.config or site settings. In addition, it is good to know which external systems have sandbox/test environments for testing purposes.</p>
<p><img src="/link/4a3739af197047e79d8503f06579319b.aspx" /></p>
<p><span>As</span>ide from built-in scheduled jobs that come with Episerver Commerce, there are always custom scheduled jobs for different things such as to import price or inventory data or to generate certain reports. Hence, you should always look at scheduled jobs under the admin section in the CMS UI and work out which is which. It’s also important to learn the reason behind the scheduled time of each job as there might be some inter-dependency with external systems. For example, a file import job should be scheduled to run only after the file is transferred over.</p>
<p><span>Unlike bespoke solutions, where each user function must be studied carefully to understand system functionalities, an e-commerce site typically has a set of standard pages for users – namely homepage, store locator page, registration page, account details page, product listing page, product detail page, cart page, checkout page and order confirmation page. Therefore, by just spending 30 minutes on the site trying out the end-to-end flow from registration, view product, add to cart, check out and pay would give you a pretty good understanding of its functionalities. So don’t waste time conferring with the outgoing team about things you can find out about when browsing the site. However, there are some particular functions and logics worth checking:</span></p>
<ul>
<li><span> </span><span>The logic behind the display order of products in the product listing page</span></li>
<li><span> </span><span>Rules related to showing prices: original price vs sale price, customer-specific price, …</span></li>
<li><span> </span><span>Rules to show promotion banners/sales badges</span></li>
<li><span> </span><span>Custom promotions</span></li>
<li><span> </span><span>Shipping fee calculation</span></li>
</ul>
<p><span>In addition to functions on the public site, there might be custom functions for back-office users in the Episerver CMS user interface, which is <a href="/link/546fb4cb77674527ac955797ba611a28.aspx">component-based and pluggable</a>. These custom functions can come in various forms, namely <a href="/link/b33cc810b21a40a2a0af7c8b9671da30.aspx">add-ons</a> or <a href="/link/521e05f65b974205a33016d27f289e49.aspx">views</a> or <a href="/link/e58d528eb07b49e9bc154614e9d8f52c.aspx">widgets</a>. Knowing all the customizations for back-office use will help you understand how the Episerver CMS UI has been extended.</span></p>
<p><span>Once you have a good grasp of the individual functions on the public site and Episerver CMS, it’s time for you to learn about key workflows, namely: product catalog ingestion, product enrichment, price and inventory synchronization, check out and order submission and order status updates. It’s crucial to understand these flows inside-out as they are the most critical portions in any e-commerce implementation. In my experience, the majority of issues/enhancements would arise along these flows, so being able to quickly visualize the flows in your head would be a great help with the thinking process.</span></p>
<p><span>Once you have looked at the e-commerce system from a bird’s eye view and got a pretty good understanding of the system in its totality, you can now jump into code review to see how the system is implemented. I’m not going to go into details with regard to code review, as it would be a big topic on its own, but you should start with taking stock of all projects in the Episerver Commerce solution to understand the purpose of each one. Some of them might no longer be in use, such as the integration code for an obsolete payment gateway. From a back-end perspective, it’s needless to say that you should look at each Episerver Commerce subsystem – content repository, catalog, orders, customers and marketing. And in the front-end, you should know if plain javascript or jquery or a more modern javascript such as React/Angular/Vue.js is used. </span></p>
<p><span>By the end of the transition period, you should have been able to set up local development environments and run end-to-end testing with all payment methods. You must also conduct a pilot deployment with trivial changes such as adding a log statement and an invisible element in the UI. By doing this, you can get to know the conventions for source code branching, deployment steps and, most importantly, gain the confidence that you can deploy changes to the production environment.</span></p>
<h2><span>Analyze issues/pain points across the value chain</span></h2>
<p><span>During the transition phase, through extensive discussions with the outgoing team, you might have gotten a pretty good picture of the issues and pain points of the current implementation. However, the view might be skewed toward the technical aspects, so performing a value chain analysis – as outlined in <a href="/link/8ed608c8b2cb4b6e896b7afb2e5ad639.aspx">my other blog post</a> – might be beneficial. </span></p>
<p><span>You should conduct short interviews with various teams involved in the e-commerce operating model, namely product management, marketing, sales, order fulfilment and customer service as well as supporting functions in IT and accounting/finance. Each interview should start with a deep dive into how each team currently performs their duties, their perception of the e-commerce system in terms of issues, inefficient operations and inadequate functions for them to work optimally. </span></p>
<p><span>After talking to everyone, you will be able to paint a more complete picture of the current state, issues/gaps and the expected target state at the micro level.</span></p>
<h2><span>Compile sufficient documentation on the current state</span></h2>
<p><span>Inadequate and obsolete documentation is quite common with most e-commerce implementations, especially when the implementation is a few years old and things have changed, but documents have not been updated. Details of these changes can be buried deeply in Jira, so it’s not easy for the new team to navigate.</span></p>
<p><span>Therefore, taking over is a good time to supplement the document set with new content so that the new team can refer to the documents whenever required. Don’t try to recreate the entire documentation from scratch but take stock of what is available, what is missing, what is obsolete and compile new content accordingly. Taking good notes in all discussions – whether with the outgoing team or with users – will greatly assist with documentation. </span></p>
<h2><span>Knockdown “easy” obstacles to score early wins </span></h2>
<p><span>Having done enough talking, analyzing and documentation, in addition to keeping the site up and running and providing sufficient support when the outgoing team has left, it’s time for the new team to make changes instead of just maintaining the status quo. This is rightfully expected by the client. </span></p>
<p><span>However, you should never try to take on big-ticket items too early as they are more complex and riskier to touch. Therefore, you might end up not being able to deliver the desired high-quality output within the allowed time frame, which would be a serious setback affecting your credibility. This would be exacerbated if there are already doubts from certain people on the client side about the ability or competency of the new team.</span></p>
<p><span>Therefore, you should carefully curate the first list of items to work on by going through high and medium-priority items and extract those that have clear technical solutions, are less time-consuming and easy to verify.</span></p>
<p><span>Being able to solve some issues early will greatly boost your confidence level and credibility, which will give you a breather before you tackle the more complex obstacles.</span></p>
<h2><span>Learn about target state, identify gaps and define implementation roadmap</span></h2>
<p><span>While continuing working through items, you should also organize a few workshops within the first couple of months. These should involve senior management as well as employees, with the aim being to learn about the target state that is needed to achieve the business objectives around revenue, profits, branding and customer experience. </span></p>
<p><span>Knowing the current state and target state, you will then be able to identify the gaps that need to fill in order to bring the client from where they are today to where they want to go. The gaps can be related to UI/UX, back-end workflow/logic or back-office functions.</span></p>
<p><span>These gaps will form the basis for future initiatives, sequenced in a logical order based on inter-dependency and urgency. Your estimations on cost and time for each initiative will help clients decide their direction while keeping the return on investment in mind.</span></p>
<p><span>Once the budget is secured, you can prepare a clear roadmap for implementation that will provide transparency for both the client and the implementation.</span></p>
<h2><span>Enhance the platform as per the roadmap to drive optimization</span></h2>
<p><span>After the road-mapping stage, it’s time to kick off each individual initiative with proper governance in place, as optimization initiatives will be carried out in parallel with business-as-usual (BAU) activities. Separating the BAU team and optimization team is probably a good idea – if the budget allows it – as it will minimize distractions and result in greater speed of development. </span></p>
<p><span>Agile development is the way to go to deliver iterative changes through sprints, typically of two weeks each. By following this guideline, clients can see changes happening on the platform on a regular basis, keeping everyone more engaged. It also spreads out the workload, especially for user acceptance testing, as the client’s digital team is typically quite busy with BAU activities.</span></p>Value chain analysis for Episerver Commerce implementation/blogs/tuan-le/dates/2018/8/value-chain-analysis-for-episerver-commerce-implementation/2018-08-20T05:52:28.0000000Z<!DOCTYPE html>
<html>
<head>
</head>
<body>
<p>B2C e-commerce implementation can be overwhelming as it is a major undertaking entailing the entire <a href="https://en.wikipedia.org/wiki/Value_chain">value chain</a> which is a full range of activities that a company must perform to deliver its products and services to the market. Therefore, I believe a structured approach is needed to stay on the right track from the beginning and <a href="https://businessjargons.com/value-chain-analysis.html">value chain analysis</a> is one of the tools that can help system implementors do just that.</p>
<p>Following <a href="https://www.ifm.eng.cam.ac.uk/research/dstools/value-chain-/">Porter's value chain concept</a> but strictly focusing on e-commerce, business activities in e-commerce value chain can be split into 2 categories: primary and support. </p>
<p>In my opinion, primary activities are</p>
<ul>
<li><strong>Product management</strong> - includes all activities required to bring products to the online store such as setting up product catalog, categorizing, adding or removing products, enriching and displaying products online, configuring product pricing and managing inventory. </li>
<li><strong>Marketing - </strong>includes all activities related to driving sales by <span>raising awareness about brands and product offerings. These are divided into 2 groups: </span>
<ul>
<li><span>d</span><span>riving web traffics through promotions and various marketing activities via search, display advertising, email, social, affiliates, and referrals.</span></li>
<li><span>optimizing the user experience for conversion with UI/UX, personalization, product recommendation leveraging actionable insights from Web analytics.</span></li>
</ul>
</li>
<li><strong>Sales</strong> - includes all activities related to facilitating online sales by empowering customers to discover products, learn about the products and transact.</li>
<li><strong>Order fulfillment</strong> - includes all activities related to receiving, processing and delivering to consumers who place orders online.</li>
<li><strong>Customer services</strong> - includes all activities related to facilitating interactions with consumers through various channels to address their inquiries, listen to their voices and perform their service requests such as order modification, cancel, exchange and return. </li>
</ul>
<p>Support activities are</p>
<ul>
<li><strong>Account & Finance</strong> - mainly refers to sales and payment reconciliation related to e-commerce.</li>
<li><strong>IT</strong> - includes those related to hosting and application support. </li>
</ul>
<p>Below diagram depicts a reference value chain for B2C Episerver Commerce implementation.</p>
<p><img src="/link/d994842ca4b54a4986417e5b434bf84e.aspx" alt="Image value-chain-analysis-episerver-commerce-implementation.png" /></p>
<h2>Use value chain analysis for discovery workshops</h2>
<p>In management consulting, <a href="https://www.businessnewsdaily.com/5678-value-chain-analysis.html">value chain analysis</a><span> is used to identify and analyze primary and support activities in order to optimize business operations for maximum efficiency and profitability. Therefore, I used this technique quite extensively in my past life as a consultant. However, when taking on Solution Architect role, I find that value chain analysis is also very effective in Episerver commerce implementation, especially in the discovery phase for project scoping and requirement analysis.</span></p>
<p><span>My first step is to identify all activities aka <strong>processes </strong>in the e-commerce value chain as described above. Then I try to identify who are the <strong>people</strong> involved in those processes and the <strong>technology</strong> (aka IT systems) required to perform those processes. As a matter of fact, </span><span><strong>people</strong>, <strong>processes</strong> and <strong>technology</strong> are the key components underlying e-commerce <a href="https://en.wikipedia.org/wiki/Operating_model">operating model</a>. And a thorough analysis of the as-is and to-be operating model will help both system implementors and clients understand how e-commerce operations are structured across the e-commerce value chain to effectively deliver and execute on the organization's e-commerce strategy.</span></p>
<h3><span>People</span></h3>
<p><span>In the discovery phase, knowing who are the required stakeholders for different topics is important to effectively conduct discovery workshops. As different people will participate in different sessions, I believe it's extremely important to properly structure the conversations around the value chain so that participants know exactly where they fit in the entire e-commerce value chain and the context behind workshop discussion.</span></p>
<h3><span>Processes</span></h3>
<p><span>With the exhaustive list of processes identified upfront in value chain analysis, I feel a lot more confident that I will get all ground covered which minimizes scope creeps and change requests during build phase that can make adverse impacts on quality and schedule especially for projects with a tight timeline. And when deep diving into each and every process in workshops, knowing exactly what Episerver can provide out of the box, the discussions will shape what needs to be customized. Needless to say but when going through the value chain, you will appreciate the comprehensiveness of Episerver Commerce which provides a solid foundation to build powerful and flexible e-commerce systems.</span></p>
<h3><span>Technology</span></h3>
<p><span>It's worthy to note that e-commerce implementation typically involves a number of external systems besides Episerver. Therefore, tagging systems to each process in the value chain would yield a complete list of external systems and the required integration touch points as I outlined in another blog post on <a href="/link/59a26c3551434010a66fc504c18810eb.aspx">Episerver Commerce integration</a>. In other words, value chain analysis would unravel integration requirements and minimize the risk of having disconnected systems.</span></p>
<h2><span>Use value chain analysis to drive transformation</span></h2>
<p><span>Interestingly, value chain analysis can be used not only for project scoping and requirement analysis as described in the previous section but also for driving digital transformation programs. </span></p>
<p><span>For example, value chain can be used to visualize pain points and areas for improvement in forms of heatmaps, especially in brownfield implementation. In my opinion, heat mapping is an effective tool for internal communications to build awareness for change from project inception till go-live. In other words, value chain analysis helps clients and system implementors run change management program more effectively which is one of the success factors for Episerver Commerce implementation. </span></p>
<p><span>Value chain analysis can also be used to i</span>dentify activities that add or improve customer value and the best opportunities for differentiation. Those differentiators can be within <span>general, discrete functions or those with interactions and cross-functionality between processes in the value chain. For instance, through value chain analysis, one of my clients figured out the fact that they can bring great benefits to their customers who are interested in top-sellers by connecting product inventory and back-order fulfillment. And we successfully implemented that differentiator by with wiring logic between Episerver inventory service and order management. </span></p>
<h2><span>Give it a try</span></h2>
<p><span>As mentioned above, value chain analysis is a powerful tool in management consulting but can be extended for use in Episerver Commerce implementation throughout the project lifecycle especially for discovery and change management. From my own experience, I found that e-commerce value chain analysis was really instrumental in the success of my past e-commerce projects, and more importantly, my clients really liked it. </span></p>
<p>If you think value chain analysis might be useful for your projects, please try and let me know your thoughts. </p>
<p><strong>P/S</strong>: This is my second blog post in the series I plan to write on Episerver Commerce implementation. The first blog post on <a href="/link/59a26c3551434010a66fc504c18810eb.aspx">real-world integration for Episerver Commerce implementation</a> can be found <a href="/link/59a26c3551434010a66fc504c18810eb.aspx">here</a>.</p>
</body>
</html>Real-world integration for Episerver Commerce implementation/blogs/tuan-le/dates/2018/7/real-world-integration-for-episerver-commerce-implementation/2018-08-01T09:45:05.0000000Z<!DOCTYPE html>
<html>
<head>
</head>
<body>
<p><span>When implementing an </span>Episerver <span>CMS solution, integration with external systems is not always required. However, I have not seen any </span>Episerver Commerce<span> implementation that can go live without integration. The following diagram depicts a typical B2C Episerver Commerce implementation which has multiple integration touchpoints with various external systems.</span></p>
<p><a href="/link/ade203c0d2474e7a882d2dcd9a2a183a.aspx"><br /><img src="/link/6fc01948e0ae40b0af9ee2d0387fe132.aspx" width="1259" alt="image" height="642" /></a><br /><br /></p>
<p>Below table shows the list of touch points that a typical Episerver Commerce implementation would have:</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td>
<p><strong>#</strong></p>
</td>
<td>
<p><strong>Touch point</strong></p>
</td>
<td>
<p><strong>Direction</strong></p>
</td>
<td>
<p><strong>External system</strong></p>
</td>
</tr>
<tr>
<td>
<p>1</p>
</td>
<td>
<p>Product catalog</p>
</td>
<td>
<p>In</p>
</td>
<td>
<p>ERP / RMS</p>
</td>
</tr>
<tr>
<td>
<p>2</p>
</td>
<td>
<p>Product pricing</p>
</td>
<td>
<p>In</p>
</td>
<td>
<p>ERP / RMS</p>
</td>
</tr>
<tr>
<td>
<p>3</p>
</td>
<td>
<p>Product inventory</p>
</td>
<td>
<p>In</p>
</td>
<td>
<p>ERP / RMS</p>
</td>
</tr>
<tr>
<td>
<p>4</p>
</td>
<td>
<p>Promotion</p>
</td>
<td>
<p>In</p>
</td>
<td>
<p>ERP / RMS</p>
</td>
</tr>
<tr>
<td>
<p>5</p>
</td>
<td>
<p>Product enrichment</p>
</td>
<td>
<p>In</p>
</td>
<td>
<p>PIM or Files</p>
</td>
</tr>
<tr>
<td>
<p>6</p>
</td>
<td>
<p>Product feeds</p>
</td>
<td>
<p>Out</p>
</td>
<td>
<p>Marketplaces</p>
</td>
</tr>
<tr>
<td>
<p>7</p>
</td>
<td>
<p>Subscribers</p>
</td>
<td>
<p>Out</p>
</td>
<td>
<p>Email Marketing Automation</p>
</td>
</tr>
<tr>
<td>
<p>8</p>
</td>
<td>
<p>User events</p>
</td>
<td>
<p>Out</p>
</td>
<td>
<p>Email Marketing Automation</p>
</td>
</tr>
<tr>
<td>
<p>9</p>
</td>
<td>
<p>Payment</p>
</td>
<td>
<p>Out</p>
</td>
<td>
<p>Payment Gateway</p>
</td>
</tr>
<tr>
<td>
<p>10</p>
</td>
<td>
<p>Order</p>
</td>
<td>
<p>Out</p>
</td>
<td>
<p>OMS</p>
</td>
</tr>
<tr>
<td>
<p>11</p>
</td>
<td>
<p>Order status</p>
</td>
<td>
<p>In</p>
</td>
<td>
<p>OMS</p>
</td>
</tr>
<tr>
<td>
<p>12</p>
</td>
<td>
<p>Sales data</p>
</td>
<td>
<p>Out</p>
</td>
<td>
<p>ERP / RMS</p>
</td>
</tr>
<tr>
<td>
<p>13</p>
</td>
<td>
<p>Transactional emails</p>
</td>
<td>
<p>Out</p>
</td>
<td>
<p>Email Delivery Service</p>
</td>
</tr>
</tbody>
</table>
<p>This blog post aims to share my integration experience gained through a number of Episerver Commerce projects that I have participated in.</p>
<p>There are 2 main sections in this blog post:</p>
<ul>
<li><strong>External systems</strong>: lists typical external systems to which Episerver Commerce needs to integrate with.</li>
<li><strong>Integration touch points</strong>: provides high-level description of each touch point.</li>
</ul>
<h2>External systems</h2>
<p><span>The <a href="/link/8ed608c8b2cb4b6e896b7afb2e5ad639.aspx">e-commerce value chain</a> comprises of several primary activities namely product </span>management, marketing, sales, fulfillment and customer service<span> hence it is quite complex and involves a number of external systems:</span></p>
<ul>
<li><strong>ERP (Enterprise Resource Planning) or RMS (Retail Management System):<span> </span></strong>this is the core back-end system for retailers to manage both online and in-store operations. ERP / RMS is the source of truth for product catalog, pricing, and inventory. Retailers can also run omni-channels sales campaign from ERP / RMS to offer the same promotions to both online and in-store customers.</li>
<li><strong>PIM (Product Information Management)</strong>: some retailers adopt PIM (such as inRiver) to manage product images and extended attributes which are required by e-commerce site to show in product listing page and product detail page. Majority of retailers, however, don’t have a PIM hence product images and extended attributes must be imported from files.</li>
<li><strong>Payment gateway</strong>: payment gateways enable online payments are required for e-commerce sites. In addition to credit cards, e-commerce sites also offer alternative payment methods such as Paypal or finance options such as AfterPay or ZipPay in Australia. Therefore, integrating with multiple payment gateways is not uncommon.</li>
<li><strong>OMS (Order Management System)</strong>: order fulfillment is typically done through OMS which can be a separate system or a module within ERP / RMS. OMS can manage both fulfillment options: home delivery (via logistic providers) and Click&Collect (store pick-up).</li>
<li><strong>Marketplaces</strong>: in addition to selling on own websites, retailers usually sell their products on marketplaces such as Google Shopping, therefore it’s required for Episerver Commerce to share products in form of product feeds.</li>
<li><strong>Email Delivery Service</strong>: Episerver Commerce needs to integrate with a reliable Email Delivery Service such as SendGrid to send out transactional emails such as order confirmation.</li>
<li><strong>Email Marketing Automation</strong>: Email Direct Marketing (EDM) plays an important role in e-commerce to retain customers and boost sales, therefore, Episerver Commerce needs to integrate with an Email Marketing Automation system such as Episerver Campaign, Eloqua, Adobe Marketing Cloud or Salesforce Marketing Cloud for retailers to send out relevant promotional emails.</li>
</ul>
<p>In addition to the above external systems, Episerver Commerce might need to integrate with other systems for shipping fee calculation, customer reviews, live chat … but I leave them out in this blog post to focus on the key external systems.</p>
<h2>Integration touch points</h2>
<h3>1. Product catalog</h3>
<p>Product catalog is the heart of any e-commerce platform as they are essentially what retailers want to sell. As products are already set up in ERP / RMS, it’s a must to sync product catalog from ERP / RMS to Episerver Commerce automatically instead of manually managing online catalog and in-store catalog separately. Episerver provides flexible mechanism to programmatically create and update products in Episerver<span> </span><a href="/link/1927423231084579ad2d2655b0d75e07.aspx">catalog system</a>.</p>
<p>Typically, all products should be<span> </span><a href="/link/76954e225e2b4da89b57d84f10defd8e.aspx">imported to Episerver Commerce</a><span> </span>prior to go-live and delta update should be reflected in Episerver as and when needed using<span> </span><a href="/link/735d13cd61d945fea9af717653d07737.aspx">CatalogContentProvider</a><span> </span>or<span> </span><a href="/link/b9aa1609c8ad486a8c850d89f3dd104e.aspx">Service API Catalog RESTful operations</a>. Note that product categories in ERP / RMS need not be the same as e-commerce product categories, hence category mapping between ERP / RMS and Episerver is required. A proper Episerver Commerce implementation must also take into consideration the following scenarios: product category change and product discontinuation.</p>
<h3>2. Product pricing</h3>
<p>Episerver administration console provides interface for users to edit product pricing, however, typically product pricing should be sync’ed from ERP / RMS. Episerver Commerce provides<span> </span><a href="/link/3119e7b8833c4869ac2fa99551ff5ebe.aspx">IPriceDetailService API</a><span> </span>to update prices in Episerver. In addition to market-specific pricing, retailers usually set up retail price (original price) and markdown price (actual sale price), therefore<span> </span><strong>sales code</strong><span> </span>in price table should be used to indicate which is which. Customer-specific pricing can be implemented using<span> </span><strong>sales type</strong><span> </span>field in pricing table. In summary, sales code and sales type in combination can be used to implement most of pricing logic required by retailers.</p>
<h3>3. Product inventory</h3>
<p>Product inventory is usually sync’ed regularly from ERP / RMS to ensure products are not oversold online. Episerver provides powerful<span> </span><a href="/link/6110f72d45bc4133a1d2d36a7562ad66.aspx">IInventoryService</a><span> </span>to manage InventoryRecord that represents product inventory in each warehouse. Retailers can have one single warehouse to manage all online stocks or multiple warehouses for multiple markets/regions. Logics must be implemented in Episerver to cater for products with no inventory by either unpublishing the corresponding product/variation or allow back-order / pre-order / notification when back in stock.</p>
<h3>4. Promotion</h3>
<p>Retailers usually use Episerver administration console to create promotions either for Web-only promotions or in-store promotion replication, however, for true omnichannel shopping experience, retailers usually require to auto sync promotions from ERP / RMS to e-commerce. Fortunately, Episerver allows developers to create promotions (aka discounts) from code with the <a href="/link/fab34c06588e4571a52a8454143d6e9f.aspx">new promotion engine</a> either using <a href="/link/55fe410f4f65482cab72fb59d47c7561.aspx?documentId=commerce/12/C42F6B08">built-in promotions</a> or creating <a href="/link/e5b6297a0f984ce481a4c8451dd47b6b.aspx">custom promotions</a>.</p>
<h3>5. Product enrichment</h3>
<p>Product data from ERP / RMS don’t usually contain product images and additional information for display in e-commerce sites, therefore, product enrichment process must be carried out to populate products with media assets and extended attributes from either PIM or external files.</p>
<p>For product extended attributes,<span> </span><a href="/link/735d13cd61d945fea9af717653d07737.aspx">CatalogContentProvider</a><span> </span>or<span> </span><a href="/link/b9aa1609c8ad486a8c850d89f3dd104e.aspx">Service API Catalog RESTful operations</a><span> </span>can be used to add and update. For product images, users can, of course, upload images manually and link them to product catalog items, however, Episerver Service API provides<span> </span><a href="/link/3df9b53837f94f5794bacdfb06e717fd.aspx">media bulk import methods</a><span> </span>to import a large amount of media assets to Episerver and<span> </span><a href="/link/4348e8a4e79940d38c56bb818ef20a65.aspx">catalog asset link methods</a><span> </span>to link assets to product catalog items. Episerver Commerce also provides another way to manage assets in a product catalog using<span> </span><a href="/link/d7ca8df6513a413abccfbebec5e59f8d.aspx">IAssetContainer and CommerceMediaCollection API</a>.</p>
<h3>6. Product feeds</h3>
<p>The most widely-used format for product feeds is<span> </span><a href="https://support.google.com/merchants/answer/7052112?hl=en">Google product data specification</a><span> </span>aka Google product feed. You can implement your own or use the existing<span> </span><a href="https://github.com/Geta/GoogleProductFeed">GoogleProductFeed</a><span> </span>package in GitHub. Product feeds should be made available via public URL.</p>
<h3>7. Subscribers</h3>
<p>Most of e-commerce sites provide functions for customers to subscribe to newsletter and promotional emails. These kinds of Email Direct Marketing (EDM) activities are managed outside Episerver in Email Marketing Automation platform hence Episerver Commerce should send subscribers to Email Marketing Automation upon subscription. In advanced integration, Episerver can also share product catalog and additional customer data.</p>
<h3>8. User events</h3>
<p>EDM based on user journey such as cart abandonment EDM proves to be quite effective hence Episerver should also send user events (such as when a cart is abandoned) to Email Marketing Automation system. This can be implemented by either calling provided API or embed a provided script to detect those events.</p>
<h3>9. Payment</h3>
<p>There are 3 integration methods when it comes to payment:</p>
<ul>
<li>redirect to payment gateway website</li>
<li>embed payment gateway UI as an iframe in retailer’s website</li>
<li>use API (either client-side or server-side)</li>
</ul>
<p>The first 2 methods are simpler to implement and easier to achieve<span> </span><a href="https://www.pcicomplianceguide.org/faq/">PCI compliant</a>, however, redirection or iframe embed don’t usually provide seamless user experience. Most of payment gateways come with comprehensive developer’s documentation which makes life easier for Episerver developer. In addition, Episerver supplies<span> </span><a href="/link/ffbd07fbcb884a0da8419de193e17c5a.aspx">payment provider packages</a><span> </span>for<span> </span><a href="/link/25ec874a881c4fcfa84689bc258254b5.aspx">Paypal</a>,<span> </span><a href="/link/69f5b4c0f96049c79d3a15fd9f3beb95.aspx">DIBS</a><span>, </span>and<span> </span><a href="/link/459f9766d45241e6a679663f3c796615.aspx">DataCash</a>. For other payment gateways, you can refer to<span> </span><a href="https://github.com/episerver/CommercePaymentGateways">source code of these payment providers</a><span> </span>in GitHub to build your own payment providers.</p>
<h3>10. Order</h3>
<p>Order data containing order line items and shipping address must be sent to Order Management System for fulfillment. This can be done by calling OSM API directly or regularly exporting order data to files for OMS to consume. When using API, it’s important to decouple OMS from check out process so that customers can place an order when OMS is not running. To do that, an order queue should be implemented so that orders stay in the queue until they are sent to OMS.</p>
<h3>11. Order status</h3>
<p>Order fulfilment status should be sync’ed back from OMS to Episerver so that order status (including shipping tracking number) can be updated inside Episerver Commerce and corresponding transactional emails can be sent to customers. Episerver provides<span> </span><a href="/link/55fe410f4f65482cab72fb59d47c7561.aspx?documentId=commerce/9/4E9AF6CF">IOrderRepository</a><span> </span>to load and update orders. An order can be shipped in multiple shipments, half-fulfilled / canceled due to stock unavailability, therefore a proper implementation should be able to reflect the actual fulfillment status in user' profile’s order history section.</p>
<h3>12. Sales data</h3>
<p>In addition to fulfillment, online sales data (order data) should be sync’ed to ERP / RMS for finance accounting reconciliation. In some implementations, sales data are sync’ed from OMS to ERP / RMS, in some other implementations, Episerver should send sales data to ERP / RMS in batch or per order. This can be done via API calls or file export/import.</p>
<h3>13. Transactional emails</h3>
<p>To send out transactional emails related to user registration and orders, Episerver must use an external Email Delivery Service which can be simply an SMTP server or a more sophisticated email platform such as SendGrid or Amazon SES (Simple Email Service) to ensure email deliverability and access to tools to troubleshoot email delivery issues. Episerver can integrate with Email Delivery Service either via<span> </span><a href="/link/6087958401d44432b51743fe5b111820.aspx">SMTP configuration</a><span> </span>or using respective API.</p>
<h2>Conclusion</h2>
<p>Episerver Commerce implementation is typically far more complex than Episerver CMS implementation especially when it comes to integration. Therefore, before taking on the journey, you should analyze all the integration touch points mentioned above as the starting point and discover if there are more to cover. The questions you should ask include:</p>
<ul>
<li>What are the names of each external systems? For example, ERP is Microsoft Dynamics,<span> </span><span>Email Marketing Automation is Marketo …</span></li>
<li>What are the available integration methods for each external system? For example Web services, REST API, file-based … </li>
<li>What are the data fields required for each integration touch points and mapping to internal data fields in Episerver Commerce?</li>
</ul>
<p>I will provide more details on each integration touch point in my future blog posts.</p>
<p><strong>P/S:</strong> This is my first blog post in the series that I planned to write about Episerver Commerce implementation which will cover most of the aspects throughout the project life cycle.</p>
</body>
</html>