Enable SSL on your Sitecore Website

I will straight get to the point. Recently I started exploring the new Sitecore Universal Tracker and Sitecore Horizon! For both components it is essential that your Sitecore website has SSL enabled, or in other words has the 443 or https binding enabled. So, I was trying to be lazy and find a quick way of doing so and started looking at how SIF does that for the xConnect service.

In my search, I found exactly what I was looking for! :

Checkout the documentation for the Invoke-AddWebFeatureSSLTask here : C:\Program Files\WindowsPowerShell\Modules\SitecoreInstallFramework\2.0.0\docs\Invoke-AddWebFeatureSSLTask.md.

So, that simple it is.

  • Run a powershell command window as admin.
  • Run the SIF command to import the SIF module.

    Import-Module SitecoreInstallFramework

  • Then run the Invoke-AddWebFeatureSSLTask with the -Hostname parameter set to the Sitecore site hostname, you want to enable SSL for.

    Invoke-AddWebFeatureSSLTask -Hostname <your site>

And you are all set. Running this command will

  • check if there is a cert for the site in question
  • create one if one is not there
  • add/configure the https/443 binding
  • set the cert that was created on the binding


Note: This did not work when I tried to enable SSL on Universal Tracker services. For that I referred to : Sitecore – Using SSL part 1.


Experience Analytics · Sitecore · Sitecore 9 · Solr · xConnect

Setting up xConnect – What I did?

First of all I must mention : EXCELLENT documentation on Sitecore documentation site.

I was on my first embarkation towards the xConnect world to implement a Subscription List that can be managed in the List Manager. I have not worked with xDB or xConnect any more than reading up on articles! This was my first hands-on encounter with xConnect. I thought I’d just capture the steps here for my personal reference in the future and more importantly this could help someone else who might be just getting on the xConnect train.

Step 1

Make sure you have both xConnect Solr services running in Windows Services.

  • Sitecore Marketing Automation Engine – MarketingAutomationService
  • Sitecore xConnect Search Indexer – IndexWorker

Step 2

If you intend to capture visit data for anonymous visitors of your site, you need to enable the indexing of anonymous contact. Here is the documentation on how to do that – https://doc.sitecore.net/developers/xp/xconnect/xconnect-search-indexer/enable-anonymous-contact-indexing.html

In short, you will be touching 2 files in your xConnect site –

  • \App_data\config\sitecore\SearchIndexer\sc.Xdb.Collection.IndexerSettings.xml
  • \App_data\jobs\continuous\IndexWorker\App_data\Config\Sitecore\SearchIndexer\sc.Xdb.Collection.IndexerSettings.xml

In both these files you will need to change the following node to true.


Step 3

Rebuild the index in Solr. Here is documentation for that: https://doc.sitecore.net/developers/xp/xconnect/xconnect-search-indexer/rebuild-index/rebuild-solr-index.html

In short, if you have the cores and all set up, you can just run the command in command window.

  • Open a cmd window as administrator.
  • Change directory to, <Drive>\<Your xConnect site root>\App_Data\jobs\continuous\Indexworker
  • Run this command

    XConnectSearchIndexer -rr

Step 4

There are excellent sample code snippets on the documentation site. For example, implementing the code to add facets to your contacts. Here is very useful information about Contact facets: https://doc.sitecore.net/developers/xp/tracking-and-session/tracker/tracking-contacts/contact-facets/index.html

And sample code to add/update facets to contacts: https://doc.sitecore.net/developers/xp/tracking-and-session/tracker/tracking-contacts/contact-facets/update-facets.html

Remember one thing. Don’t just copy the code and expect it to work magically. It is called “Sample Code” for a reason. Here is an example of what I had to change –


contact = client.Get<Contact>(new
IdentifiedContactReference(anyIdentifier.Source, anyIdentifier.Identifier), new

My Code

						contact = client.Get<Contact>(new
														IdentifiedContactReference(anyIdentifier.Source, anyIdentifier.Identifier), new
																								Sitecore.XConnect.ContactExpandOptions(PersonalInformation.DefaultFacetKey, ListSubscriptions.DefaultFacetKey, EmailAddressList.DefaultFacetKey));

When you load existing contacts, make sure to load them with whichever facets you need access to. Facets on contacts are not loaded automagically!

Well, nothing happens without any issues. But that’s for a later date…when I am actually able to resolve them. 🙂



Experience Analytics · Sitecore · Sitecore 9 · xConnect

Solved: Failed to synchronize segments. Message: Ensure definition type did not complete successfully. StatusCode: 500

I recently started working on setting up Lists in my Sitecore 9 (Update 1) site locally and ran into logs filled with this exception –

Since the error was a 500 status code, I switched to xConnect logs under my xConnect site and found out that I was missing an active license.

The logs for xConnect sites are under the xConnect site folder > App_Data > logs.

I updated the license and SOLVED!!! The errors disappeared and the communication between my Sitecore Site instance and the xConnect instance was restored in no time!

What a SAVE!

Thought it might help someone else!



Commerce · Sitecore · Sitecore 9 · Sitecore Commerce

Sitecore commerce 9.0.2 Install – Operation timed out while rebuilding indexes

Hopefully, this will help whoever runs into this issue. While I was installing Sitecore Commerce 9.0.2, I ran into an error. At the last couple task while rebuilding the master index the server timed out.

I looked for the error message in the Json file the error came from. It was the SitecoreUtilityTasks.psm1 file. For me the file was under : C:\SitecoreXCSetup9.2\SIF.Sitecore.Commerce.1.2.14\Modules\SitecoreUtilityTasks folder.

I updated the timeout limits to almost 10 times more.

Just to avoid such time outs during any tasks while the install script is running, just increase the timeout. Look for “Invoke-RestMethod” in the above mentioned file and update the values of time out.

Below is my file. You can compare it with original Sitecore commerce install file to see what was changed. This did the trick for me. I just changed most of them to : 7200.

Function Invoke-InstallModuleTask {

Copy-Item $ModuleFullPath -destination $ModulesDirDst -force

$moduleToInstall = Split-Path -Path $ModuleFullPath -Leaf -Resolve

Write-Host "Installing module: " $moduleToInstall -ForegroundColor Green ; 
$urlInstallModules = $BaseUrl + "/InstallModules.aspx?modules=" + $moduleToInstall
Write-Host $urlInstallModules
Invoke-RestMethod $urlInstallModules -TimeoutSec 7200

Function Invoke-InstallPackageTask {

Copy-Item $PackageFullPath -destination $PackagesDirDst -force

$packageToInstall = Split-Path -Path $PackageFullPath -Leaf -Resolve

Write-Host "Installing package: " $packageToInstall -ForegroundColor Green ; 
$urlInstallPackages = $BaseUrl + "/InstallPackages.aspx?package=" + $packageToInstall
Write-Host $urlInstallPackages
Invoke-RestMethod $urlInstallPackages -TimeoutSec 7200

Function Invoke-PublishToWebTask {

Write-Host "Publishing to web..." -ForegroundColor Green ; 
Start-Sleep -Seconds 60
$urlPublish = $BaseUrl + "/Publish.aspx"
Invoke-RestMethod $urlPublish -TimeoutSec 7200
Write-Host "Publishing to web complete..." -ForegroundColor Green ; 

Function Invoke-CreateDefaultStorefrontTask {
[string]$scriptName = "CreateDefaultStorefrontTenantAndSite",
[string]$siteName = "",

if($siteName -ne "")
Write-Host "Restarting the website and application pool for $($siteName)..." -ForegroundColor Green ; 
Import-Module WebAdministration

Stop-WebSite $siteName

if((Get-WebAppPoolState $siteName).Value -ne 'Stopped')
Stop-WebAppPool -Name $siteName

Start-WebAppPool -Name $siteName
Start-WebSite $siteName
Write-Host "Restarting the website and application pool for $($siteName) complete..." -ForegroundColor Green ; 

Write-Host "Creating the default storefront..." -ForegroundColor Green ;

#Added Try catch to avoid deployment failure due to an issue in SPE 4.7.1 - Once fixed, we can remove this
$urlPowerShellScript = $BaseUrl + "/-/script/v2/master/$($scriptName)?user=$($sitecoreUsername)&password=$($sitecoreUserPassword)"
Invoke-RestMethod $urlPowerShellScript -TimeoutSec 7200
$errorMessage = $_.Exception.Message
Write-Host "Error occured: $errorMessage..." -ForegroundColor Red; 

Write-Host "Creating the default storefront complete..." -ForegroundColor Green; 

Function Invoke-RebuildIndexesTask {

Write-Host "Rebuilding index 'sitecore_core_index' ..." -ForegroundColor Green ; 
$urlRebuildIndex = $BaseUrl + "/RebuildIndex.aspx?index=sitecore_core_index"
Invoke-RestMethod $urlRebuildIndex -TimeoutSec 7200
Write-Host "Rebuilding index 'sitecore_core_index' completed." -ForegroundColor Green ;

Write-Host "Rebuilding index 'sitecore_master_index' ..." -ForegroundColor Green ; 
$urlRebuildIndex = $BaseUrl + "/RebuildIndex.aspx?index=sitecore_master_index"
Invoke-RestMethod $urlRebuildIndex -TimeoutSec 7200
Write-Host "Rebuilding index 'sitecore_master_index' completed." -ForegroundColor Green ;

Write-Host "Rebuilding index 'sitecore_web_index' ..." -ForegroundColor Green ; 
$urlRebuildIndex = $BaseUrl + "/RebuildIndex.aspx?index=sitecore_web_index"
Invoke-RestMethod $urlRebuildIndex -TimeoutSec 7200
Write-Host "Rebuilding index 'sitecore_web_index' completed." -ForegroundColor Green ; 

Function Invoke-GenerateCatalogTemplatesTask {

Write-Host "Generating Catalog Templates ..." -ForegroundColor Green ; 
$urlGenerate = $BaseUrl + "/GenerateCatalogTemplates.aspx"
Invoke-RestMethod $urlGenerate -TimeoutSec 1800
Write-Host "Generating Catalog Templates completed." -ForegroundColor Green ;

Function Invoke-DisableConfigFilesTask {

foreach ($configFileName in $ConfigFileList) {
Write-Host "Disabling config file: $configFileName" -ForegroundColor Green;
$configFilePath = Join-Path $ConfigDir -ChildPath $configFileName
$disabledFilePath = "$configFilePath.disabled";

if (Test-Path $configFilePath) {
Rename-Item -Path $configFilePath -NewName $disabledFilePath;
Write-Host " successfully disabled $configFilePath";
} else {
Write-Host " configuration file not found." -ForegroundColor Red;
Function Invoke-EnableConfigFilesTask {

foreach ($configFileName in $ConfigFileList) {
Write-Host "Enabling config file: $configFileName" -ForegroundColor Green;
$configFilePath = Join-Path $ConfigDir -ChildPath $configFileName
$disabledFilePath = "$configFilePath.disabled";
$exampleFilePath = "$configFilePath.example";

if (Test-Path $configFilePath) {
Write-Host " config file is already enabled...";
} elseif (Test-Path $disabledFilePath) {
Rename-Item -Path $disabledFilePath -NewName $configFileName;
Write-Host " successfully enabled $disabledFilePath";
} elseif (Test-Path $exampleFilePath) {
Rename-Item -Path $exampleFilePath -NewName $configFileName;
Write-Host " successfully enabled $exampleFilePath";
} else {
Write-Host " configuration file not found." -ForegroundColor Red;

Function Invoke-ExpandArchive {

Expand-Archive $SourceZip -DestinationPath $DestinationPath -Force

Register-SitecoreInstallExtension -Command Invoke-InstallModuleTask -As InstallModule -Type Task -Force

Register-SitecoreInstallExtension -Command Invoke-InstallPackageTask -As InstallPackage -Type Task -Force

Register-SitecoreInstallExtension -Command Invoke-PublishToWebTask -As PublishToWeb -Type Task -Force

Register-SitecoreInstallExtension -Command Invoke-RebuildIndexesTask -As RebuildIndexes -Type Task -Force

Register-SitecoreInstallExtension -Command Invoke-GenerateCatalogTemplatesTask -As GenerateCatalogTemplates -Type Task -Force

Register-SitecoreInstallExtension -Command Invoke-EnableConfigFilesTask -As EnableConfigFiles -Type Task -Force

Register-SitecoreInstallExtension -Command Invoke-DisableConfigFilesTask -As DisableConfigFiles -Type Task -Force

Register-SitecoreInstallExtension -Command Invoke-CreateDefaultStorefrontTask -As CreateDefaultStorefront -Type Task -Force

Register-SitecoreInstallExtension -Command Invoke-ExpandArchive -As ExpandArchive -Type Task -Force
# SIG # Begin signature block
# 3s+gghL8MIID7jCCA1egAwIBAgIQfpPr+3zGTlnqS5p31Ab8OzANBgkqhkiG9w0B
# d3RlIENlcnRpZmljYXRpb24xHzAdBgNVBAMTFlRoYXd0ZSBUaW1lc3RhbXBpbmcg
# WvsUwnaOQwElQ7Sh4kX06Ld7w3TMIte0lAAC903tv7S3RCRrzV9FO9FEzkMScxeC
# i2m0K8uZHqxyGyZNcR+xMd37UWECU6aq9UksBXhFpS+JzueZ5/6M4lc/PcaS3Er4
# ezPkeQr78HWIQZz/xQNRmarXbJ+TaYdlKYOFwmAUxMjJOxTawIHwHw103pIiq8r3
# +3R8J+b3Sht/p8OeLa6K6qbmqicWfWH3mHERvOJQoUvlXfrlDqcsn6plINPYlujI
# Af8CAQAwPwYDVR0fBDgwNjA0oDKgMIYuaHR0cDovL2NybC50aGF3dGUuY29tL1Ro
# MDQ4LTEwDQYJKoZIhvcNAQEFBQADgYEAAwmbj3nvf1kwqu9otfrjCR27T4IGXTdf
# plKfFo3qHJIJRG71betYfDDo+WmNI3MLEm9Hqa45EfgqsZuwGsOO61mWAK3ODE2y
# 0DGmCFwqevzieh1XTKhlGOl5QGIllm7HxzdqgyEIjkHq3dlXPx13SYcqFgZepjhq
# eW1hbnRlYyBUaW1lIFN0YW1waW5nIFNlcnZpY2VzIFNpZ25lciAtIEc0MIIBIjAN
# mNutLA9KxW7/hjxTVQ8VzgQ/K/2plpbZvmF5C1vJTIZ25eBDSyKV7sIrQ8Gf2Gi0
# jkBP7oU4uRHFI/JkWPAVMm9OV6GuiKQC1yoezUvh3WPVF4kyW7BemVqonShQDhfu
# ltthO0VRHc8SVguSR/yrrvZmPUescHLnkudfzRC5xINklBm9JYDh6NIipdC6Anqh
# d5NbZcPuF3S8QYYq3AhMjJKMkS2ed0QfaNaodHfbDlsyi1aLM73ZY8hJnTrFxeoz
# C9Lxoxv0i77Zs1eLO94Ep3oisiSuLsdwxb5OgyYI+wu9qU+ZCOEQKHKqzQIDAQAB
# Oi8vdHMtb2NzcC53cy5zeW1hbnRlYy5jb20wNwYIKwYBBQUHMAKGK2h0dHA6Ly90
# cy1haWEud3Muc3ltYW50ZWMuY29tL3Rzcy1jYS1nMi5jZXIwPAYDVR0fBDUwMzAx
# oC+gLYYraHR0cDovL3RzLWNybC53cy5zeW1hbnRlYy5jb20vdHNzLWNhLWcyLmNy
# HQ4EFgQURsZpow5KFB7VTNpSYxc/Xja8DeYwHwYDVR0jBBgwFoAUX5r1blzMzHSa
# 1N197z/b7EyALt0wDQYJKoZIhvcNAQEFBQADggEBAHg7tJEqAEzwj2IwN3ijhCcH
# bxiy3iXcoNSUA6qGTiWfmkADHN3O43nLIWgG2rYytG2/9CwmYzPkSWRtDebDZw73
# BaQ1bHyJFsbpst+y6d0gxnEPzZV03LZc3r03H0N45ni1zSgEIKOq8UvEiCmRDoDR
# EfzdXHZuT14ORUZBbg2w6jiasTraCXEQ/Bx5tIB7rGn0/Zy2DBYr8X9bCT2bW+IW
# yhOBbQAuOA2oKY8s4bL0WqkBrxWcLC9JG9siu8P+eJRRw4axgohd8D20UaF5Mysu
# e7ncIAkTcetqGVvP6KUwVyyJST+5z3/Jvz4iaGNTmr1pdKzFHTx/kuDDvBzYBHUw
# huhrQ/p/0Cg7BRrYjw7ZMx8HNBamEm0El+sedPWYeAAFrjDSpECxYjvK8/NOS9dk
# tC35XL2TREMOJk746mZqia+g+NQDPEaDjNPG/iT0gWsOeCa9dUcIUtnBQ0hBKsuR
# bau3n7w1uIgr3zf29vc9NhCoz1m2uBNIuLBlkKguXwgPt4rzj66+18JV3xyLQJoS
# xczSX8FJMz84dcOfALxjTj6RUF5TNSQLD2pACgYWl8MM0lEtD/1eif7TKMHqaA+s
# L2h0dHA6Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9zaGEyLWFzc3VyZWQtY3MtZzEuY3Js
# MDWgM6Axhi9odHRwOi8vY3JsNC5kaWdpY2VydC5jb20vc2hhMi1hc3N1cmVkLWNz
# dHRwczovL3d3dy5kaWdpY2VydC5jb20vQ1BTMAgGBmeBDAEEATCBhAYIKwYBBQUH
# AQEEeDB2MCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdpY2VydC5jb20wTgYI
# SIb3DQEBCwUAA4IBAQBozpJhBdsaz19E9faa/wtrnssUreKxZVkYQ+NViWeyImc5
# qEZcDPy3Qgf731kVPnYuwi5S0U+qyg5p1CNn/WsvnJsdw8aO0lseadu8PECuHj1Z
# 5w4mi5rGNq+QVYSBB2vBh5Ps5rXuifBFF8YnUyBc2KuWBOCq6MTRN1H2sU5LtOUc
# Qkacv8hyom8DHERbd3mIBkV8fmtAmvwFYOCsXdBHOSwQUvfs53GySrnIYiWT0y56
# mVYPwDj7h/PdWO5hIuZm6n5ohInLig1weiVDJ254r+2pfyyRT+02JVVxyHFMCLwC
# A1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQw
# RPV/5aid2zLXcep2nQUut4/6kkPApfmJ1DcZ17aq8JyGpdglrA55KDp+6dFn08b7
# KSfH03sjlOSRI5aQd4L5oYQjZhJUM1B0sSgmuyRpwsJS8hRniolF1C2ho+mILCCV
# rhxKhwjfDPXiTWAYvqrEsq5wMWYzcT6scKKrzn/pfMuSoeU7MRzP6vIK5Fe7SrXp
# dOYr/mzLfnQ5Ng2Q7+S1TqSp6moKq4TzrGdOtcT3jNEgJSPrCGQ+UpbB8g8S9MWO
# D8Gi6CxR93O8vYWxYoNzQYIH5DiLanMg0A9kczyen6Yzqf0Z3yWT0QIDAQABo4IB
# Oi8vb2NzcC5kaWdpY2VydC5jb20wQwYIKwYBBQUHMAKGN2h0dHA6Ly9jYWNlcnRz
# LmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEFzc3VyZWRJRFJvb3RDQS5jcnQwgYEGA1Ud
# HwR6MHgwOqA4oDaGNGh0dHA6Ly9jcmw0LmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEFz
# c3VyZWRJRFJvb3RDQS5jcmwwOqA4oDaGNGh0dHA6Ly9jcmwzLmRpZ2ljZXJ0LmNv
# bS9EaWdpQ2VydEFzc3VyZWRJRFJvb3RDQS5jcmwwTwYDVR0gBEgwRjA4BgpghkgB
# AQA+7A1aJLPzItEVyCx8JSl2qB1dHC06GsTvMGHXfgtg/cM9D8Svi/3vKt8gVTew
# 4fbRknUPUbRupY5a4l4kgU4QpO4/cY5jDhNLrddfRHnzNhQGivecRk5c/5CxGwcO
# kRX7uq+1UcKNJK4kxscnKqEpKBo6cSgCPC6Ro8AlEeKcFEehemhor5unXCBc2XGx
# DI+7qPjFEmifz0DLQESlE/DmZAwlCEIysjaKJAL+L3J+HNdJRZboWR3p+nRka7Lr
# ZkPas7CM1ekN3fYBIM6ZMWM9CBoYs4GbT8aTEAb8B4H6i9r5gkn3Ym6hU/oSlBiF
# bTExMC8GA1UEAxMoRGlnaUNlcnQgU0hBMiBBc3N1cmVkIElEIENvZGUgU2lnbmlu
# N8XPJzAGWGJe+fVu669fRRENiehBR3vZ4+30kMf4E2Zo40M/IGllWgKeNEEcwjDd
# jTOuTMktTvUfSpTHfvn7yUfRUWotSCOdj6gNosFIisU7LXFaGv3PfqgTldhtN6Hv
# bWzF8pC868ZRJPYWjkPQTiXAprOxg2mOOiz1lFpT797GuZEUHXqABDQaDI8Dlzsh
# gOzOGW8fSiImmdmJj0xVQi0o17HNgPBPBmEbsFprzmR8l8iVGBUUI8bGiJCWoq8D
# hmxf6R28hqFhreg2XhRC9ZYXRrRFPo2eO9wZP+i6tYkEB3FLJpChggILMIICBwYJ
# bXBpbmcgU2VydmljZXMgQ0EgLSBHMgIQDs/0OMj+vzVuBNhqmBsaUDAJBgUrDgMC
# MTgwNjE0MTc1MTMyWjAjBgkqhkiG9w0BCQQxFgQU8PjQm4ne7nyHesLUVC7qZN9g
# Zezpoadc+T54GyDPVxlMIPd8C1aHgVNGlPwg4a9cIuqhXLO1BcLyreOdWHE3Hrvm
# NNbCaWZW0J5rLKrpdcDh6Sfo83hFgWxO9zRv++KvuG1bW3Zi5maZzcVtzq2kuDJ5
# QCdu0WJdmVHN3EKFCh/T/IYUE/2FRYLIt9Vm1WA5zktwpmZJY2YBBXudMzWrnvsz
# hv71ZUzjhLvCQNbAAxa9C6+tlBMbyD4PKhMA+szjm4cwVdGuI19UQ2ItzpOltZg9
# nPrzDsMFOQDGEZmmlU0V98frgh2oDB+Sli6zZfWESnYcqKa77A==
# SIG # End signature block



Commerce · Sitecore · Sitecore 9 · Sitecore Commerce

Sitecore Commerce 9.0.2: Setting up Postman Samples Collection

Sitecore Commerce comes with excellent API samples that you can check out in Postman. There are a few easy steps to follow to set up this samples API calls in Postman. If you still need to install Sitecore Commerce, checkout my post for the same: https://davehetal.wordpress.com/2018/11/05/sc_xc_9-0-2/

Then proceed with the following easy steps to set up the cool Postman API samples.

Step 1: Navigate to your Sitecore Commerce install folder. For me it was : C:\SitecoreXCSetup9.2.

Step 2: Find and extract the zip file: Sitecore.Commerce.Engine.SDK.2.2.72.zip. In the extracted folder, you will see postman folder and inside that folder are the API samples.

Step 3: If you do not have already, download and install Postman app.: https://www.getpostman.com/apps

Step 4: Open Postman app and navigate to Settings to turn off SSL. Remember, this is only for your development environment.

Sitecore recommends strongly to keep the SSL on for Production environments.

Step 5: Import the DevOps and Shops folder into Postman. Follow the screenshots below.

Step 6: Import the environments. Follow the screen shots.

Step 7: Turn off the flag “EnableAntiForgery” in your Sitecore Commerce Install. Navigate to the config.json file of the CommerceAuthoring install for your Sitecore Commerce instance. For me it was C:\inetpub\wwwroot\CommerceAuthoring_ XcStoreFront_902\wwwroot\config.json. Find the “AntiForgeryEnabled” flag and set it to false.

You must do this in development environment only.

Step 8: After all is done, you will see all the API samples in the left panel in Postman.

Step 9: To start exercising these sample API calls you would need to get an auth token first. To do so, select the “Habitat Environment” in Postman.

Step 10: Select the Authentican > Sitecore > GetToken call and click on send.

Hopefully, all is well and you should see the following response –

Commerce · Sitecore · Sitecore 9 · Sitecore Commerce

Installing Sitecore Commerce 9.0.2 – easy steps!

After coming back from Sitecore Symposium, I started working on something I hadn’t had time all year. Getting Sitecore Commerce certified. Before I could start studying up, I needed a refresher installing Sitecore Commerce – now the release 9.0 Update 2. So I got started and here are the steps I captured of the latest Sitecore Commerce 9.0.2 installation.

  1. Set up solr windows service.

    Create a folder named Projects under c:\ drive. Create a new folder under Projects folder named XcStoreFront_902. Create a new folder under XcStoreFront_902 named “Solr”. Download and extract Solr 6.6.2 and NSSM files under the “Solr” folder.

    Solr 6.6.2: https://archive.apache.org/dist/lucene/solr/6.6.2/solr-6.6.2.zip

    NSSM: https://nssm.cc/release/nssm-2.24.zip

    So, you will now the folder structure as below –

  2. Set up the Sitecore XP install folder. Create a new folder named SitecoreSetUp9.2 under c:\.
  3. Set up the Sitecore XC install folder. Create a new folder named SitecoreXCSetup9.2 under c:\.
  4. Download and extract Sitecore Install packages for Sitecore 9.0.2 for XP and XC.

    Sitecore XP: https://dev.sitecore.net/Downloads/Sitecore_Experience_Platform/90/Sitecore_Experience_Platform_90_Update2.aspx.

    Extract and copy the content to the folder you created in Step 1.


  5. Siteocre XC: https://dev.sitecore.net/Downloads/Sitecore_Commerce/90/Sitecore_Experience_Commerce_90_Update2.aspx

    Extract and copy the content to the folder you created in Step 2.      2018-11-04_15-56-13

  6. Copy the Sitecore license file into the folder you created in Step 2.


    Install Solr as windows service. Run command prompt as admin. You can choose whatever name and port you wish for the name of the Solr service and the port you want it to run on.

    cd C:\Projects\XcStoreFront_902\Solr\nssm-2.24\win64

    NSSM Install solr-6.6.2_XcStoreFront_902


  7. Next, download and copy SolrSSL.ps1 from Kamsar’s Git to the folder you created in Step 3. That script is a life saver. : https://gist.github.com/kamsar/c3c8322c1ec40eac64c7dd546e5124de#file-solrssl-ps1
  8. Run PowerShell command window as admin and –

    cd C:\SitecoreSetUp9.2

    Run the command below in Admin Powershell command window –

    .\solrssl.ps1 -KeystoreFile C:\<location of your solr directory from step 1>\server\etc\solr-ssl.keystore.jks

  9. Copy following files if they are not already dropped in your solr directory at C:\<location of your solr directory from step 1>\server\etc



  10. Add following to your solr.in.cmd file located at C:\<location of your solr directory from step 1>\bin folder.

    set SOLR_SSL_KEY_STORE=etc/solr-ssl.keystore.jks


    set SOLR_SSL_TRUST_STORE=etc/solr-ssl.keystore.jks


  11. Test your solr service with SSL : https://localhost:8983/solr

    Install Sitecore XP

  12. Checkout my Sitecore XP install prep post and make sure you have everything you need.: https://davehetal.wordpress.com/2017/11/01/sitecore-9-fun-1-getting-ready/
  13. Open PowerShell ISE as admin. In the window underneath, run the following commands –

    cd C:\SitecoreSetUp9.2

    Import-Module SitecoreFundamentals

    Import-Module SitecoreInstallFramework

  14. Download the Sitecore Install script from here and make necessary changes as per your environment.: https://github.com/hetaldave/Siteocre9.0.2_InstallFiles/blob/master/SitecoreSetUp902.ps1
  15. Copy the install script into the folder: C:\SitecoreSetUp9.2.
  16. Open the install script in the PowerShell ISE and run it. This will install the Sitecore XP instance.
  17. Follow the post install steps – for all post installation steps refer to installation guide.: https://dev.sitecore.net/~/media/F97AEBC82D2A4EFFBED9C95EC5E9DC31.ashx

    Rebuild the Search Indexes and the Link Databases.

    Deploy Marketing Definitions from Control panel.


    Install Sitecore Commerce (Sitecore XC)

  18. Run command prompt as admin and run the following commands –

    New-SelfSignedCertificate -certstorelocation cert:\localmachine\my -dnsname “storefront.local”

    Export-Certificate -Cert cert:\localMachine\my\<Thumbprint-of-cert> -FilePath C:\SitecoreXCSetup9.2\storefront.local.cer

  19. Navigate to C:\SitecoreXCSetup9.2 and extract the zip file SIF.Sitecore.Commerce.1.2.14.zip in its own folder named SIF.Sitecore.Commerce.1.2.14
  20. Download the Sitecore XC install file into the SIF.Sitecore.Commerce.1.2.14 folder from: https://github.com/hetaldave/Siteocre9.0.2_InstallFiles/blob/master/SitecoreXCSetup902.ps1
  21. In the Powershell ISE window run the following command –

    cd C:\SitecoreXCSetup9.2\SIF.Sitecore.Commerce.1.2.14

  22. Go to IIS manager and make sure that the XP site and app_pool are running.
  23. Open the file C:\SitecoreXCSetup9.2\SIF.Sitecore.Commerce.1.2.14\SitecoreXCSetup902.ps1 in ISE. Make necessary changes to match your environment and run it. This will take several minutes.
  24. Follow the post install steps – for all post installation steps refer to installation guide.: http://commercesdn.sitecore.net/SitecoreXC_9.0/Installation-Guide/9.0.2/SitecoreXC-9.0_Installation_Guide(On-Prem).pdf

    I followed the following and some more –

    Open Sitecore admin.

    Update the Storefront theme: Navigate to /sitecore/content/Sitecore/Storefront/Presentation/Page Designs. Switch to Content tab for the item and and set the theme of your choosing in the field “Theme” under Styling section.

    Update the storefront target: Navigate to /sitecore/content/Sitecore/Storefront/Settings/Site Grouping/Storefront and update the hostname to match the hostname for your site.

    Smart Publish the site will all languages.

    Clean all DBs – one at a time.

    Rebuild link databases. – one at a time.

    Rebuild all indexes. – one at a time.

    Redeploy marketing definitions.

And……browse the beautiful Sitecore Commerce site.


My Symposium 2018 Takeaways and Sketchnotes


This symposium was a different one for me.  The sessions dedicated to women and the session LED by women were truly inspiring.  Also, I tried a different note-taking technique this year, sketchnoting.  See my previous post.  Here are my sketchnotes and some quick takeaways from each session:

The Cortex Engine:  Process at Scale

“Cortex is to Sitecore processing like xConnect is to xDB.”

Cortex is a set of components used to gather large amounts of data and process it via machine learning into marketing-ready information.  It uses tasks (distributed tasks and deferred actions–lower priority) to do the processing that is normally done manually by a marketing team.

A big takeaway from this session is that you’ll need a data scientist to provide direction to the developer to fine tune the Cortex model and then to be able to consume the processed data. Cortex will be available in Sitecore…

View original post 423 more words