The Push for Go-Live (AKA the change we have been waiting for)

I sit at the keyboard with my hands shaking and sweating. I stop to remember all the memories that we experienced on this project. The joking about the family time we have spent on the project for “our” families. The picture with the team next to the Jesus poster. It was 2 am the day before the go-live. I smile about this moment. I was middle of a storm but at least we have good joke about it. I remember the night a fellow team worker forgot about his wedding anniversary that happened the previous month. Him running to the store to buy a gift card and the team helping him write this card.
In the middle of the project, I remember a teammate family having a car accident and driving off a mountain road and flipping several times. This reminded me that jobs will come and go but you will always have family. Looking back I learned on this project that if you don’t give time for yourself (personal, children and family) you can not thrive in life. You need to have a thriving life to succeed in life and business.
I am not a perfect person but my faults define me as a unique person. A child personality is defined when the child says no and the caretakers listen. This is a lesson I am learning currently, with my daughter.
Change is hard. I am the type of person that would love to live in one house my whole life (no change). I am now at at a spot with change on the horizon. The cards show the Pettinger family moving back to Denver. We will not be moving right now. We have time to sell the house and then move to Denver.
We are happy about the moments we had in Bellingham and the friends we have. We always have new babies running around and families waiting for the baby to arrive. You can always have someone to understand the challenges with the lack of sleep and the difficulty with boys aiming at the toilet.

NP Complete in the real world

Every time I have been asked to look at something that is a difficult and has not been resolved in the first tier support. 90% of the problems are easy to resolve especially if it is my specific technical knowledge. 10% of the problems are a challenge. The tricky challenges tend to have solution that is not straight forward.From a high level each could be defined in the following categories

  1. The website is slow and needs to be fast. Followup what are the downsides for implementing any performance improvement and my options.
  2. Why does the website have this issues and I need it fixed to do something else?
  3. Please make my website pretty and modern
  4. How can I reproduce this error?

The death of Monolithic Commerce

I just heard a quote from Elon Musk. The guy that takes on big projects and tries the impossible. The quote is “if the design is taking along time the design is wrong.”

In the science of programming, you have multiple classic dichotomy. The idea is you can be one or the other but never both. The most classic of this debating is monolithic vs microservices. This specific debate has been talked about since the beginning of technology and before the internet.

To understand the debate we need to look at the 1st major debate to have this debate. The debate centered on if the operating system should be designed as one large system doing everything or multiple systems interacting together. In the end linux was designed using a monolithic approach. Understanding the reasons why linux succeed using the monolithic approach will help us understanding why it fails to succeed in commerce.

The 1st reason why Linux succeed with a monolithic approach was everything was under one roof. The other operating system Linux was competing against was GNU using the Microservice approach. GNU had trouble from the start because of multiple separate subsystem developed by multiple people. The challenge is you are guaranteed to need integration testing and new bugs will be identified. A redesign could be required on a subsystem due to a bug that impacts a separate subsystem. GNU had the redesign issue multiple times. This happened because the design was brand new and the challenges were unknown. In commerce, the challenges are well understood and the multiple players have the best approach. The problem is no one player is master of everything. Salesforce and Adobe are trying.

At the end of the day monolithic requires one person to be the engineer/designer. This person needs to stay around for year upon years to have a positive impact. You need one chef in the kitchen during the life span of the software. Linux has Linus Torvald. In business reallying on one person is a bad business decision. This one person becomes the bottleneck. What happens if the person is hit by a bus? In business especially IT you need a team to meet the business needs. You need to adapt quickly.

Linux is something that Ph.D. scientist design, test and analyze. You put on the resume with proud if you ever submitted and was approved a code fix to Linux. The requirement to design a new component for Linux are extreme and the reviews are legendary. Linus has been known to hostility attack anything he deems as stupid. On commerce website business wants everything to be quick, easy and reliable. The business wants be able to have one-click checkout on a facebook advertisement. They don’t want to wait until the next decade before it is ready. The business needs everything to be simple and reliable without a rocket scientist.

Linux was able to embrace the fact that you do not want to best at everything. Linux works and is known to being reliable for decades. It not the best at anything but the good on average. In commerce, you can not be good at everything. I have worked with execillent software that provides a excellent search results, analytics, content entry, document management and payment provider. I have not found one vendor that can developer a exacellent experience all around. In the global ecommerce market today you need to be competive. To be competive you need to have a excellent website all around. To be competivie you need to have a suite of software. To be competive you need to abandon monolithic and embrace headless.

The Linux system has been able to improve over time with little impact to end users. End users rarely have a issue during a upgrade. It takes 5 minutes and you are upgraded. In Monolithic Commerce each implementation is customized. The reason why each installation is customized because no single vendor has been able to do everything excellent in Commerce. The commerce website always need to adapt to meet the business basic needs. Due to the customization, each upgrade is a risk and costly. I have seen multiple times where the cost of the upgrade was close to the cost of the actual implementation. You can especially this impact when the Commerce engine changes the front end technology. The problem is about every 4 years the front technology land scape is changing. The challenge what is possible today was not possible 4 years ago. What we optimize to today is different from what I would have optimized 4 years ago. Each time the technology to reach the user has matured (Web browser) and the method to reach the audience has adapted (social media platforms and advertisement).

By going with the monolithic approach is slows down the design process and the time to deliver. Locks the technology into one specific platform and force the website to be mediocre by ignoring the best of the breed. As Elon Musk say if you slowing down the design you need to change your design. You need to embrace headless to meet your business online strategy today and the future. Today you are the leader by embracing the technology. Tomorrow you will be the one still trapped and slow if you stay with Monolithic commerce.

The soft sell of Headless Commerce

I have a old client that has a classic challenge in the Commerce world. The problem is the client is using a Monlithic Commerce Software (Insite). The website was originally implemented multiple years ago. It was an optimized, simple and beautify website. The website has allowed the company to embrace online ordering and grow against the giants like Home Depot. The problem was the website was created multiple years ago. Time of changed. The market place of the past slow adapts to the change of times. When the website was created the only place you could by and find the product was only the companies website. Now the company wants to be able to sell on google and amazon. Previously you just need to have a website and a sitemap for people to find you. Now the times have changes. Now you need to have a special webpage (AMP) to be featured at the top of the webpage. Now you need to have a special markup to allow google to identify the product details. Now you need to upload a special product file to work with Amazon or a punchout provider.

The client was under the impression staying up to date with a monlithic application would be easy and simple. This was far from the truth. The monolithic application has had multiple major versions. Everything has changed including the field names. Each major version has had a different architect and caused different approach to match the architecture. Each major version could be consider a seperate commerce application. The only thing that stays the same is the name of the application. You are not guarantee the latest version is the best version.

The client needs to embrace headless commerce.

Steps to resolve Sitecore Commerce Certificate with thumbprint is not within a valid time window.

ClientCertificateValidationMiddleware: Certificate with thumbprint C18A42CDF58D769F2774D94367018CFBA7A2E89B is not within a valid time window.

1) Open PowerShell as admin

2) Run

New-SelfSignedCertificate -certstorelocation cert:\localmachine\my -dnsname “woodward.sc”

3) Copy the thumbprint returned in the result.

PSParentPath: Microsoft.PowerShell.Security\Certificate::LocalMachine\my

Thumbprint Subject
———- ——-
E3A9988F68349D9ED74A20A2EDEB0A3C633D44FD CN=woodward.sc

4) Edit the following files

  • C:\inetpub\wwwroot\CommerceAuthoring_Sc9\wwwroot\config.json
  • C:\inetpub\wwwroot\CommerceMinions_Sc9\wwwroot\config.json
  • C:\inetpub\wwwroot\CommerceOps_Sc9\wwwroot\config.json
  • C:\inetpub\wwwroot\CommerceShops_Sc9\wwwroot\config.json

5) Replace the thumprint value with the value just created and save the change

            "Thumbprint": "E3A9988F68349D9ED74A20A2EDEB0A3C633D44FD",

6) Edit C:\inetpub\wwwroot\woodward.sc\App_Config\Include\Y.Commerce.Engine\Sitecore.Commerce.Engine.Connect.config

Replace the certificate thumbprint

<CertificateThumprint> E3A9988F68349D9ED74A20A2EDEB0A3C633D44FD</CertificateThumbprint>

7) Run IISRestart

The 5‐step program to get out of an abusive commerce relationship

The following is the 5 steps program to a stable and healthy commerce website. The following steps will show how to secure and log users actions on the website. Logging the failures and errors will allow identifying the frequently encountered bugs. Next reviewing and improving key areas of the website will create a user friendly, powerful, professional and fast website. The improvements will focus on search, checkout, user registration and user self-service applications. After the program is complete the company will increase sales, reliability and no emergency phone calls on the holidays.

Step 1) Secure your website and set up logging to record failures
Every website has the possibility of a data breach or hack. It is important to audit your website and identify any security issues as soon as possible. You do not want to have a data breach and find out you forgot to lock the doors. The company leadership will lose trust in your ability. Go to and read how to secure your website.
The challenge with websites vs a physical store is a online user shopping experience provides no feedback unless you have the infrastructure to record and audit the shopping experience. In the past, I have found the Dynatrace product to provide the best out of box support with minimal customization. With Dynatrace setup you can get an average user experience score for each session. The session score is based on how fast the website displays with the goal of less than a second and any request that generates errors in the logs or returns failed web service. At a high level, this is the best method without customizations to quickly identify failures.
Step 2) Log and triage major bugs
Once the website is secure and logging has been set up it is important to triage the bugs. If you have an abusive commerce website with a lot of failures you need to look at the bugs that impact the most users and focus on improving the user experience. During this time it is import to record all the bugs and triage the bugs. Not all bugs are created equal and some bugs impact more users than other bugs. Work smart and efficient when dealing with a unstable website.
Step 3) Audit and resolve your search page
If your company sells more than 5 products it is important to have an outstanding search page. The search page needs to be fast, accurate and relevant.  Search results need to be returned and displayed to the user in less than a second. The results returned need to be accurate for the specific user. Display accurate information on inventory availability and user-friendly marketing content. You need to be selective with what data you display. Less results displayed is better when dealing with search. Search results need to be relevant for the specific users. Display the customer specific price and support sorting by the customer specific price. The search page needs to be accurate and relevant using high value data.
Step 4) Audit and resolve your checkout flow
The checkout flow is a very import part of the commerce website. The checkout process allows to order and pay for the company products and service. Companies expect the checkout process to be reliable, fault tolerant and quick. The checkout process needs to be developed on a stable platform with a overall architecture. Frequently checkout process is built from a ad how approach. This causes the checkout process to have frequent failures. Each failure experienced is going to reduce the revenue due to lost sales.
Step 5) Audit and resolve your user registration, login process and my account
The ability to create user account and user register needs to be 100% reliable process with no depenedency on the back end systems. The process needs to be fault taulerant and accurate. The process needs to be as simple as quick as possible. Each additional page you add to a registration will cause 10% to abandon the process.
After completing the program you will have a healthy and stable website. Your website will track and notify when online shopper have failures. The search and checkout experience will be simple, accurate and quick. Your companies revenue will increase due to reliable website and increased sales.

Best Practice for Search Suggestions

Search is the lynchpin for a commerce modern website. A customer will not buy a product if they cannot find product on your company’s search. A major improvement in users experience from a search page 10 years ago vs today is the intelligent search suggestions. Search suggestions allow you the ability to recommend the best search and direct the user to the correct page. The following recommendations allow you to create search suggestions that will be fast, relevant and provide the correct results with analytics.
The first recommendation for search suggestions is to log and analyze all search executed on the website. The goal is to identify automatically what search is a successful and failure. An example of a successful search would be if the user purchases a product or downloads the product marketing material. If the user attempts a search and then starts another search without adding to the cart two minutes later we consider the first search a failed result. The reasoning is because the user would have stop searching if analyzing this search history allows us to identify what search that is successful or failure.  This is the approach Google uses to recommend a search suggestion and implement spell suggestions.
In addition, search suggestion needs to remember what each specific users search history and recommends search that is frequently executed by the user. If the user liked it in the past it is best to remember and offer the same suggestion. This is the same strategy a waitress at the restaurant will use if the customer orders the same items frequently. By remembering the standard order and offering what they frequently purchase at the beginning you are providing a customer-specific experience.
Next, we need to be careful to only display the right data. Show a result with products that are not relevant will cause the user to leave. To display relevant search results it is best to only display results after three characters are entered. One or two character does not give enough context to make a good guess. If some searches for “b” or “ba” we have no idea if they are searching for a bat, bathroom or bathhouse.
Another approach is to only display a select few categories on the page. My rule of thumb is to display the only top five categories. The first category will only display the top three subcategories. If you are selling products I would recommend showing the top five products in the search suggestion. Each product should have a product image, marketing product name, short description, and user purchase price.
The final search suggestion is to only display a suggestion if the customer has access to see the product. You never want to recommend a search where no results are returned. This is important if the company will sell select set of products to a only a few customers. Another scenario is when the company will sell the unique product for a geographic region or for a specific country. If your company limits what products are sold to each customer it is important to suggest search where the user will see at least one product.
Implementing the above steps for your search suggestion will allow you to have an excellent search experience. The above suggestions focus on providing a customer-specific experience and only display relevant data.