Sitecore Commerce Case File #01: The “Commerce.RedeemPromoCode / Component Execution Failed for Component [0x0]” Error on Submit Visitor Order


Classified Case Files


While testing a Sitecore Commerce 8.1 deployment for a client, I ran into a problem during the final checkout process of submitting the cart. The order failed! The process was “dead” on its tracks!

And just like any other seasoned developer, my instinct quickly told me to cry out “...but it was working on my local machine!”. And after adequately defending my honor, I began looking at the crime scene for clues.

As expected, the front-end error was generic and too friendly, it was a dead-end. So we started looking at the Sitecore logs, we see our custom logging doing its job (aka our informant):

7616 17:25:14 ERROR EcommerceReviewController.Review(): Error Submitting Order, Main Error = Component Execution failed for component[0x0]  hr: 0x0

ProgID: Commerce.RedeemPromoCodes

Exception of type 'System.EnterpriseServices.TransactionProxyException' was thrown.

7616 17:25:14 ERROR

Server stack trace:

   at CommerceServer.Core.Interop.PooledTxPipelineClass.Execute(Int32 lMode, Object pdispOrder, Object pdispContext, Int32 lFlags)

   at CommerceServer.Core.Runtime.Orders.PipelineHelper.RunPipesHelper(String strPCF, String strPipelineProgId, IDictionary dictOrderForm, IDictionary pipeContext, String logfile)

   at System.Runtime.Remoting.Messaging.Message.Dispatch(Object target)

   at System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg)

Exception rethrown at [0]:

   at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)

   at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)

   at CommerceServer.Core.Internal.Orders.MtsTxHelper.RunPipes(String strPCF, String strPipelineProgId, IDictionary dictOrderForm, IDictionary pipeContext, String logfile)

What does “Component Execution failed for component[0x0]  hr: 0x0” mean?

What does “Commerce.RedeemPromoCodes” do?

Why are these messages so vague?! (I’m used to them by now)

Hmm...

Witness Statement #1 - Mr. Event Viewer:

Event Viewer

“A caller has attempted to propagate a transaction to a remote system, but MSDTC network DTC access is currently disabled on machine XXX. Please review the MS DTC configuration settings.” (note: XXX on this one, pointed to the SQL Server machine)

Witness Statement #2 - Mr. Event Viewer:

Exception type: TransactionException Exception message: The partner transaction manager has disabled its support for remote/network transactions. (Exception from HRESULT: 0x8004D025). Stack trace:        at System.Transactions.Oletx.OletxTransactionManager.ProxyException(COMException comException)

   at System.Transactions.TransactionInterop.GetOletxTransactionFromTransmitterPropigationToken(Byte[] propagationToken)

   at System.Transactions.TransactionStatePSPEOperation.PSPEPromote(InternalTransaction tx)

   at System.Transactions.TransactionStateDelegatedBase.EnterState(InternalTransaction tx)

   at System.Transactions.EnlistableStates.Promote(InternalTransaction tx)

   at System.Transactions.Transaction.Promote()

   at System.Transactions.TransactionInterop.ConvertToOletxTransaction(Transaction transaction)

Investigation:

Sherlock

Microsoft Distributed Transaction Coordinator (MS DTC) tried to reach the SQL Server machine to propagate a call but was rejected. This made the machine the primary suspect in the case. Our biggest lead yet.

Reinforcing this hunch, we found out that MS DTC for the Commerce Server machine was configured for network access but the SQL Server machine was not.

However, a contradicting statement from witness almost sank our lead. It was mentioned that another Sitecore Commerce setup has almost the same settings but was working, so it can’t be it! Not to mention, the settings being used for all involved machines were based on the official deployment manual.

But alas, we didn’t give up. We later learned of how all 3 servers (Web/Commerce Server/SQL) are all on different machines. Using the official deploying guide itself, we quickly found out that this type of distributed setup requires both Commerce Server and SQL Server machines to have their MS DTC configured for network access.

From the Official Sitecore Commerce 8.1 Deployment Guide:

Enabling MSDTC

http://commercesdn.sitecore.net/SCpbCS81/SitecoreCommerceDeploymentGuide/en-us/index.html#c_EnablingMSDTC.html

Aha!

Case Conclusion:

If Commerce Server and SQL Server are running on different machines, each machine’s MS DTC should be configured to allow network access.

http://commercesdn.sitecore.net/SCpbCS81/SitecoreCommerceDeploymentGuide/en-us/index.html#c_Configure%20CSCatalogInventoryDBdifferentServers.html

In the end, the SQL Server machine was configured to allow network access and everything ran smoothly.

Case Status:

Case Closed

 

For more information on our Sitecore Commerce services, please click here

Tags: Sitecore;

SEARCH ARTICLES

CATEGORIES

Sitecore 146
Commerce 100
Web Development 100
Sitecore Commerce 83
Sitecore Experience Commerce 9 64
Sitecore Experience Commerce 59
Content Management 55
eCommerce 48
B2B eCommerce 42
Sitecore Experience Platform 41
Sitecore Platinum Partner 39
Architecture 34
Insite 29
User Experience 26
Strategy 22
B2B Commerce Blogs 21
B2C eCommerce 21
commerceconnect 21
CloudCraze 20
SaaS (Software as a Service) 20
Cloud 17
Commerce Server 17
Salesforce B2B Commerce Cloud 16
Mobile 13
Search 13
Analytics 12
Application Development 12
Plugins 12
Digital Transformation 11
Sitecore Symposium 11
SPEAK 10
Helix 10
DMS 8
Social 8
Business Process 7
Authentication 7
5 Reasons 7
BI and Big Data 6
Data Visualization 6
Sitecore Presentation 6
Coveo 6
NET Development 5
Microsoft Azure 5
Automation 5
Front-End Development 4
SaaS (Software as a Service) 4
Digital Strategy 4
Brightcove 4
Press Release 4
Identity 3
Avalara Tax 3
Sitecore Experience Accelerator (SXA) 3
Sitecore Layouts 3
Video 3
SPE 3
Multi-site 3
Multi-lingual 3
Accessibility 3
Habitat 3
Vault 3
Managed Services 2
CDN 2
SMB 2
Cryptocurrency 2
Sitecore Forms 2
Sitecore Experience Commerce 9 Promotions 2
Uncategorized 2
EXM 2
Conversational Commerce 2
Sitecore SaaS 2
Security 2
Unit Testing 2
Headless Architecture 2
Sitecore Experience Awards 2
Content Delivery Network 1
Configure Price Quote 1
CPQ 1
Blockchain 1
Coupons 1
Sitecore Rss 1
Google 1
Artificial Intelligence 1
Machine Learning 1
Okta 1
RFP Process 1
NoSQL 1
Flex Accelerator for Sitecore 1
Reviews 1
SEO 1
Page Labels 1