1. Sitecore Commerce Documention
Great resource is Sitecore official documentation which contains:
Developer's Guide -> http://commercesdn.sitecore.net/SitecoreXC_9.0/Developers-Guide/Sitecore-XC-9.0_Developers_Guide.pdf
DevOps Guide -> http://commercesdn.sitecore.net/SitecoreXC_9.0/DevOps-Guide/Sitecore-XC-9.0_DevOps_Guide.pdf
The minion project lives inside of your Engine solution so you would not use a proxy. The proxy is mainly for projects which live outside of the Engine environment to communicate with the engine.
You typically add the references via nuget packages for commerce plugins such as catalogs, orders, etc.
Starting in commerce I had a million questions and with ...
OOTB Sitecore Commerce 9 uses USD currency as a default currency.
If you want to use different currency you need to do:
Navigate to your Home item and check Control Panel Configuration in Storefront Settings section. There Sitecore store reference to Storefront Configuration for your Sitecore Commerce site.
Navigate to /sitecore/Commerce/Commerce Control ...
The json files actually contain serialized .NET classes so what you see in the $type field is the namespace of a class, followed by the name of the assembly.
When this information is deserialized, the $type is used to instantiate the proper class.
The error you got indicates the .NET runtime cannot find the specified assembly or namespace in the bin ...
There's no simple "Set product X to inventory Y" command or pipeline, but here's how we've done it. I've included stubs for handling variants, but not the code that actually loads the variant.
I preferred a pipeline, but I'll just delimit the blocks with comments to keep things simple. The pipeline was invoked once for each inventory update from a Command ...
When you trigger GetToken command you should get SitecoreIdToken set to your global variables. This is done on 'Tests' tab via the following command
postman.setGlobalVariable("SitecoreIdToken", "Bearer " + jsonData.access_token);
You can check your variables by clicking 'Eye' icon next to environment.
If the GetToken response is not saved to Global ...
The short answer is that the custom pipeline needs to accept the argument as IPipelineConfiguration<ICustomPipelineInterface>
When you configure a pipeline via pipelines.AddPipeline<T,K> or pipelines.ConfigurePipeline<T>, you're actually configuring a DI-injected service for IPipelineConfiguration<T>. When the pipeline is created at ...
You will need to save category first and then provide localizations for it. Let's say you already have Category categoryEntity. You then need to do the following steps:
// getting localization entity for your category. it will automatically create new if there is no existing one
LocalizationEntity localizationEntity = await this....
There are some changes in Experience Commerce 9.2, copied below from one of the related support ticket:
In previous versions of Sitecore Commerce, the LocalizedEntityComponent was used to know which localization entity was related to an entity. In 9.2 the localization entity ID was changed to a composition of the commerce entity ID for a localization entity ...
If you're running with the default local installation that XC sets up for a developer machine then all communication runs to the authoring engine role for both the Sitecore Admin tools and the storefront, so the shops instance will never be hit and hence wont generate any logs.
This is because you're only running a single instance of the CMS, acting as both ...
Update 2019-04 - Commerce 9.1 resolves the reentrancy problems, just override Minion.Execute instead of Minion.Run. For a deep dive into the changes, I've written up an article Reentrancy improvements to Minions in Sitecore Commerce 9.1
Original answer (Commerce 9.0):
First up, I consider the current behavior a bug since it directly conflicts with minions' ...
Looks like your profile and/or encryption might not be set up properly.
Please check and optionally re-run these steps from the Sitecore Commerce 8.2.1 Deployment Guide.
ProfileKeyManager.exe /kn /o "c:\profileEncryptionKeys.xml" /f
ProfileKeyManager.exe /ke /kf "c:\profileEncryptionKeys.xml" /reg HKEY_LOCAL_MACHINE\SOFTWARE\CommerceServer\...
Most services are, as you say, provided as interfaces so it's mostly down to mocking them for your purposes.
Having said that, some things are harder to mock than they first appear. Here's what I use to mock CommercePipelineExecutionContext:
static class FakeCommercePipelineExecutionContext
public static CommercePipelineExecutionContext CreateContext(...
I also faced this error and below are the steps I did to fix it.
Added the ConnectionString in appsettings.json (C:\inetpub\wwwroot\SitecoreIdentityServer\wwwroot) with "User Id", "Password" and removed "Integrated Security". Make sure the user id have all the required permission on the SQL server database, if not then Grant all those permission especially ...
Managed lists are just strings, they're not registered anywhere. You can add an order to a custom one by adding it to the Orders ListMembershipComponent or TransientListMembershipComponent (tl;dr the latter in your case) and then persisting the entity using IPersistEntityPipeline.
Implementation-wise, the SQL plugin has pipeline blocks in ...
probably it is too late to answer this, but as a reference for other which encountered the same problem. After installation i have got the same error, the reason for me was, i forgot to merge the merge configs to the web.config as mentioned here:
Go to the Website folder and open the web.config file.
Navigate to the \Website\MergeFiles folder.
Merge the ...
As written before, there is a IDeleteRelationshipPipeline to remove the relation, but you are most probably struggling with getting the Category ids, that the SellableItem relates to, to remove the relations. The relation is stored in ParentCategoryList of the SellableItems, but this list contains Sitecore item ids, and not the Commerce entity ids. So you ...
On my machine, i have some problem with xConnect client certificates and i got the same error.Even after making sure xConnect site works, i got the same error.
The root cause of error is saving "/sitecore/system/Marketing Control Panel/Experience Analytics/Dimensions/Connect/By campaigns for orders placed/All campaigns for orders placed" item.I was able to ...
I got this error because of Version parameter which I add it into Body call.
It turns out that this was another issue caused by critical pipeline code being defined in a sample plugin that I outlined in this question.
Basically, the cart plugin itself only registers two blocks: ClearCartLinesTotals and ClearCartTotals, with the rest of the functionality added by the AdventureWorks sample plugin. The reasons for this are unknown, but ...
I had something similar just a couple of weeks ago. I ended up solving it like this:
$contentItems = Get-ChildItem master:\content -Recurse
ForEach($item in $contentItems)
$item["__Default Workflow"] = $null
$item["__Lock"] = $null
$item["__Workflow State"] = $null
$item["__Workflow"] = $null
This happens when you create a CommerceContext without assigning it's Environment property (which has no associated constructor argument). Since policies are resolved from the environment, it will return null if there is no environment available.
So in your minion:
// This will cause GetPolicy to return null
var context = new CommerceContext(this.Logger, ...
I don't have experience debugging them with reflector. However, I have been able to successfully debug them with dotpeek as a symbol server: https://www.jetbrains.com/help/decompiler/Using_product_as_a_Symbol_Server.html
However, don't expect to much, the code is optimized by the compiler and debugging it this way is quite hard to setup. In my experience ...
It seem my problem was that I were using
when I should have used
have a .CreateSku()
You have three options here how to resolve this problem:
If you are not using Azure SQL, Sitecore recommends to turn on MSDTC on all servers. See option a) below.
If you are using Azure SQL, you can disable transactions. See option b).
If you are using Azure SQL, you have also other option and that it to enable MS Azure SQL databases with Commerce Server. ...
You can implement your custom plugin and use Commerce Server Api for get products/inventory and create entities for products/categories/catalogs/inventory and relationships in XC9.
For more details, you can follow the Ryan Bailey's instructions: https://blog.ryanbailey.co.nz/2018/05/sitecore-experience-commerce-minion-to.html
Currently there is no out of the box way of doing this. You will have to create your own plugin that reads the commerce server 11.0 catalog xml file and creates the corresponding entities. In the pre-release of SXC9 there was a naive plugin that did something similar, but this only imported the default commerce server fields. In our case, we reverse ...
Answer by Amitabh didn't work initially. I went to C:\inetpub\wwwroot\SitecoreIdentityServer\wwwroot\logs to view the latest log. It said:
Unhandled exception: "System.Data.SqlClient.SqlException (0x80131904): Cannot open database \"sc902.sc_Core\" requested by the login. The login failed.
I fixed this by running the following on the SQL server management ...
You can use method:
public static ItemModel GetItemById(CommerceContext commerceContext, string itemId, string language = null) from class Sitecore.Commerce.Plugin.Management.SitecoreConnectionManager
You can use it in next way:
Here is the method definition: