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


Sitecore Symposium 2018 – 3 Opening Keynotes

Awesome thoughts shared during Sitecore Symposium 2018 Opening Keynote Sessions!


So you didn’t attend Symposium but wanna find out about the Keynotes?

I tried my hand at sketchnoting for the conference and below I’ve included three notes:  Mark Frost CEO Sitecore, Paige O’Neill, CMO Sitecore, and Deane Barker, author of ‘Web Content Management: Systems, Features, and Best Practices’

Mark Frost CEO Sitecore – Opening Keynote

Main takeaways:

  • “Elevate the Experience”
  • Acquisition of StyleLabs – asset management tools
  • Integration with Salesforce Marketing Cloud
  • Advanced personalization with Cortex
  • Use JSS (Sitecore JavaScript Services) for faster time to market
  • Sitecore to adopt a public charity each year; this year, Canada’s SickKids
  • Women In Technology was a big theme for the year; stay tuned for a separate post on the topic

Mark Frost keynote

Paige O’Neill – CMO Sitecore, Opening Keynote

Three case studies with companies optimizing Sitecore:  Volvo (“Cars as a Service”), Cannondale (personalized bike recommendations based on habits), and SickKids (Award for best Acquisition Campaign after making…

View original post 107 more words

Commerce · Sitecore · Sitecore 9 · Sitecore Commerce

Sitecore Symposium: My Take Away…and Memories!

The Symposium syndrome started a week before the Symposium. I had just finished a release and was working through typical post-go-live issues pulling really long hours. The typical state of panic when your PM knows that you will not be available for the next week – not to mention I shared the same panic…staying away from coding for a week??? God help me!

The day of departure –The flight took off on time and by NOON I was in Orlando at the Symposium! The big Symposium balloon welcomed me and many like me to the Symposium – a week of meeting with awesome Sitecorians from around the world, a week of announcements of “What is New?”, a week of learning and absorbing as much knowledge as I could – not to mention the excitement of meeting with the 18 #womenofsitecore MVPs. We were like a gang of happy!

So…here we go –

Inspiring moments…

Not Impossible LabsGuest key note speaker Mick Ebeling introduced the way technology should be used – to bring smiles and make the world a better place. From almost suicidal travels to Sudan to help kids to a 83 years old pianist playing the piano for the first time since he was diagnosed with Parkinson’s – the journey was full of goosebumps and a tear or two at the corner of eyes with a smile on my face. People like Mick make us believe in the humanity and the fact that in the current times, there is still GOOD in the world.

#MoveTheDial – It was an inspiring presentation by Judi Kovitz and the panel of inspiring women – Francine Anthony, Paige ONeill, Rose Manjarres, Julie Koepsell, Allison Abraham Simpkins. It is amazing when you bring together a group of successful, powerful and driven women. The stage and the narrative to overcome any obstacles was owned by these fabulous women and inspiring equally for men and women. I am sure the proud men who were present in the session would agree fully.

The #womenofsitecore MVP Panel – This was my personal moment of pride and sense of how far I have come and how much I have accomplished…and how much more it yet to be done. It was truly great to meet all the 19 awesome women MVPs. We were all honored to have Paige ONeill as the moderator for our panel. Kudos to Sitecore for organizing and including the inspiring and much needed events supporting women.

The Buzzwords buzzing around…and some pictures to go with it…

Headless CMS (Revolution) – Zenith

Zenith is all you need to distribute and manage content in a Headless fashion. It was announced at the last Symposium and with Sitecore 9.1 sits at the center of Headless CMS revolution.


Sitecore JavaScript Services will be part of the platform and generally available with Sitecore 9.1. – and it will be open source.


There is lot to learn and process before I can say more about Cortex. But here is what I think of this cool Sitecore component – The product has to have a pulse and be able to connect with customer – with Machine Learning aspects of it, Cortex helps with accomplishing just that.


As much as I am excited about Horizon – I am also bummed by the fact that it won’t be available in Sitecore 9.1. I shall wait patiently for the seamless experience for content editing especially for field editor. Horizon aspires to be the tool that helps content authors to focus on creating experiences instead of worrying about content items. It runs on Sitecore Host and uses message bus to help you work with content.

The motto of Horizon – The editing tool has to be equally alive as the final product.

One word for Horizon: SLEEK!

Universal Tracker

Focused on engagement analytics for mobile – online and offline – the Universal Tracker is the new analytics/tracking service shipping with Sitecore 9.1. The clear message is : “If your plans don’t include mobile, your plans are not finished.”

Sitecore Omni Theme – all the coolness!

.NET Core

As the first slide of the presentation read – “Sitecore is on a journey from Monolith to NET Core based Service Architecture.”

We have already seen the start of it with the Publishing Service and Commerce services with Experience Commerce. The journey towards .NET Core continues and brings the concept of Sitecore Host – a light weight layer to hold the plugins/services components.

Experience Commerce – My personal favorite of all things Sitecore!

There were some cool Experience Commerce sessions that got to attend. While Dan Solovay and Kelly Brennan brought answers to some my core questions with their super informative sessions, Ishraq Fataftah brought an excellent overview of Omni Channel and Retail concepts.

Rob Earlam presented a great session on 7 common commerce extensions. If you are not already subscribed to Master Sitecore you must. Rob posts excellent videos about all things Experience Commerce.

Ryan Donovan brought the future of Experience Commerce – an exciting road I cannot wait to walk on!

And finally….Drum Rolls for Sitecore 9.1 that is released with all cool things mentioned above!!! More in detail in a later post once I get a chance to play with it firsthand!

P.S. It was great to see Jake yet another year! Symposium would be incomplete without his intelligent spontaneous humor!

Memories to cherish…

The Sitecore Symposium is now over and done, but I will always remember this one just the way I remember the very first “DreamCore” I attended back in the day. DreamCore was my first ever Sitecore conference I had attended. The Symposium 2018 was my very first one as a Sitecore MVP. I walked down those rows with pride to take a sit in the front. But there was another reason for the pride too – I was one of the very few #womenofsitecore MVP to walk down to front rows. All the other super-women of Sitecore that I met at the Symposium kept on adding to that pride…and in that moment I realized that I had to do more, that I could do more – to help others. And that is my biggest take away from this year’s Symposium – The Pride of being a woman, and a Sitecore MVP, and a promise to do more to help others.

The memories I will cherish…

#womenofsitecore MVP Panel

#MoveTheDial movement and the inspiring words of the inspiring women.

Search · Sitecore · Sitecore 9 · Solr

Sitecore 9 & Solr: Simple steps to set up SwitchOnRebuildIndex for Web Index

In my few firsts with Sitecore 9, I recently had to set up the SwitchOnRebuild for the web index. After few clicks on few links and some help with my fellow Verndalians, I was able to set it up easily.

Before I get into steps,

  • Mine was a Solr 6.6.2 set up.
  • Make sure to set up the index SiwitchOnRebuild patch on both CD and CM roles.

Okay then! Let’s get going. Here is what I had to do –

  1. Make sure that an index rebuilding job is not running for any indexes. You can check that here : http://<your_site>/sitecore/admin/jobs.aspx.
  2. Stop Solr Service/Server – depending on your set up. I have solr running as windows service, so I stopped the service.
  3. Create a copy of the web_index folder at: \solr-6.6.2\server\solr\* and rename it as web_index_rebuild.

  4. Now, navigate to the core.properties file in the new web_index_rebuild folder and update the core name.

  5. Create a patch file with a name like – Sitecore.ContentSearch.Solr.Index.Web.SwitchOnRebuild.config.

<!– Purpose: This include file is to switch web index while rebuilding.–><configuration xmlns:patch=http://www.sitecore.net/xmlconfig/” xmlns:role=http://www.sitecore.net/xmlconfig/role/” xmlns:search=http://www.sitecore.net/xmlconfig/search/><sitecore role:require=Standalone or ContentDelivery or ContentManagement” search:require=solr><contentSearch>
<configuration type=Sitecore.ContentSearch.ContentSearchConfiguration, Sitecore.ContentSearch><indexes hint=list:AddIndex>
<index id=sitecore_web_index><patch:attribute name=type>Sitecore.ContentSearch.SolrProvider.SwitchOnRebuildSolrSearchIndex, Sitecore.ContentSearch.SolrProvider</patch:attribute>
<param desc=rebuildcore” patch:after=*[@desc=’core’]>MySite_web_index_rebuild</param>

6. Add the patch file at <your_site>/app_config/include/z_Customizations/
7. Start the solr service/server.
8. Rebuild web index.

If you did not get any errors, you are good to go!