├── .env ├── .gitignore ├── .nuke ├── CopyCores.ps1 ├── CopyDatabases.ps1 ├── CreateLogDirs.ps1 ├── Generate-Certificates.ps1 ├── Generate-Self-Signed-Certificate.ps1 ├── README.md ├── build.ps1 ├── build.sh ├── build ├── Build.cs ├── _build.csproj └── _build.csproj.DotSettings ├── commerce ├── Dockerfile ├── UpdateConnectionString.ps1 ├── UpdateIdentityServerUrl.ps1 ├── UpdateSitecoreUrl.ps1 ├── WatchDefaultDirectories.ps1 └── WatchDirectoryMultiple.ps1 ├── config └── EnableItemServices.config ├── docker-compose.build-sxa.yml ├── docker-compose.sxa.yml ├── docker-compose.yml ├── mssql └── Dockerfile ├── scripts ├── Import-Certificate.ps1 ├── Install-SIF.ps1 ├── Watch-Directory.ps1 └── WatchDirectoryMultiple.ps1 ├── sitecore ├── Dockerfile ├── InstallCommercePackages.ps1 ├── Sitecore.Commerce.Engine.Connectors.Index.Solr.InitializeOnAdd.config └── sxa │ ├── InstallSXA.ps1 │ └── install-sxa.json ├── solr ├── DockerFile └── sxa │ ├── Dockerfile │ └── sxa-solr.json └── xconnect ├── Dockerfile └── Sitecore.Commerce.Connect.XConnect.Models.json /.env: -------------------------------------------------------------------------------- 1 | # Variables that are used in docker-compose files 2 | IMAGE_PREFIX=sxc- 3 | TAG=9.0.3 4 | 5 | SQL_SA_PASSWORD=my_Sup3rSecret!! 6 | 7 | SITECORE_SITE_NAME=sitecore -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | build/bin 2 | build/obj 3 | cores 4 | databases 5 | files 6 | logs 7 | tmp 8 | .tmp 9 | *.log -------------------------------------------------------------------------------- /.nuke: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/avivasolutionsnl/sitecore-commerce-docker/190a136e63050d81159fc4085345c2af0396945c/.nuke -------------------------------------------------------------------------------- /CopyCores.ps1: -------------------------------------------------------------------------------- 1 | # Script to copy Solr cores 2 | # Start and stop the Solr container and run this script. 3 | [CmdletBinding()] 4 | param( 5 | [Parameter(Mandatory=$false)] 6 | [string]$Container = 'sitecore-commerce-docker_solr_1', 7 | [Parameter(Mandatory=$false)] 8 | [string]$FromCoresFilePath = 'C:\solr\solr-6.6.2\server\solr', 9 | [Parameter(Mandatory=$false)] 10 | [string]$ToCoresFilePath = 'cores/' 11 | ) 12 | 13 | mkdir -Force -Path ${ToCoresFilePath} 14 | 15 | docker cp ${Container}:${FromCoresFilePath}\Sitecore_fxm_master_index ${ToCoresFilePath} 16 | docker cp ${Container}:${FromCoresFilePath}\Sitecore_fxm_web_index ${ToCoresFilePath} 17 | docker cp ${Container}:${FromCoresFilePath}\Sitecore_marketingdefinitions_master ${ToCoresFilePath} 18 | docker cp ${Container}:${FromCoresFilePath}\Sitecore_marketingdefinitions_web ${ToCoresFilePath} 19 | docker cp ${Container}:${FromCoresFilePath}\Sitecore_marketing_asset_index_web ${ToCoresFilePath} 20 | docker cp ${Container}:${FromCoresFilePath}\Sitecore_marketing_asset_index_master ${ToCoresFilePath} 21 | docker cp ${Container}:${FromCoresFilePath}\Sitecore_suggested_test_index ${ToCoresFilePath} 22 | docker cp ${Container}:${FromCoresFilePath}\Sitecore_testing_index ${ToCoresFilePath} 23 | 24 | docker cp ${Container}:${FromCoresFilePath}\Sitecore_core_index ${ToCoresFilePath} 25 | docker cp ${Container}:${FromCoresFilePath}\Sitecore_master_index ${ToCoresFilePath} 26 | docker cp ${Container}:${FromCoresFilePath}\Sitecore_web_index ${ToCoresFilePath} 27 | 28 | docker cp ${Container}:${FromCoresFilePath}\xp0_xdb ${ToCoresFilePath} 29 | docker cp ${Container}:${FromCoresFilePath}\xp0_xdb_rebuild ${ToCoresFilePath} 30 | 31 | # LCOW mount binds do not yet support locking 32 | # Replace native locking by simple locking 33 | gci ${ToCoresFilePath} -recurse -filter "solrconfig.xml" | ForEach { (Get-Content $_.PSPath | ForEach {$_ -replace "solr.lock.type:native", "solr.lock.type:simple"}) | Set-Content $_.PSPath } 34 | 35 | # Fix wrong path configuration 36 | gci ${ToCoresFilePath} -recurse -filter "core.properties" | ForEach { (Get-Content $_.PSPath | ForEach {$_ -replace "config=conf\\solrconfig.xml", "config=solrconfig.xml"}) | Set-Content $_.PSPath } 37 | 38 | # Remove all lock files 39 | Remove-Item -Recurse -Path ${ToCoresFilePath} -include *.lock 40 | -------------------------------------------------------------------------------- /CopyDatabases.ps1: -------------------------------------------------------------------------------- 1 | [CmdletBinding()] 2 | param( 3 | [Parameter(Mandatory=$false)] 4 | [string]$Container = 'sitecore-commerce-docker_mssql_1', 5 | [Parameter(Mandatory=$false)] 6 | [string]$FromDatabaseFilePath = 'C:\Program Files\Microsoft SQL Server\MSSQL13.SQLEXPRESS\MSSQL\DATA', 7 | [Parameter(Mandatory=$false)] 8 | [string]$ToDatabaseFilePath = 'databases/' 9 | ) 10 | 11 | mkdir -Force -Path ${ToDatabaseFilePath} 12 | 13 | docker cp ${Container}:${FromDatabaseFilePath}\SitecoreCommerce9_Global_Primary.mdf ${ToDatabaseFilePath} 14 | docker cp ${Container}:${FromDatabaseFilePath}\SitecoreCommerce9_Global_Primary.ldf ${ToDatabaseFilePath} 15 | 16 | docker cp ${Container}:${FromDatabaseFilePath}\SitecoreCommerce9_SharedEnvironments_Primary.mdf ${ToDatabaseFilePath} 17 | docker cp ${Container}:${FromDatabaseFilePath}\SitecoreCommerce9_SharedEnvironments_Primary.ldf ${ToDatabaseFilePath} 18 | 19 | docker cp ${Container}:${FromDatabaseFilePath}\Sitecore_Core_Primary.mdf ${ToDatabaseFilePath} 20 | docker cp ${Container}:${FromDatabaseFilePath}\Sitecore_Core_Primary.ldf ${ToDatabaseFilePath} 21 | 22 | docker cp ${Container}:${FromDatabaseFilePath}\Sitecore_ExperienceForms_Primary.mdf ${ToDatabaseFilePath} 23 | docker cp ${Container}:${FromDatabaseFilePath}\Sitecore_ExperienceForms_Primary.ldf ${ToDatabaseFilePath} 24 | 25 | docker cp ${Container}:${FromDatabaseFilePath}\Sitecore_MarketingAutomation_Primary.mdf ${ToDatabaseFilePath} 26 | docker cp ${Container}:${FromDatabaseFilePath}\Sitecore_MarketingAutomation_Primary.ldf ${ToDatabaseFilePath} 27 | 28 | docker cp ${Container}:${FromDatabaseFilePath}\Sitecore_Master_Primary.mdf ${ToDatabaseFilePath} 29 | docker cp ${Container}:${FromDatabaseFilePath}\Sitecore_Master_Primary.ldf ${ToDatabaseFilePath} 30 | 31 | docker cp ${Container}:${FromDatabaseFilePath}\Sitecore_Processing.Pools_Primary.mdf ${ToDatabaseFilePath} 32 | docker cp ${Container}:${FromDatabaseFilePath}\Sitecore_Processing.Pools_Primary.ldf ${ToDatabaseFilePath} 33 | 34 | docker cp ${Container}:${FromDatabaseFilePath}\Sitecore_Processing.Tasks_Primary.mdf ${ToDatabaseFilePath} 35 | docker cp ${Container}:${FromDatabaseFilePath}\Sitecore_Processing.Tasks_Primary.ldf ${ToDatabaseFilePath} 36 | 37 | docker cp ${Container}:${FromDatabaseFilePath}\Sitecore_ReferenceData_Primary.mdf ${ToDatabaseFilePath} 38 | docker cp ${Container}:${FromDatabaseFilePath}\Sitecore_ReferenceData_Primary.ldf ${ToDatabaseFilePath} 39 | 40 | docker cp ${Container}:${FromDatabaseFilePath}\Sitecore_Master_Primary.mdf ${ToDatabaseFilePath} 41 | docker cp ${Container}:${FromDatabaseFilePath}\Sitecore_Master_Primary.ldf ${ToDatabaseFilePath} 42 | 43 | docker cp ${Container}:${FromDatabaseFilePath}\Sitecore_Reporting_Primary.mdf ${ToDatabaseFilePath} 44 | docker cp ${Container}:${FromDatabaseFilePath}\Sitecore_Reporting_Primary.ldf ${ToDatabaseFilePath} 45 | 46 | docker cp ${Container}:${FromDatabaseFilePath}\Sitecore_Web_Primary.mdf ${ToDatabaseFilePath} 47 | docker cp ${Container}:${FromDatabaseFilePath}\Sitecore_Web_Primary.ldf ${ToDatabaseFilePath} 48 | 49 | docker cp ${Container}:${FromDatabaseFilePath}\Sitecore_Xdb.Collection.Shard0.mdf ${ToDatabaseFilePath} 50 | docker cp ${Container}:${FromDatabaseFilePath}\Sitecore_Xdb.Collection.Shard0_log.ldf ${ToDatabaseFilePath} 51 | 52 | docker cp ${Container}:${FromDatabaseFilePath}\Sitecore_Xdb.Collection.Shard1_Primary.mdf ${ToDatabaseFilePath} 53 | docker cp ${Container}:${FromDatabaseFilePath}\Sitecore_Xdb.Collection.Shard1_Primary.ldf ${ToDatabaseFilePath} 54 | 55 | docker cp ${Container}:${FromDatabaseFilePath}\Sitecore_Xdb.Collection.ShardMapManager.mdf ${ToDatabaseFilePath} 56 | docker cp ${Container}:${FromDatabaseFilePath}\Sitecore_Xdb.Collection.ShardMapManager_log.ldf ${ToDatabaseFilePath} 57 | 58 | docker cp ${Container}:${FromDatabaseFilePath}\Sitecore_Messaging_Primary.mdf ${ToDatabaseFilePath} 59 | docker cp ${Container}:${FromDatabaseFilePath}\Sitecore_Messaging_Primary.ldf ${ToDatabaseFilePath} 60 | -------------------------------------------------------------------------------- /CreateLogDirs.ps1: -------------------------------------------------------------------------------- 1 | mkdir -p .\logs\sitecore 2 | mkdir -p .\logs\xconnect 3 | mkdir -p .\logs\commerce\CommerceAuthoring_Sc9 4 | mkdir -p .\logs\commerce\CommerceMinions_Sc9 5 | mkdir -p .\logs\commerce\CommerceOps_Sc9 6 | mkdir -p .\logs\commerce\CommerceShops_Sc9 7 | mkdir -p .\logs\commerce\SitecoreIdentityServer 8 | -------------------------------------------------------------------------------- /Generate-Certificates.ps1: -------------------------------------------------------------------------------- 1 | .\Generate-Self-Signed-Certificate.ps1 -dnsName 'commerce.client' -file '.\Files\commerce.pfx' -secret 'secret' 2 | 3 | $cert = New-SelfSignedCertificate -certstorelocation cert:\localmachine\my -dnsname 'DO_NOT_TRUST_SitecoreRootCert' -KeyUsage DigitalSignature,CertSign -KeyExportPolicy Exportable -Provider 'Microsoft Enhanced RSA and AES Cryptographic Provider'; 4 | $pwd = ConvertTo-SecureString -String 'secret' -Force -AsPlainText; 5 | Export-PfxCertificate -cert $cert -FilePath '.\Files\root.pfx' -Password $pwd; 6 | -------------------------------------------------------------------------------- /Generate-Self-Signed-Certificate.ps1: -------------------------------------------------------------------------------- 1 | Param( 2 | $dnsName = "", 3 | $file = "", 4 | $secret = "secret" 5 | ) 6 | 7 | $cert = New-SelfSignedCertificate -certstorelocation cert:\localmachine\my -dnsname $dnsName -KeyExportPolicy Exportable -Provider 'Microsoft Enhanced RSA and AES Cryptographic Provider' 8 | 9 | $pwd = ConvertTo-SecureString -String $secret -Force -AsPlainText 10 | 11 | Export-PfxCertificate -cert $cert -FilePath $file -Password $pwd 12 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | > THIS REPO IS NO LONGER MAINTAINED. 2 | > 3 | > The Sitecore XC Docker configuration is now available in [sitecore-docker](https://github.com/avivasolutionsnl/sitecore-docker). 4 | 5 | Run Sitecore Commerce 9 using Docker and Windows containers. 6 | 7 | # Disclaimer 8 | This repository contains experimental code that we use in development setups. We do not consider the current code in this repository ready for production. 9 | Hopefully this will help you to get up and running with Sitecore and Docker. By no means we consider ourselves Docker experts and thus expect these images to still contain a lot of bugs. Great help for creating this setup was provided by the [sitecoreops](https://github.com/sitecoreops/sitecore-images) and [sitecore-nine-docker](https://github.com/pbering/sitecore-nine-docker) repos. Please feel free to provide feedback by creating an issue, PR, etc. 10 | 11 | # Requirements 12 | - Windows 10 update 1709 (with Hyper-V enabled) 13 | - Docker for Windows (version 1712 or better): https://docs.docker.com/docker-for-windows/ 14 | - Visual Studio 15.5.3 15 | - Sitecore Commerce 9 installation files 16 | - [Nuke.build](https://nuke.build) 17 | 18 | 19 | # Build 20 | As Sitecore does not distribute Docker images, the first step is to build the required Docker images. 21 | 22 | ## Pre-build steps 23 | For this you need the Sitecore installation files and a Sitecore license file. Plumber is installed to inspect Commerce pipelines, download it [here](https://github.com/ewerkman/plumber-sc/releases) and save it as `files/plumber.zip`. What files to use are set in the [build configuration](./build/Build.cs). 24 | 25 | As this Sitecore Commerce Docker build relies on Sitecore Docker, first build the Sitecore Docker images: https://github.com/avivasolutionsnl/sitecore-docker 26 | From the Sitecore Docker `files` directory copy all `.pfx` certificate files to the `files/` directory. 27 | 28 | The Commerce setup requires by default SSL between the services, for this we need (more) self signed certificates. You can generate these by running the `./Generate-Certificates.ps1` script (note that this requires an Administrator elevated powershell environment and you may need to set the correct execution policy, e.g. `PS> powershell.exe -ExecutionPolicy Unrestricted`). 29 | 30 | ## Build step 31 | Build all images using: 32 | ``` 33 | PS> nuke 34 | ``` 35 | 36 | The build results in the following Docker images: 37 | - commerce: ASP.NET 38 | - mssql: MS SQL + Sitecore databases 39 | - sitecore: IIS + ASP.NET + Sitecore 40 | - solr: Apache Solr 41 | 42 | and three SXA images: 43 | - sitecore-sxa 44 | - solr-sxa 45 | - mssql-sxa 46 | 47 | ### Push images 48 | Push the Docker images to your repository, e.g: 49 | ``` 50 | PS> nuke push 51 | ``` 52 | 53 | 54 | # Run 55 | Docker compose is used to start up all required services. 56 | 57 | Place the Sitecore source files in the `.\wwwroot\sitecore` directory and Commerce source files in `.\wwwroot\commerce`. 58 | 59 | Create the log directories which are mounted in the Docker compose file: 60 | ``` 61 | PS> ./CreateLogDirs.ps1 62 | ``` 63 | 64 | To start Sitecore; 65 | ``` 66 | PS> docker-compose up 67 | ``` 68 | 69 | or to start Sitecore with SXA: 70 | ``` 71 | PS> docker-compose -f docker-compose.yml -f docker-compose.sxa.yml up 72 | ``` 73 | 74 | Run-time parameters can be modified using the `.env` file: 75 | 76 | | Field | Description | 77 | | ------------------------- | ------------------------------------------------ | 78 | | SQL_SA_PASSWORD | The password to use for the SQL sa user | 79 | | SITECORE_SITE_NAME | Host name of the Sitecore site | 80 | | IMAGE_PREFIX | The Docker image prefix to use | 81 | | TAG | The version to tag the Docker images with | 82 | 83 | 84 | ## Plumber 85 | Plumber is available at: http://commerce:4000 86 | 87 | ## DNS 88 | To set the Docker container service names as DNS names on your host edit your `hosts` file. 89 | A convenient tool to automatically do this is [whales-names](https://github.com/gregolsky/whales-names). 90 | 91 | ## Log files 92 | Logging is set up to log on the host under the logs folder of this repository. 93 | 94 | # Known issues 95 | Docker for Windows can be unstable at times, some troubleshooting tips are listed below and [here](https://github.com/avivasolutionsnl/sitecore-docker) 96 | 97 | ## Commerce setup 98 | - We have quite a lot of custom powershell scripts for trivial installation tasks. This is because the commerce SIF scripts contain hardcoded values. For example, it is not possible to use hostnames other than localhost. We should be able to remove this custom code when those scripts get fixed. 99 | - During the installation of the commerce server instances, it tries to set permissions on the log folder. For some reason, this results in an exception saying the access control list is not in canonical form. This can be ignored, because the log folders are mounted on the host. However, it does cause an annoying delay in the installation. 100 | -------------------------------------------------------------------------------- /build.ps1: -------------------------------------------------------------------------------- 1 | [CmdletBinding()] 2 | Param( 3 | [Parameter(Position=0,Mandatory=$false,ValueFromRemainingArguments=$true)] 4 | [string[]]$BuildArguments 5 | ) 6 | 7 | Write-Output "Windows PowerShell $($Host.Version)" 8 | 9 | Set-StrictMode -Version 2.0; $ErrorActionPreference = "Stop"; $ConfirmPreference = "None"; trap { exit 1 } 10 | $PSScriptRoot = Split-Path $MyInvocation.MyCommand.Path -Parent 11 | 12 | ########################################################################### 13 | # CONFIGURATION 14 | ########################################################################### 15 | 16 | $BuildProjectFile = "$PSScriptRoot\build\_build.csproj" 17 | $TempDirectory = "$PSScriptRoot\\.tmp" 18 | 19 | $DotNetGlobalFile = "$PSScriptRoot\\global.json" 20 | $DotNetInstallUrl = "https://raw.githubusercontent.com/dotnet/cli/master/scripts/obtain/dotnet-install.ps1" 21 | $DotNetChannel = "Current" 22 | 23 | $env:DOTNET_SKIP_FIRST_TIME_EXPERIENCE = 1 24 | $env:DOTNET_CLI_TELEMETRY_OPTOUT = 1 25 | $env:NUGET_XMLDOC_MODE = "skip" 26 | 27 | ########################################################################### 28 | # EXECUTION 29 | ########################################################################### 30 | 31 | function ExecSafe([scriptblock] $cmd) { 32 | & $cmd 33 | if ($LASTEXITCODE) { exit $LASTEXITCODE } 34 | } 35 | 36 | # If global.json exists, load expected version 37 | if (Test-Path $DotNetGlobalFile) { 38 | $DotNetGlobal = $(Get-Content $DotNetGlobalFile | Out-String | ConvertFrom-Json) 39 | if ($DotNetGlobal.PSObject.Properties["sdk"] -and $DotNetGlobal.sdk.PSObject.Properties["version"]) { 40 | $DotNetVersion = $DotNetGlobal.sdk.version 41 | } 42 | } 43 | 44 | # If dotnet is installed locally, and expected version is not set or installation matches the expected version 45 | if ((Get-Command "dotnet" -ErrorAction SilentlyContinue) -ne $null -and ` 46 | (!(Test-Path variable:DotNetVersion) -or $(& dotnet --version) -eq $DotNetVersion)) { 47 | $env:DOTNET_EXE = (Get-Command "dotnet").Path 48 | } 49 | else { 50 | $DotNetDirectory = "$TempDirectory\dotnet-win" 51 | $env:DOTNET_EXE = "$DotNetDirectory\dotnet.exe" 52 | 53 | # Download install script 54 | $DotNetInstallFile = "$TempDirectory\dotnet-install.ps1" 55 | md -force $TempDirectory > $null 56 | (New-Object System.Net.WebClient).DownloadFile($DotNetInstallUrl, $DotNetInstallFile) 57 | 58 | # Install by channel or version 59 | if (!(Test-Path variable:DotNetVersion)) { 60 | ExecSafe { & $DotNetInstallFile -InstallDir $DotNetDirectory -Channel $DotNetChannel -NoPath } 61 | } else { 62 | ExecSafe { & $DotNetInstallFile -InstallDir $DotNetDirectory -Version $DotNetVersion -NoPath } 63 | } 64 | } 65 | 66 | Write-Output "Microsoft (R) .NET Core SDK version $(& $env:DOTNET_EXE --version)" 67 | 68 | ExecSafe { & $env:DOTNET_EXE build $BuildProjectFile /nodeReuse:false } 69 | ExecSafe { & $env:DOTNET_EXE run --project $BuildProjectFile --no-build -- $BuildArguments } -------------------------------------------------------------------------------- /build.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | echo $(bash --version 2>&1 | head -n 1) 4 | 5 | set -eo pipefail 6 | SCRIPT_DIR=$(cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd) 7 | 8 | ########################################################################### 9 | # CONFIGURATION 10 | ########################################################################### 11 | 12 | BUILD_PROJECT_FILE="$SCRIPT_DIR/build/_build.csproj" 13 | TEMP_DIRECTORY="$SCRIPT_DIR//.tmp" 14 | 15 | DOTNET_GLOBAL_FILE="$SCRIPT_DIR//global.json" 16 | DOTNET_INSTALL_URL="https://raw.githubusercontent.com/dotnet/cli/master/scripts/obtain/dotnet-install.sh" 17 | DOTNET_CHANNEL="Current" 18 | 19 | export DOTNET_CLI_TELEMETRY_OPTOUT=1 20 | export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1 21 | export NUGET_XMLDOC_MODE="skip" 22 | 23 | ########################################################################### 24 | # EXECUTION 25 | ########################################################################### 26 | 27 | function FirstJsonValue { 28 | perl -nle 'print $1 if m{"'$1'": "([^"\-]+)",?}' <<< ${@:2} 29 | } 30 | 31 | # If global.json exists, load expected version 32 | if [ -f "$DOTNET_GLOBAL_FILE" ]; then 33 | DOTNET_VERSION=$(FirstJsonValue "version" $(cat "$DOTNET_GLOBAL_FILE")) 34 | if [ "$DOTNET_VERSION" == "" ]; then 35 | unset DOTNET_VERSION 36 | fi 37 | fi 38 | 39 | # If dotnet is installed locally, and expected version is not set or installation matches the expected version 40 | if [[ -x "$(command -v dotnet)" && (-z ${DOTNET_VERSION+x} || $(dotnet --version) == "$DOTNET_VERSION") ]]; then 41 | export DOTNET_EXE="$(command -v dotnet)" 42 | else 43 | DOTNET_DIRECTORY="$TEMP_DIRECTORY/dotnet-unix" 44 | export DOTNET_EXE="$DOTNET_DIRECTORY/dotnet" 45 | 46 | # Download install script 47 | DOTNET_INSTALL_FILE="$TEMP_DIRECTORY/dotnet-install.sh" 48 | mkdir -p "$TEMP_DIRECTORY" 49 | curl -Lsfo "$DOTNET_INSTALL_FILE" "$DOTNET_INSTALL_URL" 50 | chmod +x "$DOTNET_INSTALL_FILE" 51 | 52 | # Install by channel or version 53 | if [ -z ${DOTNET_VERSION+x} ]; then 54 | "$DOTNET_INSTALL_FILE" --install-dir "$DOTNET_DIRECTORY" --channel "$DOTNET_CHANNEL" --no-path 55 | else 56 | "$DOTNET_INSTALL_FILE" --install-dir "$DOTNET_DIRECTORY" --version "$DOTNET_VERSION" --no-path 57 | fi 58 | fi 59 | 60 | echo "Microsoft (R) .NET Core SDK version $("$DOTNET_EXE" --version)" 61 | 62 | "$DOTNET_EXE" build "$BUILD_PROJECT_FILE" /nodeReuse:false 63 | "$DOTNET_EXE" run --project "$BUILD_PROJECT_FILE" --no-build -- "$@" 64 | -------------------------------------------------------------------------------- /build/Build.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Linq; 3 | using Nuke.Common; 4 | using Nuke.Common.ProjectModel; 5 | using static Nuke.Common.EnvironmentInfo; 6 | using static Nuke.Common.IO.FileSystemTasks; 7 | using static Nuke.Common.IO.PathConstruction; 8 | using static Nuke.Docker.DockerTasks; 9 | using Nuke.Docker; 10 | using Nuke.Common.Tooling; 11 | 12 | class Build : NukeBuild 13 | { 14 | public static int Main () => Execute(x => x.All); 15 | 16 | // Tools 17 | [PathExecutable(name: "docker-compose")] readonly Tool DockerCompose; 18 | 19 | [PathExecutable] readonly Tool Powershell; 20 | 21 | // Docker image naming 22 | [Parameter("Docker image prefix for XC")] 23 | readonly string XcImagePrefix = "sitecore-commerce-docker_"; 24 | 25 | [Parameter("Docker image prefix for XP")] 26 | readonly string XpImagePrefix = "sitecore-docker_"; 27 | 28 | [Parameter("Docker image version tag for XC")] 29 | readonly string XcVersion = "9.0.3"; 30 | 31 | [Parameter("Docker image version tag for XP")] 32 | readonly string XpVersion = "9.0.2"; 33 | 34 | // Packages 35 | [Parameter("Sitecore Identity server package")] 36 | readonly string SITECORE_IDENTITY_PACKAGE = "Sitecore.IdentityServer.1.4.2.zip"; 37 | 38 | [Parameter("Sitecore BizFx package")] 39 | readonly string SITECORE_BIZFX_PACKAGE = "Sitecore.BizFX.1.4.1.zip"; 40 | 41 | [Parameter("Commerce Engine package")] 42 | readonly string COMMERCE_ENGINE_PACKAGE = "Sitecore.Commerce.Engine.2.4.63.zip"; 43 | 44 | [Parameter("Commerce Connect package")] 45 | readonly string COMMERCE_CONNECT_PACKAGE = "Sitecore Commerce Connect Core 11.4.15.zip"; 46 | 47 | [Parameter("Commerce Connect Engine package")] 48 | readonly string COMMERCE_CONNECT_ENGINE_PACKAGE = "Sitecore.Commerce.Engine.Connect.2.4.32.update"; 49 | 50 | [Parameter("Commerce Marketing Automation package")] 51 | readonly string COMMERCE_MA_PACKAGE = "Sitecore Commerce Marketing Automation Core 11.4.15.zip"; 52 | 53 | [Parameter("Commerce Marketing Automation for AutomationEngine package")] 54 | readonly string COMMERCE_MA_FOR_AUTOMATION_ENGINE_PACKAGE = "Sitecore Commerce Marketing Automation for AutomationEngine 11.4.15.zip"; 55 | 56 | [Parameter("Commerce SIF package")] 57 | readonly string COMMERCE_SIF_PACKAGE = "SIF.Sitecore.Commerce.1.4.7.zip"; 58 | 59 | [Parameter("Commerce SDK package")] 60 | readonly string COMMERCE_SDK_PACKAGE = "Sitecore.Commerce.Engine.SDK.2.4.43.zip"; 61 | 62 | [Parameter("Commerce XP Core package")] 63 | readonly string COMMERCE_XPROFILES_PACKAGE = "Sitecore Commerce ExperienceProfile Core 11.4.15.zip"; 64 | 65 | [Parameter("Commerce XP Analytics Core package")] 66 | readonly string COMMERCE_XANALYTICS_PACKAGE = "Sitecore Commerce ExperienceAnalytics Core 11.4.15.zip"; 67 | 68 | [Parameter("Powershell Extension package")] 69 | readonly string PSE_PACKAGE = "Sitecore PowerShell Extensions-5.0.zip"; 70 | 71 | [Parameter("SXA package")] 72 | readonly string SXA_PACKAGE = "Sitecore Experience Accelerator 1.8 rev. 181112 for 9.0.zip"; 73 | 74 | [Parameter("SXA Commerce package")] 75 | readonly string SCXA_PACKAGE = "Sitecore Commerce Experience Accelerator 1.4.150.zip"; 76 | 77 | [Parameter("Web transform tool")] 78 | readonly string WEB_TRANSFORM_TOOL = "Microsoft.Web.XmlTransform.dll"; 79 | 80 | [Parameter("Plumber package")] 81 | readonly string PLUMBER_FILE_NAME = "plumber.zip"; 82 | 83 | // Certificates 84 | [Parameter("Commerce certificate file")] 85 | readonly string COMMERCE_CERT_PATH = "commerce.pfx"; 86 | 87 | [Parameter("Root certificate file")] 88 | readonly string ROOT_CERT_PATH = "root.pfx"; 89 | 90 | [Parameter("Sitecore certificate file")] 91 | readonly string SITECORE_CERT_PATH = "sitecore.pfx"; 92 | 93 | [Parameter("Solr certificate file")] 94 | readonly string SOLR_CERT_PATH = "solr.pfx"; 95 | 96 | [Parameter("Xconnect certificate file")] 97 | readonly string XCONNECT_CERT_PATH = "xConnect.pfx"; 98 | 99 | // Build configuration parameters 100 | [Parameter("SQL password")] 101 | readonly string SQL_SA_PASSWORD = "my_Sup3rSecret!!"; 102 | 103 | [Parameter("SQL db prefix")] 104 | readonly string SQL_DB_PREFIX = "Sitecore"; 105 | 106 | [Parameter("Solr hostname")] 107 | readonly string SOLR_HOST_NAME = "solr"; 108 | 109 | [Parameter("Solr port")] 110 | readonly string SOLR_PORT = "8983"; 111 | 112 | [Parameter("Solr service name")] 113 | readonly string SOLR_SERVICE_NAME = "Solr-6"; 114 | 115 | [Parameter("Xconnect site name")] 116 | readonly string XCONNECT_SITE_NAME = "xconnect"; 117 | 118 | [Parameter("Xconnect Solr core prefix")] 119 | readonly string XCONNECT_SOLR_CORE_PREFIX = "xp0"; 120 | 121 | [Parameter("Sitecore site name")] 122 | readonly string SITECORE_SITE_NAME = "sitecore"; 123 | 124 | [Parameter("Sitecore Solr core prefix")] 125 | readonly string SITECORE_SOLR_CORE_PREFIX = "Sitecore"; 126 | 127 | [Parameter("Commerce shop name")] 128 | readonly string SHOP_NAME = "CommerceEngineDefaultStorefront"; 129 | 130 | [Parameter("Commerce environment name")] 131 | readonly string ENVIRONMENT_NAME = "HabitatAuthoring"; 132 | 133 | private string XcFullImageName(string name) => $"{XcImagePrefix}{name}:{XcVersion}"; 134 | 135 | private string XpFullImageName(string name) => $"{XpImagePrefix}{name}:{XpVersion}"; 136 | 137 | Target Commerce => _ => _ 138 | .Executes(() => 139 | { 140 | DockerBuild(x => x 141 | .SetPath(".") 142 | .SetFile("commerce/Dockerfile") 143 | .SetTag(XcFullImageName("commerce")) 144 | .SetBuildArg(new string[] { 145 | $"SQL_SA_PASSWORD={SQL_SA_PASSWORD}", 146 | $"SQL_DB_PREFIX={SQL_DB_PREFIX}", 147 | $"SOLR_PORT={SOLR_PORT}", 148 | $"SHOP_NAME={SHOP_NAME}", 149 | $"ENVIRONMENT_NAME={ENVIRONMENT_NAME}", 150 | $"COMMERCE_SIF_PACKAGE={COMMERCE_SIF_PACKAGE}", 151 | $"COMMERCE_SDK_PACKAGE={COMMERCE_SDK_PACKAGE}", 152 | $"SITECORE_BIZFX_PACKAGE={SITECORE_BIZFX_PACKAGE}", 153 | $"SITECORE_IDENTITY_PACKAGE={SITECORE_IDENTITY_PACKAGE}", 154 | $"COMMERCE_ENGINE_PACKAGE={COMMERCE_ENGINE_PACKAGE}", 155 | $"COMMERCE_CERT_PATH={COMMERCE_CERT_PATH}", 156 | $"ROOT_CERT_PATH={ROOT_CERT_PATH}", 157 | $"SITECORE_CERT_PATH={SITECORE_CERT_PATH}", 158 | $"SOLR_CERT_PATH={SOLR_CERT_PATH}", 159 | $"XCONNECT_CERT_PATH={XCONNECT_CERT_PATH}", 160 | $"PLUMBER_FILE_NAME={PLUMBER_FILE_NAME}" 161 | }) 162 | ); 163 | }); 164 | 165 | Target Mssql => _ => _ 166 | .Executes(() => 167 | { 168 | var baseImage = XpFullImageName("mssql"); 169 | 170 | DockerBuild(x => x 171 | .SetPath(".") 172 | .SetFile("mssql/Dockerfile") 173 | .SetTag(XcFullImageName("mssql")) 174 | .SetBuildArg(new string[] { 175 | $"BASE_IMAGE={baseImage}", 176 | $"DB_PREFIX={SQL_DB_PREFIX}", 177 | $"COMMERCE_SDK_PACKAGE={COMMERCE_SDK_PACKAGE}", 178 | $"COMMERCE_SIF_PACKAGE={COMMERCE_SIF_PACKAGE}" 179 | }) 180 | ); 181 | }); 182 | 183 | Target SitecoreBase => _ => _ 184 | .Executes(() => 185 | { 186 | var baseImage = XpFullImageName("sitecore"); 187 | 188 | DockerBuild(x => x 189 | .SetPath(".") 190 | .SetFile("sitecore/Dockerfile") 191 | .SetTag(XcFullImageName("sitecore")) 192 | .SetBuildArg(new string[] { 193 | $"BASE_IMAGE={baseImage}", 194 | $"COMMERCE_CERT_PATH={COMMERCE_CERT_PATH}", 195 | $"COMMERCE_CONNECT_PACKAGE={COMMERCE_CONNECT_PACKAGE}", 196 | $"WEB_TRANSFORM_TOOL={WEB_TRANSFORM_TOOL}", 197 | $"COMMERCE_CONNECT_ENGINE_PACKAGE={COMMERCE_CONNECT_ENGINE_PACKAGE}", 198 | $"COMMERCE_SIF_PACKAGE={COMMERCE_SIF_PACKAGE}", 199 | $"COMMERCE_MA_PACKAGE={COMMERCE_MA_PACKAGE}", 200 | $"COMMERCE_MA_FOR_AUTOMATION_ENGINE_PACKAGE={COMMERCE_MA_FOR_AUTOMATION_ENGINE_PACKAGE}", 201 | $"COMMERCE_XPROFILES_PACKAGE={COMMERCE_XPROFILES_PACKAGE}", 202 | $"COMMERCE_XANALYTICS_PACKAGE={COMMERCE_XANALYTICS_PACKAGE}", 203 | $"ROOT_CERT_PATH={ROOT_CERT_PATH}" 204 | }) 205 | ); 206 | }); 207 | 208 | Target Sitecore => _ => _ 209 | .DependsOn(Commerce, Mssql, SitecoreBase, Solr, Xconnect, SetupDirectories) 210 | .Executes(() => { 211 | DockerCompose(@"up -d"); 212 | 213 | // Install Commerce Connect package 214 | DockerExec(x => x 215 | .SetContainer($"{XcImagePrefix}sitecore_1") 216 | .SetCommand("powershell") 217 | .SetArgs(@"C:\Scripts\InstallCommercePackages.ps1") 218 | .SetInteractive(true) 219 | .SetTty(true) 220 | ); 221 | 222 | DockerCompose("stop"); 223 | 224 | // Commit changes 225 | DockerCommit(x => x 226 | .SetContainer($"{XcImagePrefix}mssql_1") 227 | .SetRepository(XcFullImageName("mssql")) 228 | ); 229 | 230 | DockerCommit(x => x 231 | .SetContainer($"{XcImagePrefix}sitecore_1") 232 | .SetRepository(XcFullImageName("sitecore")) 233 | ); 234 | 235 | // Remove build artefacts 236 | DockerCompose("down"); 237 | }); 238 | 239 | Target Solr => _ => _ 240 | .Executes(() => 241 | { 242 | var baseImage = XpFullImageName("solr"); 243 | 244 | DockerBuild(x => x 245 | .SetPath(".") 246 | .SetFile("solr/Dockerfile") 247 | .SetTag(XcFullImageName("solr")) 248 | .SetBuildArg(new string[] { 249 | $"BASE_IMAGE={baseImage}", 250 | $"HOST_NAME={SOLR_HOST_NAME}", 251 | $"PORT={SOLR_PORT}", 252 | $"SERVICE_NAME={SOLR_SERVICE_NAME}", 253 | $"SITECORE_CORE_PREFIX={SITECORE_SOLR_CORE_PREFIX}", 254 | $"COMMERCE_SIF_PACKAGE={COMMERCE_SIF_PACKAGE}" 255 | }) 256 | ); 257 | }); 258 | 259 | Target Xconnect => _ => _ 260 | .Executes(() => 261 | { 262 | var baseImage = XpFullImageName("xconnect"); 263 | 264 | DockerBuild(x => x 265 | .SetPath(".") 266 | .SetFile("xconnect/Dockerfile") 267 | .SetTag(XcFullImageName("xconnect")) 268 | .SetBuildArg(new string[] { 269 | $"BASE_IMAGE={baseImage}", 270 | $"COMMERCE_MA_FOR_AUTOMATION_ENGINE_PACKAGE={COMMERCE_MA_FOR_AUTOMATION_ENGINE_PACKAGE}" 271 | }) 272 | ); 273 | }); 274 | 275 | Target SetupDirectories => _ => _ 276 | .Executes(() => { 277 | // Setup 278 | System.IO.Directory.CreateDirectory(@"wwwroot/commerce"); 279 | System.IO.Directory.CreateDirectory(@"wwwroot/sitecore"); 280 | Powershell("./CreateLogDirs.ps1"); 281 | }); 282 | 283 | Target SitecoreSxa => _ => _ 284 | .DependsOn(Sitecore, SolrSxa, SetupDirectories) 285 | .Executes(() => { 286 | // Set env variables for docker-compose 287 | Environment.SetEnvironmentVariable("PSE_PACKAGE", $"{PSE_PACKAGE}", EnvironmentVariableTarget.Process); 288 | Environment.SetEnvironmentVariable("SXA_PACKAGE", $"{SXA_PACKAGE}", EnvironmentVariableTarget.Process); 289 | Environment.SetEnvironmentVariable("SCXA_PACKAGE", $"{SCXA_PACKAGE}", EnvironmentVariableTarget.Process); 290 | Environment.SetEnvironmentVariable("IMAGE_PREFIX", $"{XcImagePrefix}", EnvironmentVariableTarget.Process); 291 | Environment.SetEnvironmentVariable("TAG", $"{XcVersion}", EnvironmentVariableTarget.Process); 292 | 293 | DockerCompose(@"-f docker-compose.yml -f docker-compose.build-sxa.yml up -d"); 294 | 295 | // Install SXA package 296 | DockerExec(x => x 297 | .SetContainer($"{XcImagePrefix}sitecore_1") 298 | .SetCommand("powershell") 299 | .SetArgs(@"C:\sxa\InstallSXA.ps1") 300 | .SetInteractive(true) 301 | .SetTty(true) 302 | ); 303 | 304 | DockerCompose("stop"); 305 | 306 | // Commit changes 307 | DockerCommit(x => x 308 | .SetContainer($"{XcImagePrefix}mssql_1") 309 | .SetRepository(XcFullImageName("mssql-sxa")) 310 | ); 311 | 312 | DockerCommit(x => x 313 | .SetContainer($"{XcImagePrefix}sitecore_1") 314 | .SetRepository(XcFullImageName("sitecore-sxa")) 315 | ); 316 | 317 | // Remove build artefacts 318 | DockerCompose("down"); 319 | }); 320 | 321 | Target SolrSxa => _ => _ 322 | .DependsOn(Solr) 323 | .Executes(() => { 324 | var baseImage = XpFullImageName("solr"); 325 | 326 | DockerBuild(x => x 327 | .SetPath("solr/sxa") 328 | .SetTag(XcFullImageName("solr-sxa")) 329 | .SetBuildArg(new string[] { 330 | $"BASE_IMAGE={baseImage}" 331 | }) 332 | ); 333 | }); 334 | 335 | Target Xc => _ => _ 336 | .DependsOn(Commerce, Mssql, Sitecore, Solr, Xconnect); 337 | 338 | Target XcSxa => _ => _ 339 | .DependsOn(Xc, SitecoreSxa, SolrSxa); 340 | 341 | Target All => _ => _ 342 | .DependsOn(Xc, XcSxa); 343 | 344 | Target PushBase => _ => _ 345 | .DependsOn(Xc) 346 | .Executes(() => { 347 | DockerPush(x => x.SetName(XcFullImageName("commerce"))); 348 | DockerPush(x => x.SetName(XcFullImageName("mssql"))); 349 | DockerPush(x => x.SetName(XcFullImageName("sitecore"))); 350 | DockerPush(x => x.SetName(XcFullImageName("solr"))); 351 | DockerPush(x => x.SetName(XcFullImageName("xconnect"))); 352 | }); 353 | 354 | Target PushSxa => _ => _ 355 | .DependsOn(XcSxa) 356 | .Executes(() => { 357 | DockerPush(x => x.SetName(XcFullImageName("mssql-sxa"))); 358 | DockerPush(x => x.SetName(XcFullImageName("sitecore-sxa"))); 359 | DockerPush(x => x.SetName(XcFullImageName("solr-sxa"))); 360 | }); 361 | 362 | Target Push => _ => _ 363 | .DependsOn(PushBase) 364 | .DependsOn(PushSxa); 365 | } 366 | -------------------------------------------------------------------------------- /build/_build.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Exe 5 | netcoreapp2.0 6 | false 7 | 8 | False 9 | CS0649;CS0169 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /build/_build.csproj.DotSettings: -------------------------------------------------------------------------------- 1 | 2 | False 3 | Implicit 4 | Implicit 5 | ExpressionBody 6 | 0 7 | NEXT_LINE 8 | True 9 | False 10 | 120 11 | IF_OWNER_IS_SINGLE_LINE 12 | WRAP_IF_LONG 13 | False 14 | <Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /> 15 | <Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /> 16 | True 17 | True 18 | True 19 | True 20 | True 21 | True 22 | True 23 | True 24 | -------------------------------------------------------------------------------- /commerce/Dockerfile: -------------------------------------------------------------------------------- 1 | # escape=` 2 | 3 | # Stage 0: prepare files & build prerequisites 4 | FROM microsoft/aspnet:4.7.1-windowsservercore-1709 AS prepare 5 | 6 | SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"] 7 | 8 | ARG COMMERCE_SIF_PACKAGE 9 | ARG COMMERCE_SDK_PACKAGE 10 | ARG SITECORE_BIZFX_PACKAGE 11 | 12 | WORKDIR /Files 13 | 14 | ADD files /Files 15 | ADD scripts /Scripts 16 | 17 | # Expand installation files 18 | RUN Expand-Archive -Path "/Files/$Env:COMMERCE_SDK_PACKAGE" -DestinationPath '/Files/Sitecore.Commerce.SDK'; 19 | RUN Expand-Archive -Path "/Files/$Env:COMMERCE_SIF_PACKAGE" -DestinationPath '/Files/SIF.Sitecore.Commerce'; 20 | RUN Expand-Archive -Path "/Files/$Env:SITECORE_BIZFX_PACKAGE" -DestinationPath '/Files/Sitecore.BizFX'; 21 | 22 | # Stage 1: create actual image 23 | FROM microsoft/aspnet:4.7.1-windowsservercore-1709 24 | 25 | ARG HOST_NAME="commerce" 26 | ARG SITECORE_HOSTNAME="sitecore" 27 | ARG SHOP_NAME="CommerceEngineDefaultStorefront" 28 | ARG ENVIRONMENT_NAME="HabitatAuthoring" 29 | ARG COMMERCE_ENGINE_PACKAGE 30 | ARG SITECORE_IDENTITY_PACKAGE 31 | ARG PLUMBER_FILE_NAME="plumber.zip" 32 | 33 | ARG SQL_USER="sa" 34 | ARG SQL_SA_PASSWORD 35 | ARG SQL_DB_PREFIX 36 | ARG SQL_SERVER="mssql" 37 | ARG SOLR_PORT=8983 38 | ARG SOLR_CORE_PREFIX="xp0" 39 | 40 | ARG XCONNECT_CERT_PATH 41 | ARG SOLR_CERT_PATH 42 | ARG SITECORE_CERT_PATH 43 | ARG COMMERCE_CERT_PATH 44 | ARG ROOT_CERT_PATH 45 | 46 | SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"] 47 | 48 | WORKDIR /Files 49 | 50 | # Copy required files 51 | ADD scripts /Scripts 52 | 53 | COPY files/*.pfx /Files/ 54 | COPY --from=prepare /Files/Sitecore.Commerce.SDK /Files/Sitecore.Commerce.SDK/ 55 | COPY --from=prepare /Files/SIF.Sitecore.Commerce /Files/SIF.Sitecore.Commerce/ 56 | COPY --from=prepare /Files/Sitecore.BizFX /Files/Sitecore.BizFX/ 57 | COPY --from=prepare /Files/${COMMERCE_ENGINE_PACKAGE} /Files/ 58 | COPY --from=prepare /Files/${SITECORE_IDENTITY_PACKAGE} /Files/ 59 | COPY --from=prepare /Files/${PLUMBER_FILE_NAME} /Files/ 60 | 61 | # Trust Self signed certificates 62 | RUN /Scripts/Import-Certificate.ps1 -certificateFile /Files/$Env:SOLR_CERT_PATH -secret 'secret' -storeName 'Root' -storeLocation 'LocalMachine'; ` 63 | /Scripts/Import-Certificate.ps1 -certificateFile /Files/$Env:XCONNECT_CERT_PATH -secret 'secret' -storeName 'Root' -storeLocation 'LocalMachine'; ` 64 | /Scripts/Import-Certificate.ps1 -certificateFile /Files/$Env:SITECORE_CERT_PATH -secret 'secret' -storeName 'Root' -storeLocation 'LocalMachine'; ` 65 | /Scripts/Import-Certificate.ps1 -certificateFile /Files/$Env:COMMERCE_CERT_PATH -secret 'secret' -storeName 'Root' -storeLocation 'LocalMachine'; ` 66 | /Scripts/Import-Certificate.ps1 -certificateFile /Files/$Env:ROOT_CERT_PATH -secret 'secret' -storeName 'Root' -storeLocation 'LocalMachine' 67 | 68 | # Import certificate 69 | RUN /Scripts/Import-Certificate.ps1 -certificateFile /Files/$Env:COMMERCE_CERT_PATH -secret 'secret' -storeName 'My' -storeLocation 'LocalMachine'; ` 70 | /Scripts/Import-Certificate.ps1 -certificateFile /Files/$Env:ROOT_CERT_PATH -secret 'secret' -storeName 'My' -storeLocation 'LocalMachine' 71 | 72 | # Import XConnect certificate 73 | RUN /Scripts/Import-Certificate.ps1 -certificateFile /Files/$Env:XCONNECT_CERT_PATH -secret 'secret' -storeName 'My' -storeLocation 'LocalMachine' 74 | 75 | RUN net user /add commerceuser 'Pa$$w0rd'; ` 76 | Set-LocalUser -Name 'commerceuser' -PasswordNeverExpires:$true 77 | 78 | # Install SIF 79 | RUN /Scripts/Install-SIF.ps1 80 | 81 | # Configure 82 | RUN [Environment]::SetEnvironmentVariable('PSModulePath', $env:PSModulePath + ';/Files/SIF.Sitecore.Commerce/Modules'); ` 83 | $solrUrl = 'https://solr:{0}/solr' -f $Env:SOLR_PORT; ` 84 | $engineZip = '/Files/{0}' -f $Env:COMMERCE_ENGINE_PACKAGE; ` 85 | Install-SitecoreConfiguration -Path '/Files/SIF.Sitecore.Commerce/Configuration/Commerce/CommerceEngine/CommerceEngine.Deploy.json' ` 86 | -CommerceServicesDbServer $Env:SQL_SERVER ` 87 | -CommerceServicesDbName SitecoreCommerce9_SharedEnvironments ` 88 | -CommerceServicesGlobalDbName SitecoreCommerce9_Global ` 89 | -CommerceServicesPostfix Sc9 ` 90 | -SitecoreDbServer $Env:SQL_SERVER ` 91 | -SitecoreCoreDbName "${$Env:SQL_DB_PREFIX}_Core"` 92 | -SolrUrl $solrUrl ` 93 | -SearchIndexPrefix $Env:SOLR_CORE_PREFIX ` 94 | -CommerceOpsServicesPort 5015 ` 95 | -CommerceShopsServicesPort 5005 ` 96 | -CommerceAuthoringServicesPort 5000 ` 97 | -CommerceMinionsServicesPort 5010 ` 98 | -SiteHostHeaderName 'sitecore' ` 99 | -UserAccount @{ Domain = $Env:COMPUTERNAME; UserName = 'commerceuser'; Password = 'Pa$$w0rd' } ` 100 | -CommerceEngineDacPac '/Files/Dacpac.dacpac' ` 101 | -SitecoreCommerceEngineZipPath $engineZip ` 102 | -CommerceSearchProvider 'SOLR' ` 103 | -CertificateName 'commerce' ` 104 | -Skip "DeployCommerceDatabase", "AddCommerceUserToCoreDatabase" 105 | 106 | RUN [Environment]::SetEnvironmentVariable('PSModulePath', $env:PSModulePath + ';/Files/SIF.Sitecore.Commerce/Modules'); ` 107 | Install-SitecoreConfiguration -Path '/Files/SIF.Sitecore.Commerce/Configuration/Commerce/SitecoreBizFx/SitecoreBizFx.json' ` 108 | -SitecoreBizFxServicesContentPath './Sitecore.BizFX' ` 109 | -CommerceAuthoringServicesPort 5000 ` 110 | -UserAccount @{ Domain = $Env:COMPUTERNAME; UserName = 'commerceuser'; Password = 'Pa$$w0rd' } 111 | 112 | RUN [Environment]::SetEnvironmentVariable('PSModulePath', $env:PSModulePath + ';/Files/SIF.Sitecore.Commerce/Modules'); ` 113 | $zip = '/Files/{0}' -f $Env:SITECORE_IDENTITY_PACKAGE; ` 114 | Install-SitecoreConfiguration -Path '/Files/SIF.Sitecore.Commerce/Configuration/Commerce/SitecoreIdentityServer/SitecoreIdentityServer.json' ` 115 | -SitecoreIdentityServerZipPath $zip ` 116 | -SitecoreIdentityServerName 'SitecoreIdentityServer' ` 117 | -SitecoreDbServer $Env:SQL_SERVER ` 118 | -SitecoreCoreDbName "${$Env:SQL_DB_PREFIX}_Core" ` 119 | -UserAccount @{ Domain = $Env:COMPUTERNAME; UserName = 'commerceuser'; Password = 'Pa$$w0rd' } 120 | 121 | # The Commerce SSL bindings are created with DNS localhost in a harcoded way 122 | # Update these to match the host name 123 | RUN $certificates = Get-ChildItem -Path 'cert:\localmachine\my' -DnsName 'DO_NOT_TRUST_SitecoreRootCert'; ` 124 | $rootCert = $certificates[0]; ` 125 | $certificate = New-SelfSignedCertificate -certstorelocation cert:\localmachine\my -dnsname 'commerce' -Signer $rootcert -KeyExportPolicy Exportable -Provider 'Microsoft Enhanced RSA and AES Cryptographic Provider'; ` 126 | Get-WebBinding -Name 'CommerceOps_Sc9' -Protocol 'https' | Remove-WebBinding; ` 127 | New-WebBinding -Name 'CommerceOps_Sc9' -HostHeader $Env:HOST_NAME -Protocol 'https' -SslFlags 1 -Port 5015; ` 128 | $binding = Get-WebBinding -Name 'CommerceOps_Sc9' -Protocol 'https'; ` 129 | $binding.AddSslCertificate($certificate.GetCertHashString(), 'My'); ` 130 | Get-WebBinding -Name 'CommerceShops_Sc9' -Protocol 'https' | Remove-WebBinding; ` 131 | New-WebBinding -Name 'CommerceShops_Sc9' -HostHeader $Env:HOST_NAME -Protocol 'https' -SslFlags 1 -Port 5005; ` 132 | $binding = Get-WebBinding -Name 'CommerceShops_Sc9' -Protocol 'https'; ` 133 | $binding.AddSslCertificate($certificate.GetCertHashString(), 'My'); ` 134 | Get-WebBinding -Name 'CommerceAuthoring_Sc9' -Protocol 'https' | Remove-WebBinding; ` 135 | New-WebBinding -Name 'CommerceAuthoring_Sc9' -HostHeader $Env:HOST_NAME -Protocol 'https' -SslFlags 1 -Port 5000; ` 136 | $binding = Get-WebBinding -Name 'CommerceAuthoring_Sc9' -Protocol 'https'; ` 137 | $binding.AddSslCertificate($certificate.GetCertHashString(), 'My'); ` 138 | Get-WebBinding -Name 'CommerceMinions_Sc9' -Protocol 'https' | Remove-WebBinding; ` 139 | New-WebBinding -Name 'CommerceMinions_Sc9' -HostHeader $Env:HOST_NAME -Protocol 'https' -SslFlags 1 -Port 5010; ` 140 | $binding = Get-WebBinding -Name 'CommerceMinions_Sc9' -Protocol 'https'; ` 141 | $binding.AddSslCertificate($certificate.GetCertHashString(), 'My'); ` 142 | Get-WebBinding -Name 'SitecoreBizFx' -Protocol 'https' | Remove-WebBinding; ` 143 | New-WebBinding -Name 'SitecoreBizFx' -HostHeader $Env:HOST_NAME -Protocol 'https' -SslFlags 1 -Port 4200; ` 144 | $binding = Get-WebBinding -Name 'SitecoreBizFx' -Protocol 'https'; ` 145 | $binding.AddSslCertificate($certificate.GetCertHashString(), 'My'); ` 146 | Get-WebBinding -Name 'SitecoreIdentityServer' -Protocol 'https' | Remove-WebBinding; ` 147 | New-WebBinding -Name 'SitecoreIdentityServer' -HostHeader $Env:HOST_NAME -Protocol 'https' -SslFlags 1 -Port 5050; ` 148 | $binding = Get-WebBinding -Name 'SitecoreIdentityServer' -Protocol 'https'; ` 149 | $binding.AddSslCertificate($certificate.GetCertHashString(), 'My'); 150 | 151 | ADD commerce/UpdateConnectionString.ps1 /Scripts 152 | 153 | RUN /Scripts/UpdateConnectionString.ps1 -folder c:\inetpub\wwwroot\CommerceAuthoring_Sc9 ` 154 | -userName 'sa' ` 155 | -password $Env:SQL_SA_PASSWORD ` 156 | -server $Env:SQL_SERVER; ` 157 | /Scripts/UpdateConnectionString.ps1 -folder c:\inetpub\wwwroot\CommerceMinions_Sc9 ` 158 | -userName 'sa' ` 159 | -password $Env:SQL_SA_PASSWORD ` 160 | -server $Env:SQL_SERVER; ` 161 | /Scripts/UpdateConnectionString.ps1 -folder c:\inetpub\wwwroot\CommerceOps_Sc9 ` 162 | -userName 'sa' ` 163 | -password $Env:SQL_SA_PASSWORD ` 164 | -server $Env:SQL_SERVER; ` 165 | /Scripts/UpdateConnectionString.ps1 -folder c:\inetpub\wwwroot\CommerceShops_Sc9 ` 166 | -userName 'sa' ` 167 | -password $Env:SQL_SA_PASSWORD ` 168 | -server $Env:SQL_SERVER 169 | 170 | # Install hosting 171 | RUN Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1')); ` 172 | choco install -y --params="Quiet" dotnetcore-windowshosting 173 | 174 | # Install IIS URL Rewrite 175 | RUN choco install -y --params="Quiet" urlrewrite 176 | 177 | RUN $pathToAppSettings = $(Join-Path -Path c:\inetpub\wwwroot\SitecoreIdentityServer\wwwroot -ChildPath "appsettings.json"); ` 178 | $json = Get-Content $pathToAppSettings -raw | ConvertFrom-Json; ` 179 | $connectionString = 'Data Source={0};Initial Catalog=Sitecore_Core;Integrated Security=False;User Id={1};Password={2};' -f $Env:SQL_SERVER, 'sa', $Env:SQL_SA_PASSWORD; ` 180 | $json.AppSettings.SitecoreMembershipOptions.ConnectionString = $connectionString; ` 181 | $json = ConvertTo-Json $json -Depth 100; ` 182 | Set-Content $pathToAppSettings -Value $json -Encoding UTF8; 183 | 184 | RUN $hostFileName = 'c:\\windows\\system32\\drivers\\etc\\hosts'; '\"`r`n127.0.0.1`t$Env:HOST_NAME\"' | Add-Content $hostFileName 185 | 186 | ADD commerce/UpdateIdentityServerUrl.ps1 /Scripts 187 | 188 | RUN /Scripts/UpdateIdentityServerUrl.ps1 -folder c:\inetpub\wwwroot\CommerceAuthoring_Sc9 ` 189 | -hostName $Env:HOST_NAME; ` 190 | /Scripts/UpdateIdentityServerUrl.ps1 -folder c:\inetpub\wwwroot\CommerceMinions_Sc9 ` 191 | -hostName $Env:HOST_NAME; ` 192 | /Scripts/UpdateIdentityServerUrl.ps1 -folder c:\inetpub\wwwroot\CommerceOps_Sc9 ` 193 | -hostName $Env:HOST_NAME; ` 194 | /Scripts/UpdateIdentityServerUrl.ps1 -folder c:\inetpub\wwwroot\CommerceShops_Sc9 ` 195 | -hostName $Env:HOST_NAME; 196 | 197 | ADD commerce/UpdateSitecoreUrl.ps1 /Scripts 198 | 199 | RUN /Scripts/UpdateSitecoreUrl.ps1 -folder c:\inetpub\wwwroot\CommerceAuthoring_Sc9 ` 200 | -hostName $Env:SITECORE_HOSTNAME; ` 201 | /Scripts/UpdateSitecoreUrl.ps1 -folder c:\inetpub\wwwroot\CommerceMinions_Sc9 ` 202 | -hostName $Env:SITECORE_HOSTNAME; ` 203 | /Scripts/UpdateSitecoreUrl.ps1 -folder c:\inetpub\wwwroot\CommerceOps_Sc9 ` 204 | -hostName $Env:SITECORE_HOSTNAME; ` 205 | /Scripts/UpdateSitecoreUrl.ps1 -folder c:\inetpub\wwwroot\CommerceShops_Sc9 ` 206 | -hostName $Env:SITECORE_HOSTNAME 207 | 208 | # Set the certificate details of the certificate sitecore will connect with 209 | RUN $CommerceServicesPathCollection = @('C:\\inetpub\\wwwroot\\CommerceAuthoring_Sc9', 'C:\\inetpub\\wwwroot\\CommerceMinions_Sc9', ` 210 | 'C:\\inetpub\\wwwroot\\CommerceOps_Sc9', 'C:\\inetpub\\wwwroot\\CommerceShops_Sc9'); ` 211 | $cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2; ` 212 | $cert.Import('c:\\Files\\commerce.pfx', 'secret', 'MachineKeySet'); ` 213 | foreach($path in $CommerceServicesPathCollection) { ` 214 | $pathToJson = $(Join-Path -Path $path -ChildPath "wwwroot\config.json"); ` 215 | $originalJson = Get-Content $pathToJson -Raw | ConvertFrom-Json; ` 216 | $certificateNode = $originalJson.Certificates.Certificates[0]; ` 217 | $certificateNode.Thumbprint = $cert.Thumbprint; ` 218 | $appSettingsNode = $originalJson.AppSettings; ` 219 | $appSettingsNode.SitecoreIdentityServerUrl = 'https://commerce:5050'; ` 220 | $appSettingsNode.AllowedOrigins = @('https://commerce:4200','http://commerce:4200','http://sitecore'); ` 221 | $appSettingsNode.AntiForgeryEnabled = $False; ` 222 | $originalJson | ConvertTo-Json -Depth 100 -Compress | set-content $pathToJson; ` 223 | } 224 | 225 | # Configure the business tools 226 | RUN $pathToJson = $(Join-Path -Path 'C:\\inetpub\\wwwroot\\SitecoreBizFx' -ChildPath "assets\\config.json"); ` 227 | $originalJson = Get-Content $pathToJson -Raw | ConvertFrom-Json; ` 228 | $originalJson.EnvironmentName = $Env:ENVIRONMENT_NAME; ` 229 | $originalJson.EngineUri = ('https://{0}:5000' -f $Env:HOST_NAME); ` 230 | $originalJson.IdentityServerUri = ('https://{0}:5050' -f $Env:HOST_NAME); ` 231 | $originalJson.BizFxUri = ('https://{0}:4200' -f $Env:HOST_NAME); ` 232 | $originalJson.ShopName = $Env:SHOP_NAME; ` 233 | $originalJson | ConvertTo-Json -Depth 100 -Compress | set-content $pathToJson; 234 | 235 | # Configure the business tools with the correct settings in Identity server 236 | RUN $pathToAppSettings = $(Join-Path -Path c:\inetpub\wwwroot\SitecoreIdentityServer\wwwroot -ChildPath "appsettings.json"); ` 237 | $json = Get-Content $pathToAppSettings -raw | ConvertFrom-Json; ` 238 | $json.AppSettings.Clients[0].RedirectUris[0] = ('https://{0}:4200' -f $Env:HOST_NAME); ` 239 | $json.AppSettings.Clients[0].RedirectUris[1] = ('https://{0}:4200/?' -f $Env:HOST_NAME); ` 240 | $json.AppSettings.Clients[0].PostLogoutRedirectUris[0] = ('https://{0}:4200' -f $Env:HOST_NAME); ` 241 | $json.AppSettings.Clients[0].PostLogoutRedirectUris[1] = ('https://{0}:4200/?' -f $Env:HOST_NAME); ` 242 | $json.AppSettings.Clients[0].AllowedCorsOrigins[0] = ('https://{0}:4200/' -f $Env:HOST_NAME); ` 243 | $json.AppSettings.Clients[0].AllowedCorsOrigins[1] = ('https://{0}:4200' -f $Env:HOST_NAME); ` 244 | $json = ConvertTo-Json $json -Depth 100; ` 245 | Set-Content $pathToAppSettings -Value $json -Encoding UTF8; 246 | 247 | # Install plumber 248 | RUN Expand-Archive -Path "/Files/$Env:PLUMBER_FILE_NAME" -DestinationPath 'c:\\inetpub\\plumber'; ` 249 | Import-Module -Name WebAdministration; ` 250 | $iisApp = New-Item IIS:\Sites\Plumber -bindings @{protocol='http';bindingInformation='*:4000:' + $Env:HOST_NAME} -physicalPath 'c:\inetpub\plumber'; ` 251 | $pathToJson = $(Join-Path -Path 'C:\\inetpub\\plumber' -ChildPath "static\\config.json"); ` 252 | $originalJson = Get-Content $pathToJson -Raw | ConvertFrom-Json; ` 253 | $originalJson.EngineUri = ('https://{0}:5000' -f $Env:HOST_NAME); ` 254 | $originalJson.IdentityServerUri = ('https://{0}:5050' -f $Env:HOST_NAME); ` 255 | $originalJson.PlumberUri = ('http://{0}:4000' -f $Env:HOST_NAME); ` 256 | $originalJson | ConvertTo-Json -Depth 100 -Compress | set-content $pathToJson; ` 257 | $pathToAppSettings = $(Join-Path -Path c:\inetpub\wwwroot\SitecoreIdentityServer\wwwroot -ChildPath "appsettings.json"); ` 258 | $json = Get-Content $pathToAppSettings -raw | ConvertFrom-Json; ` 259 | $client = @{}; ` 260 | $client.ClientId = 'Plumber'; ` 261 | $client.ClientName = 'Plumber'; ` 262 | $client.AccessTokenType = 0; ` 263 | $client.AccessTokenLifetimeInSeconds = 3600; ` 264 | $client.IdentityTokenLifetimeInSeconds = 3600; ` 265 | $client.AllowAccessTokensViaBrowser = $true; ` 266 | $client.RequireConsent = $false; ` 267 | $client.RequireClientSecret = $false; ` 268 | $client.AllowedGrantTypes = @('implicit'); ` 269 | $client.AllowedScopes = @('openid', 'dataEventRecords', 'dataeventrecordsscope', 'securedFiles', 'securedfilesscope', 'role', 'EngineAPI'); ` 270 | $client.RedirectUris = @(('http://{0}:4000' -f $Env:HOST_NAME), ('http://{0}:4000/?' -f $Env:HOST_NAME)); ` 271 | $client.PostLogoutRedirectUris = @(('http://{0}:4000' -f $Env:HOST_NAME), ('http://{0}:4000/?' -f $Env:HOST_NAME)); ` 272 | $client.AllowedCorsOrigins = @(('http://{0}:4000' -f $Env:HOST_NAME), ('http://{0}:4000' -f $Env:HOST_NAME)); ` 273 | $json.AppSettings.Clients += $client; ` 274 | $json = ConvertTo-Json $json -Depth 100; ` 275 | Set-Content $pathToAppSettings -Value $json -Encoding UTF8; ` 276 | $CommerceServicesPathCollection = @('C:\\inetpub\\wwwroot\\CommerceAuthoring_Sc9', 'C:\\inetpub\\wwwroot\\CommerceMinions_Sc9', ` 277 | 'C:\\inetpub\\wwwroot\\CommerceOps_Sc9', 'C:\\inetpub\\wwwroot\\CommerceShops_Sc9'); ` 278 | foreach($path in $CommerceServicesPathCollection) { ` 279 | $pathToJson = $(Join-Path -Path $path -ChildPath "wwwroot\config.json"); ` 280 | $originalJson = Get-Content $pathToJson -Raw | ConvertFrom-Json; ` 281 | $appSettingsNode = $originalJson.AppSettings; ` 282 | $appSettingsNode.AllowedOrigins += ('http://{0}:4000' -f $Env:HOST_NAME); ` 283 | $originalJson | ConvertTo-Json -Depth 100 -Compress | set-content $pathToJson; ` 284 | } 285 | 286 | # Expose Plumber port 287 | EXPOSE 4000 288 | 289 | ADD commerce/WatchDirectoryMultiple.ps1 /Scripts 290 | ADD commerce/WatchDefaultDirectories.ps1 /Scripts 291 | 292 | ENTRYPOINT /Scripts/WatchDefaultDirectories.ps1 293 | -------------------------------------------------------------------------------- /commerce/UpdateConnectionString.ps1: -------------------------------------------------------------------------------- 1 | Param( 2 | $folder, 3 | $userName, 4 | $password, 5 | $server 6 | ) 7 | 8 | $pathToGlobalJson = $(Join-Path -Path $folder -ChildPath "wwwroot\bootstrap\Global.json") 9 | $json = Get-Content $pathToGlobalJson -raw | ConvertFrom-Json; 10 | 11 | foreach ($p in $json.Policies.'$values') { 12 | if ($p.'$type' -eq 'Sitecore.Commerce.Plugin.SQL.EntityStoreSqlPolicy, Sitecore.Commerce.Plugin.SQL') { 13 | $p.Server = $server 14 | $p.UserName = $userName 15 | $p.Password = $password 16 | $p.TrustedConnection = $false 17 | } 18 | } 19 | 20 | $json = ConvertTo-Json $json -Depth 100 21 | Set-Content $pathToGlobalJson -Value $json -Encoding UTF8 22 | 23 | $pathToEnvironmentFiles = $(Join-Path -Path $folder -ChildPath "wwwroot\data\Environments") 24 | $environmentFiles = Get-ChildItem $pathToEnvironmentFiles -Filter *.json 25 | 26 | foreach ($jsonFile in $environmentFiles) { 27 | $json = Get-Content $jsonFile.FullName -Raw | ConvertFrom-Json 28 | $updated = $false 29 | 30 | foreach ($p in $json.Policies.'$values') { 31 | if ($p.'$type' -eq 'Sitecore.Commerce.Plugin.SQL.EntityStoreSqlPolicy, Sitecore.Commerce.Plugin.SQL') { 32 | $p.Server = $server 33 | $p.UserName = $userName 34 | $p.Password = $password 35 | $p.TrustedConnection = $false 36 | 37 | $updated = $true 38 | } 39 | } 40 | 41 | if($updated -eq $true) { 42 | $json = ConvertTo-Json $json -Depth 100 43 | 44 | Set-Content $jsonFile.FullName -Value $json -Encoding UTF8 45 | } 46 | } -------------------------------------------------------------------------------- /commerce/UpdateIdentityServerUrl.ps1: -------------------------------------------------------------------------------- 1 | Param( 2 | $folder, 3 | $hostName 4 | ) 5 | 6 | $pathToConfigJson = $(Join-Path -Path $folder -ChildPath wwwroot\config.json); 7 | $json = Get-Content $pathToConfigJson -raw | ConvertFrom-Json; 8 | 9 | $sitecoreIdentityServerUrl = 'http://{0}:5050' -f $hostName; 10 | $json.AppSettings.SitecoreIdentityServerUrl = $sitecoreIdentityServerUrl; 11 | $json = ConvertTo-Json $json -Depth 100; 12 | Set-Content $pathToConfigJson -Value $json -Encoding UTF8; -------------------------------------------------------------------------------- /commerce/UpdateSitecoreUrl.ps1: -------------------------------------------------------------------------------- 1 | Param( 2 | $folder, 3 | $hostName 4 | ) 5 | 6 | $pathToConfigJson = $(Join-Path -Path $folder -ChildPath wwwroot\data\Environments\PlugIn.Content.PolicySet-1.0.0.json); 7 | $json = Get-Content $pathToConfigJson -raw | ConvertFrom-Json; 8 | 9 | foreach ($p in $json.Policies.'$values') { 10 | if ($p.'$type' -eq 'Sitecore.Commerce.Plugin.Management.SitecoreConnectionPolicy, Sitecore.Commerce.Plugin.Management') { 11 | $p.Host = $hostName 12 | } 13 | } 14 | 15 | $json = ConvertTo-Json $json -Depth 100 16 | Set-Content $pathToConfigJson -Value $json -Encoding UTF8 -------------------------------------------------------------------------------- /commerce/WatchDefaultDirectories.ps1: -------------------------------------------------------------------------------- 1 | C:\Scripts\WatchDirectoryMultiple.ps1 -Path C:\Workspace -Destinations @('C:\\inetpub\\wwwroot\\CommerceAuthoring_Sc9', 'C:\\inetpub\\wwwroot\\CommerceMinions_Sc9', 'C:\\inetpub\\wwwroot\\CommerceOps_Sc9', 'C:\\inetpub\\wwwroot\\CommerceShops_Sc9') -------------------------------------------------------------------------------- /commerce/WatchDirectoryMultiple.ps1: -------------------------------------------------------------------------------- 1 | 2 | [CmdletBinding()] 3 | param( 4 | # Path to watch for changes 5 | [Parameter(Mandatory=$true)] 6 | [ValidateScript({Test-Path $_ -PathType 'Container'})] 7 | $Path, 8 | # Array Destination path to keep updated 9 | [Parameter(Mandatory=$true)] 10 | [array]$Destinations, 11 | # Array of filename patterns (-like operator) to ignore 12 | [Parameter(Mandatory=$false)] 13 | [array]$Ignore = @("*\obj\*", "*.cs", "*.csproj", "*.user") 14 | ) 15 | 16 | function Sync 17 | { 18 | Get-ChildItem -Path $Path -Recurse -File | % { 19 | $sourcePath = $_.FullName 20 | 21 | Foreach($destination in $Destinations) { 22 | $targetPath = ("{0}\{1}" -f $destination, $sourcePath.Replace("$Path\", "")) 23 | $ignored = $false 24 | 25 | if($Ignore -ne $null -and $Ignore.Length -gt 0) { 26 | :filter foreach($filter in $Ignore) { 27 | if($sourcePath -like $filter) 28 | { 29 | $ignored = $true 30 | break :filter 31 | } 32 | } 33 | } 34 | 35 | if($ignored -eq $false) 36 | { 37 | $triggerReason = $null 38 | 39 | if(Test-Path -Path $targetPath -PathType Leaf) 40 | { 41 | Compare-Object (Get-Item $sourcePath) (Get-Item $targetPath) -Property Name, Length, LastWriteTime | % { 42 | $triggerReason = "Different" 43 | } 44 | } 45 | else 46 | { 47 | $triggerReason = "Missing" 48 | } 49 | 50 | if($triggerReason -ne $null) 51 | { 52 | New-Item -Path (Split-Path $targetPath) -ItemType Directory -ErrorAction SilentlyContinue | Out-Null 53 | 54 | Copy-Item -Path $sourcePath -Destination $targetPath -Force 55 | 56 | Write-Output ("{0}: {1, -9} -> {2, -9}" -f [DateTime]::Now.ToString("HH:mm:ss:fff"), $triggerReason, ($sourcePath.Replace("$Path\", ""))) 57 | } 58 | } 59 | } 60 | } 61 | } 62 | 63 | Write-Host ("{0}: Warming up..." -f [DateTime]::Now.ToString("HH:mm:ss:fff")) 64 | 65 | # Initial sync 66 | Sync | Out-Null 67 | 68 | # Warm up 69 | try 70 | { 71 | Invoke-WebRequest -Uri "http://localhost:80" -UseBasicParsing -TimeoutSec 20 -ErrorAction "SilentlyContinue" | Out-Null 72 | } 73 | catch 74 | { 75 | # OK 76 | } 77 | 78 | Write-Host ("{0}: Watching '{1}' for changes, will copy to '{2}' while ignoring '{3}'." -f [DateTime]::Now.ToString("HH:mm:ss:fff"), $Path, $Destinations, ($Ignore -join ", ")) 79 | 80 | # Start 81 | while($true) 82 | { 83 | Sync | Write-Host 84 | 85 | Sleep -Milliseconds 500 86 | } -------------------------------------------------------------------------------- /config/EnableItemServices.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /docker-compose.build-sxa.yml: -------------------------------------------------------------------------------- 1 | version: '2.4' 2 | 3 | services: 4 | sitecore: 5 | volumes: 6 | - .\logs\sitecore:c:\inetpub\wwwroot\${SITECORE_SITE_NAME}\App_Data\logs 7 | - .\wwwroot\sitecore:C:\Workspace 8 | - .\sitecore\sxa:C:\sxa 9 | - .\files:C:\files-mount 10 | environment: 11 | PSE_PACKAGE: ${PSE_PACKAGE} 12 | SXA_PACKAGE: ${SXA_PACKAGE} 13 | SCXA_PACKAGE: ${SCXA_PACKAGE} 14 | 15 | solr: 16 | image: "${IMAGE_PREFIX}solr-sxa:${TAG}" 17 | -------------------------------------------------------------------------------- /docker-compose.sxa.yml: -------------------------------------------------------------------------------- 1 | # Overlay file for Aviva Solutions SXA specific Docker image names 2 | version: '2.4' 3 | 4 | services: 5 | commerce: 6 | image: "${IMAGE_PREFIX}commerce:${TAG}" 7 | 8 | mssql: 9 | image: "${IMAGE_PREFIX}mssql-sxa:${TAG}" 10 | 11 | sitecore: 12 | image: "${IMAGE_PREFIX}sitecore-sxa:${TAG}" 13 | 14 | solr: 15 | image: "${IMAGE_PREFIX}solr-sxa:${TAG}" 16 | 17 | xconnect: 18 | image: "${IMAGE_PREFIX}xconnect:${TAG}" 19 | -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '2.4' 2 | 3 | services: 4 | commerce: 5 | image: "${IMAGE_PREFIX}commerce:${TAG}" 6 | volumes: 7 | - .\logs\commerce\CommerceAuthoring_Sc9:C:\inetpub\wwwroot\CommerceAuthoring_Sc9\wwwroot\logs 8 | - .\logs\commerce\CommerceMinions_Sc9:C:\inetpub\wwwroot\CommerceMinions_Sc9\wwwroot\logs 9 | - .\logs\commerce\CommerceOps_Sc9:C:\inetpub\wwwroot\CommerceOps_Sc9\wwwroot\logs 10 | - .\logs\commerce\CommerceShops_Sc9:C:\inetpub\wwwroot\CommerceShops_Sc9\wwwroot\logs 11 | - .\logs\commerce\SitecoreIdentityServer:C:\inetpub\wwwroot\SitecoreIdentityServer\wwwroot\logs 12 | - .\wwwroot\commerce:C:\Workspace 13 | depends_on: 14 | - xconnect 15 | - mssql 16 | - solr 17 | - sitecore 18 | mem_limit: 4096m 19 | cpu_count: 6 20 | 21 | mssql: 22 | image: "${IMAGE_PREFIX}mssql:${TAG}" 23 | environment: 24 | ACCEPT_EULA: "Y" 25 | sa_password: ${SQL_SA_PASSWORD} 26 | mem_limit: 4096m 27 | cpu_count: 4 28 | 29 | sitecore: 30 | image: "${IMAGE_PREFIX}sitecore:${TAG}" 31 | volumes: 32 | - .\logs\sitecore:c:\inetpub\wwwroot\${SITECORE_SITE_NAME}\App_Data\logs 33 | - .\wwwroot\sitecore:C:\Workspace 34 | depends_on: 35 | - xconnect 36 | - mssql 37 | - solr 38 | mem_limit: 8192m 39 | cpu_count: 6 40 | 41 | solr: 42 | image: "${IMAGE_PREFIX}solr:${TAG}" 43 | mem_limit: 4096m 44 | cpu_count: 4 45 | 46 | xconnect: 47 | image: "${IMAGE_PREFIX}xconnect:${TAG}" 48 | volumes: 49 | - .\logs\xconnect:C:\inetpub\wwwroot\xconnect\App_data\Logs 50 | depends_on: 51 | - mssql 52 | - solr 53 | mem_limit: 2048m 54 | cpu_count: 4 55 | -------------------------------------------------------------------------------- /mssql/Dockerfile: -------------------------------------------------------------------------------- 1 | # escape=` 2 | 3 | # Stage 0: prepare files 4 | ARG BASE_IMAGE 5 | FROM microsoft/aspnet:4.7.1-windowsservercore-1709 AS prepare 6 | 7 | ARG COMMERCE_SDK_PACKAGE 8 | ARG COMMERCE_SIF_PACKAGE 9 | 10 | SHELL ["powershell", "-NoProfile", "-Command", "$ErrorActionPreference = 'Stop';"] 11 | 12 | ADD files/ /Files/ 13 | 14 | RUN Expand-Archive -Path /Files/$Env:COMMERCE_SDK_PACKAGE -DestinationPath /Files/Commerce 15 | RUN Expand-Archive -Path /Files/$Env:COMMERCE_SIF_PACKAGE -DestinationPath /Files/CommerceSIF 16 | 17 | 18 | # Stage 1: create actual image 19 | FROM ${BASE_IMAGE} 20 | 21 | SHELL ["powershell", "-NoProfile", "-Command", "$ErrorActionPreference = 'Stop';"] 22 | 23 | ARG DB_PREFIX 24 | 25 | ENV SQL_PACKAGE_EXE='C:\Program Files (x86)\Microsoft SQL Server\*\DAC\bin\SqlPackage.exe' 26 | 27 | # Add files 28 | COPY --from=prepare /Files/Commerce /Files/Commerce/ 29 | COPY --from=prepare /Files/CommerceSIF /Files/CommerceSIF/ 30 | 31 | # Install commerce engine databases 32 | RUN & $Env:SQL_PACKAGE_EXE /a:Publish /sf:'c:/Files/Commerce/Sitecore.Commerce.Engine.DB.dacpac' /tdn:SitecoreCommerce9_SharedEnvironments /tsn:$Env:COMPUTERNAME 33 | RUN & $Env:SQL_PACKAGE_EXE /a:Publish /sf:'c:/Files/Commerce/Sitecore.Commerce.Engine.DB.dacpac' /tdn:SitecoreCommerce9_Global /tsn:$Env:COMPUTERNAME 34 | 35 | RUN sqlcmd -Q \"EXEC sp_MSforeachdb 'IF charindex(''Sitecore'', ''?'' ) = 1 BEGIN EXEC [?]..sp_changedbowner ''sa'' END'\" -------------------------------------------------------------------------------- /scripts/Import-Certificate.ps1: -------------------------------------------------------------------------------- 1 | Param( 2 | $certificateFile = "", 3 | $secret = "", 4 | $storeName = "Root", 5 | $storeLocation = "LocalMachine" 6 | ) 7 | 8 | $pwd = ConvertTo-SecureString -String $secret -Force -AsPlainText; ` 9 | Import-PfxCertificate -FilePath $certificateFile -CertStoreLocation Cert:\$storeLocation\$storeName -Password $pwd 10 | -------------------------------------------------------------------------------- /scripts/Install-SIF.ps1: -------------------------------------------------------------------------------- 1 | # Install SIF 2 | Install-PackageProvider -Name NuGet -Force; ` 3 | Register-PSRepository -Name SitecoreGallery -SourceLocation https://sitecore.myget.org/F/sc-powershell/api/v2; ` 4 | Install-Module SitecoreInstallFramework -RequiredVersion 1.2.1 -Force 5 | -------------------------------------------------------------------------------- /scripts/Watch-Directory.ps1: -------------------------------------------------------------------------------- 1 | [CmdletBinding()] 2 | param( 3 | # Path to watch for changes 4 | [Parameter(Mandatory = $true)] 5 | [ValidateScript( {Test-Path $_ -PathType 'Container'})] 6 | $Path, 7 | # Destination path to keep updated 8 | [Parameter(Mandatory = $true)] 9 | [ValidateScript( {Test-Path $_ -PathType 'Container'})] 10 | $Destination 11 | ) 12 | 13 | function Sync 14 | { 15 | param( 16 | [Parameter(Mandatory = $true)] 17 | $Path, 18 | [Parameter(Mandatory = $true)] 19 | $Destination 20 | ) 21 | 22 | $dirty = $false 23 | $raw = (robocopy $Path $Destination /E /XX /MT:1 /NJH /NJS /FP /NDL /NP /NS /R:5 /W:1 /XD obj /XF *.user /XF *ncrunch* /XF *.cs) 24 | $raw | ForEach-Object { 25 | $line = $_.Trim().Replace("`r`n", "").Replace("`t", " ") 26 | $dirty = ![string]::IsNullOrEmpty($line) 27 | 28 | if ($dirty) 29 | { 30 | Write-Host ("{0}: {1}" -f [DateTime]::Now.ToString("HH:mm:ss:fff"), $line) -ForegroundColor DarkGray 31 | } 32 | } 33 | 34 | if ($dirty) 35 | { 36 | Write-Host ("{0}: Done syncing..." -f [DateTime]::Now.ToString("HH:mm:ss:fff")) -ForegroundColor Green 37 | } 38 | } 39 | 40 | Write-Host ("{0}: Watching '{1}' for changes, will copy to '{2}'..." -f [DateTime]::Now.ToString("HH:mm:ss:fff"), $Path, $Destination) 41 | 42 | # Cleanup old event if present in current session 43 | Get-EventSubscriber -SourceIdentifier "FileDeleted" -ErrorAction "SilentlyContinue" | Unregister-Event 44 | 45 | # Setup 46 | $watcher = New-Object System.IO.FileSystemWatcher 47 | $watcher.Path = $Path 48 | $watcher.IncludeSubdirectories = $true 49 | $watcher.EnableRaisingEvents = $true 50 | 51 | Register-ObjectEvent $watcher Deleted -SourceIdentifier "FileDeleted" -MessageData $Destination { 52 | $destinationPath = Join-Path $event.MessageData $eventArgs.Name 53 | $delete = !(Test-Path $eventArgs.FullPath) -and (Test-Path $destinationPath) 54 | 55 | if ($delete) 56 | { 57 | try 58 | { 59 | Remove-Item -Path $destinationPath -Force -Recurse -ErrorAction "SilentlyContinue" 60 | 61 | Write-Host ("{0}: Deleted '{1}'..." -f [DateTime]::Now.ToString("HH:mm:ss:fff"), $destinationPath) -ForegroundColor Green 62 | } 63 | catch 64 | { 65 | Write-Host ("{0}: Could not delete '{1}'..." -f [DateTime]::Now.ToString("HH:mm:ss:fff"), $destinationPath) -ForegroundColor Red 66 | } 67 | } 68 | } | Out-Null 69 | 70 | try 71 | { 72 | # Main loop 73 | while ($true) 74 | { 75 | Sync -Path $Path -Destination $Destination | Write-Host 76 | 77 | Start-Sleep -Milliseconds 200 78 | } 79 | } 80 | finally 81 | { 82 | # Cleanup 83 | Get-EventSubscriber -SourceIdentifier "FileDeleted" | Unregister-Event 84 | 85 | if ($watcher -ne $null) 86 | { 87 | $watcher.Dispose() 88 | $watcher = $null 89 | } 90 | 91 | Write-Host ("{0}: Stopped." -f [DateTime]::Now.ToString("HH:mm:ss:fff")) -ForegroundColor Red 92 | } -------------------------------------------------------------------------------- /scripts/WatchDirectoryMultiple.ps1: -------------------------------------------------------------------------------- 1 | 2 | [CmdletBinding()] 3 | param( 4 | # Path to watch for changes 5 | [Parameter(Mandatory=$true)] 6 | [ValidateScript({Test-Path $_ -PathType 'Container'})] 7 | $Path, 8 | # Array Destination path to keep updated 9 | [Parameter(Mandatory=$true)] 10 | [array]$Destinations, 11 | # Array of filename patterns (-like operator) to ignore 12 | [Parameter(Mandatory=$false)] 13 | [array]$Ignore = @("*\obj\*", "*.cs", "*.csproj", "*.user") 14 | ) 15 | 16 | function Sync 17 | { 18 | Foreach($destination in $Destinations) { 19 | $dirty = $false 20 | $raw = (robocopy $Path $destination /E /XX /MT:1 /NJH /NJS /FP /NDL /NP /NS /R:5 /W:1 /XD obj /XF *.user /XF *ncrunch* /XF *.cs) 21 | $raw | ForEach-Object { 22 | $line = $_.Trim().Replace("`r`n", "").Replace("`t", " ") 23 | $dirty = ![string]::IsNullOrEmpty($line) 24 | 25 | if ($dirty) 26 | { 27 | Write-Host ("{0}: {1}" -f [DateTime]::Now.ToString("HH:mm:ss:fff"), $line) -ForegroundColor DarkGray 28 | } 29 | } 30 | 31 | if ($dirty) 32 | { 33 | Write-Host ("{0}: Done syncing..." -f [DateTime]::Now.ToString("HH:mm:ss:fff")) -ForegroundColor Green 34 | } 35 | } 36 | } 37 | 38 | # Initial sync 39 | Sync | Out-Null 40 | 41 | Foreach($destination in $Destinations) { 42 | Write-Host ("{0}: Watching '{1}' for changes, will copy to '{2}' while ignoring '{3}'." -f [DateTime]::Now.ToString("HH:mm:ss:fff"), $Path, $destination, ($Ignore -join ", ")) 43 | } 44 | 45 | # Start 46 | while($true) { 47 | Sync | Write-Host 48 | 49 | Sleep -Milliseconds 500 50 | } -------------------------------------------------------------------------------- /sitecore/Dockerfile: -------------------------------------------------------------------------------- 1 | # escape=` 2 | 3 | # Stage 0: prepare files 4 | ARG BASE_IMAGE 5 | FROM microsoft/aspnet:4.7.1-windowsservercore-1709 AS prepare 6 | 7 | ARG COMMERCE_SIF_PACKAGE 8 | ARG COMMERCE_CONNECT_PACKAGE 9 | ARG COMMERCE_MA_PACKAGE 10 | ARG COMMERCE_MA_FOR_AUTOMATION_ENGINE_PACKAGE 11 | ARG COMMERCE_XPROFILES_PACKAGE 12 | ARG COMMERCE_XANALYTICS_PACKAGE 13 | 14 | SHELL ["powershell", "-NoProfile", "-Command", "$ErrorActionPreference = 'Stop';"] 15 | 16 | ADD files/ /Files/ 17 | 18 | RUN Expand-Archive -Path "/Files/$Env:COMMERCE_SIF_PACKAGE" -DestinationPath /Files/CommerceSIF -Force; ` 19 | Expand-Archive -Path "/Files/$Env:COMMERCE_CONNECT_PACKAGE" -DestinationPath /Files/SitecoreCommerceConnectCore -Force; ` 20 | Expand-Archive -Path "/Files/$Env:COMMERCE_MA_PACKAGE" -DestinationPath /Files/CommerceMACore -Force; ` 21 | Expand-Archive -Path "/Files/$Env:COMMERCE_MA_FOR_AUTOMATION_ENGINE_PACKAGE" -DestinationPath /Files/CommerceMACoreForAE -Force; ` 22 | Expand-Archive -Path "/Files/$Env:COMMERCE_XPROFILES_PACKAGE" -DestinationPath /Files/CommerceXProfiles -Force; ` 23 | Expand-Archive -Path "/Files/$Env:COMMERCE_XANALYTICS_PACKAGE" -DestinationPath /Files/CommerceXAnalytics -Force 24 | 25 | # Stage 1: perform actual build 26 | FROM ${BASE_IMAGE} 27 | 28 | SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"] 29 | 30 | ARG COMMERCE_CERT_PATH 31 | ARG ROOT_CERT_PATH 32 | ARG WEB_TRANSFORM_TOOL 33 | ARG COMMERCE_CONNECT_ENGINE_PACKAGE 34 | 35 | COPY --from=prepare /Files/CommerceSIF /Files/CommerceSIF/ 36 | COPY --from=prepare /Files/SitecoreCommerceConnectCore /Files/SitecoreCommerceConnectCore 37 | COPY --from=prepare /Files/CommerceMACore /Files/CommerceMACore 38 | COPY --from=prepare /Files/CommerceMACoreForAE /Files/CommerceMACoreForAE 39 | COPY --from=prepare /Files/CommerceXProfiles /Files/CommerceXProfiles 40 | COPY --from=prepare /Files/CommerceXAnalytics /Files/CommerceXAnalytics 41 | COPY --from=prepare /Files/${WEB_TRANSFORM_TOOL} /Files/Microsoft.Web.XmlTransform.dll 42 | COPY --from=prepare /Files/${COMMERCE_CONNECT_ENGINE_PACKAGE} /Files/Sitecore.Commerce.Engine.Connect.update 43 | COPY --from=prepare /Files/${ROOT_CERT_PATH} /Files/${ROOT_CERT_PATH} 44 | 45 | ADD sitecore/InstallCommercePackages.ps1 /Scripts/ 46 | ADD files/$COMMERCE_CERT_PATH /Files/ 47 | ADD scripts/Import-Certificate.ps1 /Scripts/ 48 | 49 | # Trust Self signed certificates 50 | RUN /Scripts/Import-Certificate.ps1 -certificateFile /Files/$Env:COMMERCE_CERT_PATH -secret 'secret' -storeName 'Root' -storeLocation 'LocalMachine'; ` 51 | /Scripts/Import-Certificate.ps1 -certificateFile /Files/$Env:ROOT_CERT_PATH -secret 'secret' -storeName 'Root' -storeLocation 'LocalMachine' 52 | 53 | # Import XConnect certificate 54 | RUN /Scripts/Import-Certificate.ps1 -certificateFile /Files/$Env:COMMERCE_CERT_PATH -secret 'secret' -storeName 'My' -storeLocation 'LocalMachine'; ` 55 | /Scripts/Import-Certificate.ps1 -certificateFile /Files/$Env:ROOT_CERT_PATH -secret 'secret' -storeName 'My' -storeLocation 'LocalMachine' 56 | 57 | # Patch Solr config, set initializeOnAdd = true 58 | # See: https://sitecore.stackexchange.com/questions/11523/index-sitecore-marketingdefinitions-master-was-not-found-exception-in-sitecore 59 | ADD sitecore/Sitecore.Commerce.Engine.Connectors.Index.Solr.InitializeOnAdd.config /Files/ 60 | RUN cp /Files/Sitecore.Commerce.Engine.Connectors.Index.Solr.InitializeOnAdd.config /inetpub/wwwroot/sitecore/App_Config/Include/zSitecore.Commerce.Engine.Connectors.Index.Solr.InitializeOnAdd.config 61 | 62 | ENTRYPOINT /Scripts/Watch-Directory.ps1 -Path C:\Workspace -Destination c:\inetpub\wwwroot\sitecore 63 | -------------------------------------------------------------------------------- /sitecore/InstallCommercePackages.ps1: -------------------------------------------------------------------------------- 1 | Param( 2 | $certificateFile = 'c:\\Files\\commerce.pfx', 3 | $shopsServiceUrl = 'https://commerce:5000/api/', 4 | $commerceOpsServiceUrl = 'https://commerce:5000/commerceops/', 5 | $identityServerUrl = 'https://commerce:5050/', 6 | $defaultEnvironment = 'HabitatShops', 7 | $defaultShopName = 'CommerceEngineDefaultStorefront', 8 | $sitecoreUserName = 'sitecore\admin', 9 | $sitecorePassword = 'b' 10 | ) 11 | 12 | Function GetIdServerToken { 13 | param( 14 | [Parameter(Mandatory = $true)] 15 | [string]$userName, 16 | [Parameter(Mandatory = $true)] 17 | [string]$password, 18 | [Parameter(Mandatory = $true)] 19 | [string]$urlIdentityServerGetToken 20 | ) 21 | 22 | $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" 23 | $headers.Add("Content-Type", 'application/x-www-form-urlencoded') 24 | $headers.Add("Accept", 'application/json') 25 | 26 | $body = @{ 27 | password = $password 28 | grant_type = 'password' 29 | username = $userName 30 | client_id = 'postman-api' 31 | scope = 'openid EngineAPI postman_api' 32 | } 33 | 34 | Write-Host "Get Token From Sitecore.IdentityServer" -ForegroundColor Green 35 | $response = Invoke-RestMethod $urlIdentityServerGetToken -Method Post -Body $body -Headers $headers 36 | 37 | return "Bearer {0}" -f $response.access_token 38 | } 39 | 40 | Function BootStrapCommerceServices { 41 | param( 42 | [Parameter(Mandatory = $true)] 43 | [string]$urlCommerceShopsServicesBootstrap, 44 | [Parameter(Mandatory = $true)] 45 | [string]$bearerToken 46 | ) 47 | 48 | Write-Host "BootStrapping Commerce Services: $($urlCommerceShopsServicesBootstrap)" -ForegroundColor Yellow 49 | $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" 50 | $headers.Add("Authorization", $bearerToken) 51 | Invoke-RestMethod $urlCommerceShopsServicesBootstrap -TimeoutSec 1200 -Method PUT -Headers $headers 52 | Write-Host "Commerce Services BootStrapping completed" -ForegroundColor Green 53 | } 54 | 55 | Function InitializeCommerceServices { 56 | param( 57 | [Parameter(Mandatory = $true)] 58 | [string]$urlCommerceShopsServicesInitializeEnvironment, 59 | [Parameter(Mandatory = $true)] 60 | [string]$bearerToken 61 | ) 62 | 63 | $headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" 64 | $headers.Add("Authorization", $bearerToken); 65 | Write-Host "Initializing Shops: $($urlCommerceShopsServicesInitializeEnvironment)" -ForegroundColor Yellow 66 | 67 | Invoke-RestMethod $urlCommerceShopsServicesInitializeEnvironment -TimeoutSec 1200 -Method PUT -Headers $headers 68 | 69 | Write-Host "Shops initialization complete..." -ForegroundColor Green 70 | } 71 | 72 | [Environment]::SetEnvironmentVariable('PSModulePath', $env:PSModulePath + ';/Files/CommerceSIF/Modules'); 73 | 74 | Copy-Item -Path /Files/CommerceSIF/SiteUtilityPages -Destination c:\\inetpub\\wwwroot\\sitecore\\SiteUtilityPages -Force -Recurse 75 | 76 | Install-SitecoreConfiguration -Path '/Files/CommerceSIF/Configuration/Commerce/Connect/Connect.json' ` 77 | -ModuleFullPath '/Files/SitecoreCommerceConnectCore/package.zip' ` 78 | -ModulesDirDst c:\\inetpub\wwwroot\\sitecore\\App_Data\\packages ` 79 | -BaseUrl 'http://sitecore/SiteUtilityPages' 80 | 81 | Install-SitecoreConfiguration -Path '/Files/CommerceSIF/Configuration/Commerce/Connect/Connect_xProfiles.json' ` 82 | -ModuleFullPath '/Files/CommerceXProfiles/package.zip' ` 83 | -ModulesDirDst c:\\inetpub\wwwroot\\sitecore\\App_Data\\packages ` 84 | -BaseUrl 'http://sitecore/SiteUtilityPages' 85 | 86 | Install-SitecoreConfiguration -Path '/Files/CommerceSIF/Configuration/Commerce/Connect/Connect_xAnalytics.json' ` 87 | -ModuleFullPath '/Files/CommerceXAnalytics/package.zip' ` 88 | -ModulesDirDst c:\\inetpub\wwwroot\\sitecore\\App_Data\\packages ` 89 | -BaseUrl 'http://sitecore/SiteUtilityPages' 90 | 91 | Install-SitecoreConfiguration -Path '/Files/CommerceSIF/Configuration/Commerce/Connect/Connect_MarketingAutomation.json' ` 92 | -ModuleFullPath '/Files/CommerceMACore/package.zip' ` 93 | -ModulesDirDst c:\\inetpub\wwwroot\\sitecore\\App_Data\\packages ` 94 | -BaseUrl 'http://sitecore/SiteUtilityPages' ` 95 | -AutomationEngineModule 'none' ` 96 | -XConnectSitePath 'none' ` 97 | -Skip 'InstallAutomationEngineModule' # Automation Engine is installed in XConnect 98 | 99 | Install-SitecoreConfiguration -Path '/Files/CommerceSIF/Configuration/Commerce/CEConnect/CEConnect.json' ` 100 | -PackageFullPath /Files/Sitecore.Commerce.Engine.Connect.update ` 101 | -PackagesDirDst c:\\inetpub\wwwroot\\sitecore\\sitecore\\admin\\Packages ` 102 | -BaseUrl 'http://sitecore/SiteUtilityPages' ` 103 | -MergeTool '/Files/Microsoft.Web.XmlTransform.dll' ` 104 | -InputFile c:\\inetpub\\wwwroot\\sitecore\\MergeFiles\\Sitecore.Commerce.Engine.Connectors.Merge.Config ` 105 | -WebConfig c:\\inetpub\\wwwroot\\sitecore\\web.config 106 | 107 | # Modify the commerce engine connection 108 | $engineConnectIncludeDir = 'c:\\inetpub\\wwwroot\\sitecore\\App_Config\\Include\\Y.Commerce.Engine'; ` 109 | $cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2; ` 110 | $cert.Import($certificateFile, 'secret', 'MachineKeySet'); ` 111 | $pathToConfig = $(Join-Path -Path $engineConnectIncludeDir -ChildPath "\Sitecore.Commerce.Engine.Connect.config"); ` 112 | $xml = [xml](Get-Content $pathToConfig); ` 113 | $node = $xml.configuration.sitecore.commerceEngineConfiguration; ` 114 | $node.certificateThumbprint = $cert.Thumbprint; ` 115 | $node.shopsServiceUrl = $shopsServiceUrl; ` 116 | $node.commerceOpsServiceUrl = $commerceOpsServiceUrl; ` 117 | $node.defaultEnvironment = $defaultEnvironment; ` 118 | $node.defaultShopName = $defaultShopName; ` 119 | $xml.Save($pathToConfig); 120 | 121 | # Initialize the commerce engine 122 | $bearerToken = GetIdServerToken -userName $sitecoreUserName -password $sitecorePassword -urlIdentityServerGetToken "${identityServerUrl}connect/token" 123 | 124 | BootStrapCommerceServices -urlCommerceShopsServicesBootstrap "${commerceOpsServiceUrl}Bootstrap()" -bearerToken $bearerToken 125 | InitializeCommerceServices -urlCommerceShopsServicesInitializeEnvironment "${commerceOpsServiceUrl}InitializeEnvironment(environment='$defaultEnvironment')" -bearerToken $bearerToken 126 | 127 | $commerceConfigFolder = 'C:\inetpub\wwwroot\sitecore\App_Config\Include\Y.Commerce.Engine' 128 | Rename-Item $commerceConfigFolder\Sitecore.Commerce.Engine.DataProvider.config.disabled $commerceConfigFolder\Sitecore.Commerce.Engine.DataProvider.config 129 | Rename-Item $commerceConfigFolder\Sitecore.Commerce.Engine.Connectors.Index.Common.config.disabled $commerceConfigFolder\Sitecore.Commerce.Engine.Connectors.Index.Common.config 130 | Rename-Item $commerceConfigFolder\Sitecore.Commerce.Engine.Connectors.Index.Solr.config.disabled $commerceConfigFolder\Sitecore.Commerce.Engine.Connectors.Index.Solr.config 131 | -------------------------------------------------------------------------------- /sitecore/Sitecore.Commerce.Engine.Connectors.Index.Solr.InitializeOnAdd.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | true 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /sitecore/sxa/InstallSXA.ps1: -------------------------------------------------------------------------------- 1 | # Use Commerce SIF modules to install packages 2 | [Environment]::SetEnvironmentVariable('PSModulePath', $env:PSModulePath + ';/Files/CommerceSIF/Modules'); 3 | 4 | # Copy utilities to install packages (this is taken from Sitecore Commerce SIF) 5 | Copy-Item -Path /Files/CommerceSIF/SiteUtilityPages -Destination c:\\inetpub\\wwwroot\\sitecore\\SiteUtilityPages -Force -Recurse 6 | 7 | # Install PSE and SXA packages 8 | Install-SitecoreConfiguration -Path '/sxa/install-sxa.json' ` 9 | -PowershellExtensionPackageFullPath "/files-mount/$env:PSE_PACKAGE" ` 10 | -SXAPackageFullPath "/files-mount/$env:SXA_PACKAGE" ` 11 | -SCXAPackageFullPath "/files-mount/$env:SCXA_PACKAGE" 12 | -------------------------------------------------------------------------------- /sitecore/sxa/install-sxa.json: -------------------------------------------------------------------------------- 1 | { 2 | "Parameters": { 3 | "PowershellExtensionPackageFullPath": { 4 | "Type": "string", 5 | "Description": "The path to the Sitecore Powershell Extensions zip.", 6 | "DefaultValue": "/files-mount/pse-package.zip" 7 | }, 8 | "SXAPackageFullPath": { 9 | "Type": "string", 10 | "Description": "The path to the SXA zip.", 11 | "DefaultValue": "/files-mount/sxa-package.zip" 12 | }, 13 | "SCXAPackageFullPath": { 14 | "Type": "string", 15 | "Description": "The path to the SCXA zip.", 16 | "DefaultValue": "/files-mount/scxa-package.zip" 17 | }, 18 | "PackagesDirDst": { 19 | "Type": "string", 20 | "Description": "The path to packages directory.", 21 | "DefaultValue": "C:\\inetpub\\wwwroot\\sitecore\\sitecore\\admin\\Packages\\" 22 | }, 23 | "BaseUrl": { 24 | "Type": "string", 25 | "Description": "The utility pages base url.", 26 | "DefaultValue": "http://sitecore/SiteUtilityPages" 27 | } 28 | }, 29 | "Modules": [ "SitecoreUtilityTasks" ], 30 | "Tasks": { 31 | "CheckPaths": { 32 | "Type": "EnsurePath", 33 | "Params": { 34 | "Exists": [ 35 | "[parameter('PowershellExtensionPackageFullPath')]", 36 | "[parameter('SXAPackageFullPath')]", 37 | "[parameter('SCXAPackageFullPath')]", 38 | "[parameter('PackagesDirDst')]" 39 | ] 40 | } 41 | }, 42 | "InstallPSEPackage": { 43 | "Type": "InstallPackage", 44 | "Params": { 45 | "PackageFullPath": "[parameter('PowershellExtensionPackageFullPath')]", 46 | "PackagesDirDst": "[parameter('PackagesDirDst')]", 47 | "BaseUrl": "[parameter('BaseUrl')]" 48 | } 49 | }, 50 | "InstallSXAPackage": { 51 | "Type": "InstallPackage", 52 | "Params": { 53 | "PackageFullPath": "[parameter('SXAPackageFullPath')]", 54 | "PackagesDirDst": "[parameter('PackagesDirDst')]", 55 | "BaseUrl": "[parameter('BaseUrl')]" 56 | } 57 | }, 58 | "InstallSCXAPackage": { 59 | "Type": "InstallPackage", 60 | "Params": { 61 | "PackageFullPath": "[parameter('SCXAPackageFullPath')]", 62 | "PackagesDirDst": "[parameter('PackagesDirDst')]", 63 | "BaseUrl": "[parameter('BaseUrl')]" 64 | } 65 | } 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /solr/DockerFile: -------------------------------------------------------------------------------- 1 | # escape=` 2 | ARG BASE_IMAGE 3 | FROM ${BASE_IMAGE} 4 | 5 | SHELL ["powershell", "-NoProfile", "-Command", "$ErrorActionPreference = 'Stop';"] 6 | 7 | ARG HOST_NAME 8 | ARG PORT=8983 9 | ARG SERVICE_NAME="Solr-6" 10 | ARG SITECORE_CORE_PREFIX="xp0" 11 | ARG COMMERCE_SIF_PACKAGE 12 | 13 | ADD files/$COMMERCE_SIF_PACKAGE /Files/ 14 | 15 | RUN Expand-Archive -Path /Files/$Env:COMMERCE_SIF_PACKAGE -DestinationPath /Files/CommerceSIF 16 | 17 | # Set longer timeout after Solr start 18 | RUN $config = Get-Content "C:\\Files\\CommerceSIF\\Configuration\\Commerce\\Solr\\sitecore-commerce-solr.json" | Where-Object { $_ -notmatch '^\s*\/\/'} | Out-String | ConvertFrom-Json; ` 19 | $config.Tasks.StartSolr.Params.PostDelay = 30000; ` 20 | ConvertTo-Json $config -Depth 50 | Set-Content -Path "C:\\Files\\CommerceSIF\\Configuration\\Commerce\\Solr\\sitecore-commerce-solr.json" 21 | 22 | RUN $solrUrl = 'https://{0}:{1}/solr' -f $Env:HOST_NAME, $Env:PORT; ` 23 | /Scripts/WaitForSolr.ps1 $Env:HOST_NAME; ` 24 | Install-SitecoreConfiguration -Path "C:\\Files\\CommerceSIF\\Configuration\\Commerce\\Solr\\sitecore-commerce-solr.json" ` 25 | -SolrUrl $solrUrl ` 26 | -SolrRoot "c:\\solr\\solr-6.6.2" ` 27 | -SolrService $Env:SERVICE_NAME ` 28 | -CorePrefix $Env:SITECORE_CORE_PREFIX ` 29 | -SolrSchemas "C:\\Files\\CommerceSIF\\SolrSchemas" 30 | -------------------------------------------------------------------------------- /solr/sxa/Dockerfile: -------------------------------------------------------------------------------- 1 | # escape=` 2 | FROM sxc-solr:9.0.3 3 | 4 | SHELL ["powershell", "-NoProfile", "-Command", "$ErrorActionPreference = 'Stop';"] 5 | 6 | ADD sxa-solr.json /Files/Config/ 7 | 8 | RUN /Scripts/WaitForSolr.ps1 "solr"; ` 9 | Install-SitecoreConfiguration -Path "C:\\Files\\Config\\sxa-solr.json" 10 | -------------------------------------------------------------------------------- /solr/sxa/sxa-solr.json: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------------------------------- // 2 | // Sitecore Install Framework - Sitecore Solr Configuration // 3 | // // 4 | // Run this configuration on your Solr instance to configure the cores for // 5 | // an Sitecore deployment. If the cores exist, they will be overwritten. // 6 | // // 7 | // NOTE: Only single line comments are accepted in configurations. // 8 | // -------------------------------------------------------------------------- // 9 | 10 | { 11 | "Parameters": { 12 | // Parameters are values that may be passed when Install-SitecoreConfiguration is called. 13 | // Parameters must declare a Type and may declare a DefaultValue and Description. 14 | // Parameters with no DefaultValue are required when Install-SitecoreConfiguration is called. 15 | 16 | "SolrUrl": { 17 | "Type": "string", 18 | "DefaultValue": "https://solr:8983/solr", 19 | "Description": "The Solr instance url." 20 | }, 21 | "SolrRoot": { 22 | "Type": "string", 23 | "DefaultValue": "c:\\solr\\solr-6.6.2", 24 | "Description": "The file path to the Solr instance." 25 | }, 26 | "SolrService": { 27 | "Type": "string", 28 | "DefaultValue": "Solr-6", 29 | "Description": "The name of the Solr service." 30 | }, 31 | "BaseConfig": { 32 | "Type": "string", 33 | "DefaultValue": "basic_configs", 34 | "Description": "The configset to copy as a base for each core." 35 | }, 36 | "CorePrefix": { 37 | "Type": "string", 38 | "DefaultValue": "sitecore", 39 | "Description": "The prefix for each of the created indexes." 40 | } 41 | }, 42 | "Variables": { 43 | // Variables are values calculated in a configuration. 44 | // They can reference Parameters, other Variables, and config functions. 45 | 46 | // Resolves the full path to Solr on disk in case a relative path was passed. 47 | "Solr.FullRoot": "[resolvepath(parameter('SolrRoot'))]", 48 | 49 | // Resolves the full solr folder path on disk. 50 | "Solr.Server": "[joinpath(variable('Solr.FullRoot'), 'server', 'solr')]", 51 | 52 | // Resolves the full path for the base configset to use for each core. 53 | "Solr.BaseConfigs": "[joinpath(variable('Solr.Server'), 'configsets', parameter('BaseConfig'))]", 54 | 55 | // Solr schema file to be modified. 56 | "Solr.SchemaFileName": "managed-schema", 57 | 58 | // Solr schema xpaths to be modified. 59 | "Solr.Xpath.SchemaRoot": "//schema", 60 | "Solr.Xpath.UniqueKey": "[concat(variable('Solr.Xpath.SchemaRoot'), '/uniqueKey')]", 61 | 62 | // The solr unique field info. 63 | "Solr.UniqueField" : "_uniqueid", 64 | "Solr.UniqueField.Attributes": { 65 | "name" : "[variable('Solr.UniqueField')]", 66 | "type": "string", 67 | "indexed": "true", 68 | "required": "true", 69 | "stored": "true" 70 | }, 71 | 72 | // The names of the cores to create. 73 | "SXAMaster.Name": "[concat(parameter('CorePrefix'), '_sxa_master_index')]", 74 | "SXAWeb.Name": "[concat(parameter('CorePrefix'), '_sxa_web_index')]", 75 | 76 | // The destination paths of the cores to create. 77 | "SXAMaster.Root": "[joinpath(variable('Solr.Server'), variable('SXAMaster.Name'))]", 78 | "SXAWeb.Root": "[joinpath(variable('Solr.Server'), variable('SXAWeb.Name'))]", 79 | 80 | // The destination paths for the base configurations of each core. 81 | "SXAMaster.Conf": "[joinpath(variable('SXAMaster.Root'), 'conf')]", 82 | "SXAWeb.Conf": "[joinpath(variable('SXAWeb.Root'), 'conf')]" 83 | }, 84 | "Tasks": { 85 | // Tasks are separate units of work in a configuration. 86 | // Each task is an action that will be completed when Install-SitecoreConfiguration is called. 87 | // By default, tasks are applied in the order they are declared. 88 | // Tasks may reference Parameters, Variables, and config functions. 89 | 90 | "StopSolr": { 91 | // Stops the Solr service if it is running. 92 | "Type": "ManageService", 93 | "Params":{ 94 | "Name": "[parameter('SolrService')]", 95 | "Status": "Stopped", 96 | "PostDelay": 1000 97 | } 98 | }, 99 | "CleanCores": { 100 | // Creates/clears core paths. 101 | "Type": "EnsurePath", 102 | "Params":{ 103 | "Clean": [ 104 | "[variable('SXAMaster.Root')]", 105 | "[variable('SXAWeb.Root')]" 106 | ] 107 | } 108 | }, 109 | "PrepareCores": { 110 | // Copies base configs into the core paths. 111 | "Type": "Copy", 112 | "Params":[ 113 | { "Source": "[joinpath(variable('Solr.BaseConfigs'), '*')]", "Destination": "[variable('SXAMaster.Root')]" }, 114 | { "Source": "[joinpath(variable('Solr.BaseConfigs'), '*')]", "Destination": "[variable('SXAWeb.Root')]" } 115 | ] 116 | }, 117 | "AddSchemaUniqueKeyField": { 118 | // Amends the core managed schema uniqueKey element 119 | "Type": "SetXml", 120 | "Params": [ 121 | { "FilePath": "[joinpath(variable('SXAMaster.Conf'), variable('Solr.SchemaFileName'))]", "Xpath":"[variable('Solr.Xpath.SchemaRoot')]", "Element": "field", "Attributes": "[variable('Solr.UniqueField.Attributes')]" }, 122 | { "FilePath": "[joinpath(variable('SXAWeb.Conf'), variable('Solr.SchemaFileName'))]", "Xpath":"[variable('Solr.Xpath.SchemaRoot')]", "Element": "field", "Attributes": "[variable('Solr.UniqueField.Attributes')]" } 123 | ] 124 | }, 125 | "UpdateSchemaUniqueKey": { 126 | // Amends the core managed schema uniqueKey element 127 | "Type": "SetXml", 128 | "Params": [ 129 | { "FilePath": "[joinpath(variable('SXAMaster.Conf'), 'managed-schema')]", "Xpath":"[variable('Solr.Xpath.UniqueKey')]", "Value": "[variable('Solr.UniqueField')]" }, 130 | { "FilePath": "[joinpath(variable('SXAWeb.Conf'), 'managed-schema')]", "Xpath":"[variable('Solr.Xpath.UniqueKey')]", "Value": "[variable('Solr.UniqueField')]" } 131 | ] 132 | }, 133 | "StartSolr": { 134 | // Starts the Solr service. 135 | "Type": "ManageService", 136 | "Params":{ 137 | "Name": "[parameter('SolrService')]", 138 | "Status": "Running", 139 | "PostDelay": 8000 140 | } 141 | }, 142 | "CreateCores":{ 143 | // Tells Solr to create the new cores. 144 | "Type": "ManageSolrCore", 145 | "Params": [ 146 | { "Action": "Create", "Address": "[parameter('SolrUrl')]", "Arguments": { "Name": "[variable('SXAMaster.Name')]" } }, 147 | { "Action": "Create", "Address": "[parameter('SolrUrl')]", "Arguments": { "Name": "[variable('SXAWeb.Name')]" } } 148 | ] 149 | } 150 | } 151 | } 152 | -------------------------------------------------------------------------------- /xconnect/Dockerfile: -------------------------------------------------------------------------------- 1 | # escape=` 2 | ARG BASE_IMAGE 3 | FROM ${BASE_IMAGE} 4 | 5 | ARG COMMERCE_MA_FOR_AUTOMATION_ENGINE_PACKAGE 6 | 7 | SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"] 8 | 9 | ADD files/ /Files/ 10 | 11 | # Extract Marketing Automation, see InstallAutomationEngineModule SIF task 12 | RUN Expand-Archive -Path "/Files/$Env:COMMERCE_MA_FOR_AUTOMATION_ENGINE_PACKAGE" -DestinationPath C:\inetpub\wwwroot\xconnect 13 | 14 | # Copy XConnect Models for SC9 Commerce, see Connect.Copy.Models SIF task 15 | COPY xconnect/Sitecore.Commerce.Connect.XConnect.Models.json /Files/ 16 | RUN cp /Files/Sitecore.Commerce.Connect.XConnect.Models.json C:\inetpub\wwwroot\xconnect\App_data\jobs\continuous\IndexWorker\App_data\Models\; ` 17 | cp /Files/Sitecore.Commerce.Connect.XConnect.Models.json C:\inetpub\wwwroot\xconnect\App_data\Models\ 18 | -------------------------------------------------------------------------------- /xconnect/Sitecore.Commerce.Connect.XConnect.Models.json: -------------------------------------------------------------------------------- 1 | { 2 | "Name": "RegisterConnectEventModel", 3 | "Version": "0.1", 4 | "References": [ 5 | { 6 | "Name": "XConnect", 7 | "Version": "1.0" 8 | }, 9 | { 10 | "Name": "Sitecore.XConnect.Collection.Model", 11 | "Version": "9.0" 12 | } 13 | ], 14 | "Types": { 15 | "Sitecore.Commerce.CustomModels.Facets.GDPR.GDPRParty": { 16 | "Type": "Complex", 17 | "Annotations": [ 18 | { 19 | "Type": "DoNotIndexAttribute" 20 | } 21 | ], 22 | "ClrType": "Sitecore.Commerce.CustomModels.Facets.GDPR.GDPRParty, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 23 | "Properties": { 24 | "Id": { 25 | "Type": "Guid" 26 | }, 27 | "HashValue": { 28 | "Type": "String" 29 | }, 30 | "FirstName": { 31 | "Type": "String" 32 | }, 33 | "LastName": { 34 | "Type": "String" 35 | }, 36 | "Email": { 37 | "Type": "String" 38 | }, 39 | "Company": { 40 | "Type": "String" 41 | }, 42 | "Address1": { 43 | "Type": "String" 44 | }, 45 | "Address2": { 46 | "Type": "String" 47 | }, 48 | "ZipPostalCode": { 49 | "Type": "String" 50 | }, 51 | "City": { 52 | "Type": "String" 53 | }, 54 | "State": { 55 | "Type": "String" 56 | }, 57 | "Country": { 58 | "Type": "String" 59 | }, 60 | "PhoneNumber": { 61 | "Type": "String" 62 | } 63 | } 64 | }, 65 | "Sitecore.Commerce.CustomModels.Facets.GDPR.GDPRString": { 66 | "Type": "Complex", 67 | "Annotations": [ 68 | { 69 | "Type": "DoNotIndexAttribute" 70 | } 71 | ], 72 | "ClrType": "Sitecore.Commerce.CustomModels.Facets.GDPR.GDPRString, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 73 | "Properties": { 74 | "Id": { 75 | "Type": "Guid" 76 | }, 77 | "Value": { 78 | "Type": "String" 79 | } 80 | } 81 | }, 82 | "Sitecore.Commerce.CustomModels.Facets.GDPR.GDPRCustomerPaymentInfo": { 83 | "Type": "Complex", 84 | "Annotations": [ 85 | { 86 | "Type": "DoNotIndexAttribute" 87 | } 88 | ], 89 | "ClrType": "Sitecore.Commerce.CustomModels.Facets.GDPR.GDPRCustomerPaymentInfo, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 90 | "Properties": { 91 | "Id": { 92 | "Type": "Guid" 93 | }, 94 | "HashValue": { 95 | "Type": "String" 96 | }, 97 | "CreditCardType": { 98 | "Type": "String" 99 | }, 100 | "CardholderName": { 101 | "Type": "String" 102 | }, 103 | "CardNumber": { 104 | "Type": "String" 105 | }, 106 | "ExpireMonth": { 107 | "Type": "String" 108 | }, 109 | "ExpireYear": { 110 | "Type": "String" 111 | } 112 | } 113 | }, 114 | "Sitecore.Commerce.CustomModels.Facets.GDPR.GDPRCommerceUser": { 115 | "Type": "Complex", 116 | "Annotations": [ 117 | { 118 | "Type": "DoNotIndexAttribute" 119 | } 120 | ], 121 | "ClrType": "Sitecore.Commerce.CustomModels.Facets.GDPR.GDPRCommerceUser, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 122 | "Properties": { 123 | "Id": { 124 | "Type": "Guid" 125 | }, 126 | "HashValue": { 127 | "Type": "String" 128 | }, 129 | "UserName": { 130 | "Type": "String" 131 | }, 132 | "FirstName": { 133 | "Type": "String" 134 | }, 135 | "LastName": { 136 | "Type": "String" 137 | }, 138 | "Email": { 139 | "Type": "String" 140 | }, 141 | "Comment": { 142 | "Type": "String" 143 | }, 144 | "Customers": { 145 | "Type": [ 146 | "String" 147 | ] 148 | } 149 | } 150 | }, 151 | "Sitecore.Commerce.CustomModels.Facets.GDPR.GDPRPartyList": { 152 | "Type": "Facet", 153 | "BaseType": "Sitecore.XConnect.Facet", 154 | "Annotations": [ 155 | { 156 | "Type": "PIISensitiveAttribute" 157 | }, 158 | { 159 | "Type": "DoNotIndexAttribute" 160 | } 161 | ], 162 | "ClrType": "Sitecore.Commerce.CustomModels.Facets.GDPR.GDPRPartyList, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 163 | "Properties": { 164 | "PartyList": { 165 | "Type": { 166 | "String": "Sitecore.Commerce.CustomModels.Facets.GDPR.GDPRParty" 167 | } 168 | } 169 | } 170 | }, 171 | "Sitecore.Commerce.CustomModels.Facets.GDPR.GDPRStringList": { 172 | "Type": "Facet", 173 | "BaseType": "Sitecore.XConnect.Facet", 174 | "Annotations": [ 175 | { 176 | "Type": "PIISensitiveAttribute" 177 | }, 178 | { 179 | "Type": "DoNotIndexAttribute" 180 | } 181 | ], 182 | "ClrType": "Sitecore.Commerce.CustomModels.Facets.GDPR.GDPRStringList, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 183 | "Properties": { 184 | "StringList": { 185 | "Type": { 186 | "String": "Sitecore.Commerce.CustomModels.Facets.GDPR.GDPRString" 187 | } 188 | } 189 | } 190 | }, 191 | "Sitecore.Commerce.CustomModels.Facets.GDPR.GDPRCustomerPaymentInfoList": { 192 | "Type": "Facet", 193 | "BaseType": "Sitecore.XConnect.Facet", 194 | "Annotations": [ 195 | { 196 | "Type": "PIISensitiveAttribute" 197 | }, 198 | { 199 | "Type": "DoNotIndexAttribute" 200 | } 201 | ], 202 | "ClrType": "Sitecore.Commerce.CustomModels.Facets.GDPR.GDPRCustomerPaymentInfoList, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 203 | "Properties": { 204 | "CustomerPaymentInfoList": { 205 | "Type": { 206 | "String": "Sitecore.Commerce.CustomModels.Facets.GDPR.GDPRCustomerPaymentInfo" 207 | } 208 | } 209 | } 210 | }, 211 | "Sitecore.Commerce.CustomModels.Facets.GDPR.GDPRCommerceUserList": { 212 | "Type": "Facet", 213 | "BaseType": "Sitecore.XConnect.Facet", 214 | "Annotations": [ 215 | { 216 | "Type": "PIISensitiveAttribute" 217 | }, 218 | { 219 | "Type": "DoNotIndexAttribute" 220 | } 221 | ], 222 | "ClrType": "Sitecore.Commerce.CustomModels.Facets.GDPR.GDPRCommerceUserList, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 223 | "Properties": { 224 | "UserList": { 225 | "Type": { 226 | "String": "Sitecore.Commerce.CustomModels.Facets.GDPR.GDPRCommerceUser" 227 | } 228 | } 229 | } 230 | }, 231 | "Sitecore.Commerce.CustomModels.Facets.CurrentCartFacet": { 232 | "Type": "Facet", 233 | "BaseType": "Sitecore.XConnect.Facet", 234 | "Annotations": [ 235 | { 236 | "Type": "PIISensitiveAttribute" 237 | }, 238 | { 239 | "Type": "DoNotIndexAttribute" 240 | } 241 | ], 242 | "ClrType": "Sitecore.Commerce.CustomModels.Facets.CurrentCartFacet, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 243 | "Properties": { 244 | "CartJson": { 245 | "Type": "String" 246 | }, 247 | "Count": { 248 | "Type": "Decimal" 249 | }, 250 | "Total": { 251 | "Type": "Decimal" 252 | } 253 | } 254 | }, 255 | "Sitecore.Commerce.CustomModels.Models.Entity": { 256 | "Type": "Complex", 257 | "Abstract": true, 258 | "Annotations": [ 259 | { 260 | "Type": "DoNotIndexAttribute" 261 | } 262 | ], 263 | "ClrType": "Sitecore.Commerce.CustomModels.Models.Entity, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 264 | "Properties": {} 265 | }, 266 | "Sitecore.Commerce.CustomModels.Models.MappedEntity": { 267 | "Type": "Complex", 268 | "Abstract": true, 269 | "BaseType": "Sitecore.Commerce.CustomModels.Models.Entity", 270 | "Annotations": [ 271 | { 272 | "Type": "DoNotIndexAttribute" 273 | } 274 | ], 275 | "ClrType": "Sitecore.Commerce.CustomModels.Models.MappedEntity, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 276 | "Properties": { 277 | "ExternalId": { 278 | "Type": "String" 279 | } 280 | } 281 | }, 282 | "Sitecore.Commerce.CustomModels.Models.EnumType": { 283 | "Type": "Complex", 284 | "Abstract": true, 285 | "BaseType": "Sitecore.Commerce.CustomModels.Models.Entity", 286 | "Annotations": [ 287 | { 288 | "Type": "DoNotIndexAttribute" 289 | } 290 | ], 291 | "ClrType": "Sitecore.Commerce.CustomModels.Models.EnumType`1[[Sitecore.Commerce.CustomModels.Models.StockStatus, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null]], Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 292 | "Properties": { 293 | "Value": { 294 | "Type": "Int32" 295 | }, 296 | "Name": { 297 | "Type": "String" 298 | } 299 | } 300 | }, 301 | "Sitecore.Commerce.CustomModels.Models.StockStatus": { 302 | "Type": "Complex", 303 | "BaseType": "Sitecore.Commerce.CustomModels.Models.EnumType", 304 | "Annotations": [ 305 | { 306 | "Type": "DoNotIndexAttribute" 307 | } 308 | ], 309 | "ClrType": "Sitecore.Commerce.CustomModels.Models.StockStatus, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 310 | "Properties": {} 311 | }, 312 | "Sitecore.Commerce.CustomModels.Models.Total": { 313 | "Type": "Complex", 314 | "BaseType": "Sitecore.Commerce.CustomModels.Models.Entity", 315 | "Annotations": [ 316 | { 317 | "Type": "DoNotIndexAttribute" 318 | } 319 | ], 320 | "ClrType": "Sitecore.Commerce.CustomModels.Models.Total, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 321 | "Properties": { 322 | "Amount": { 323 | "Type": "Decimal" 324 | }, 325 | "CurrencyCode": { 326 | "Type": "String" 327 | }, 328 | "Description": { 329 | "Type": "String" 330 | }, 331 | "TaxTotal": { 332 | "Type": "Sitecore.Commerce.CustomModels.Models.TaxTotal" 333 | } 334 | } 335 | }, 336 | "Sitecore.Commerce.CustomModels.Models.TaxTotal": { 337 | "Type": "Complex", 338 | "BaseType": "Sitecore.Commerce.CustomModels.Models.Entity", 339 | "Annotations": [ 340 | { 341 | "Type": "DoNotIndexAttribute" 342 | } 343 | ], 344 | "ClrType": "Sitecore.Commerce.CustomModels.Models.TaxTotal, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 345 | "Properties": { 346 | "Amount": { 347 | "Type": "Decimal" 348 | }, 349 | "Description": { 350 | "Type": "String" 351 | }, 352 | "Id": { 353 | "Type": "String" 354 | }, 355 | "TaxSubtotals": { 356 | "Type": [ 357 | "Sitecore.Commerce.CustomModels.Models.TaxSubtotal" 358 | ] 359 | } 360 | } 361 | }, 362 | "Sitecore.Commerce.CustomModels.Models.TaxSubtotal": { 363 | "Type": "Complex", 364 | "BaseType": "Sitecore.Commerce.CustomModels.Models.Entity", 365 | "Annotations": [ 366 | { 367 | "Type": "DoNotIndexAttribute" 368 | } 369 | ], 370 | "ClrType": "Sitecore.Commerce.CustomModels.Models.TaxSubtotal, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 371 | "Properties": { 372 | "BaseUnitMeasure": { 373 | "Type": "String" 374 | }, 375 | "Description": { 376 | "Type": "String" 377 | }, 378 | "Percent": { 379 | "Type": "Decimal" 380 | }, 381 | "PerUnitAmount": { 382 | "Type": "Decimal" 383 | }, 384 | "TaxSubtotalType": { 385 | "Type": "String" 386 | } 387 | } 388 | }, 389 | "Sitecore.Commerce.CustomModels.Models.Price": { 390 | "Type": "Complex", 391 | "BaseType": "Sitecore.Commerce.CustomModels.Models.Entity", 392 | "Annotations": [ 393 | { 394 | "Type": "DoNotIndexAttribute" 395 | } 396 | ], 397 | "ClrType": "Sitecore.Commerce.CustomModels.Models.Price, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 398 | "Properties": { 399 | "Amount": { 400 | "Type": "Decimal" 401 | }, 402 | "Conditions": { 403 | "Type": [ 404 | "Sitecore.Commerce.CustomModels.Models.PriceCondition" 405 | ] 406 | }, 407 | "CurrencyCode": { 408 | "Type": "String" 409 | }, 410 | "Description": { 411 | "Type": "String" 412 | }, 413 | "PriceType": { 414 | "Type": "String" 415 | } 416 | } 417 | }, 418 | "Sitecore.Commerce.CustomModels.Models.PriceCondition": { 419 | "Type": "Complex", 420 | "BaseType": "Sitecore.Commerce.CustomModels.Models.Entity", 421 | "Annotations": [ 422 | { 423 | "Type": "DoNotIndexAttribute" 424 | } 425 | ], 426 | "ClrType": "Sitecore.Commerce.CustomModels.Models.PriceCondition, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 427 | "Properties": { 428 | "ConditionType": { 429 | "Type": "String" 430 | }, 431 | "Description": { 432 | "Type": "String" 433 | }, 434 | "Operator": { 435 | "Type": "String" 436 | }, 437 | "Sequence": { 438 | "Type": "Int32" 439 | }, 440 | "Value": { 441 | "Type": "String" 442 | }, 443 | "Price": { 444 | "Type": "Decimal?" 445 | } 446 | } 447 | }, 448 | "Sitecore.Commerce.CustomModels.Models.Party": { 449 | "Type": "Complex", 450 | "BaseType": "Sitecore.Commerce.CustomModels.Models.MappedEntity", 451 | "Annotations": [ 452 | { 453 | "Type": "DoNotIndexAttribute" 454 | } 455 | ], 456 | "ClrType": "Sitecore.Commerce.CustomModels.Models.Party, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 457 | "Properties": { 458 | "PartyId": { 459 | "Type": "String" 460 | }, 461 | "FirstName": { 462 | "Type": "String" 463 | }, 464 | "LastName": { 465 | "Type": "String" 466 | }, 467 | "Email": { 468 | "Type": "String" 469 | }, 470 | "Company": { 471 | "Type": "String" 472 | }, 473 | "Address1": { 474 | "Type": "String" 475 | }, 476 | "Address2": { 477 | "Type": "String" 478 | }, 479 | "ZipPostalCode": { 480 | "Type": "String" 481 | }, 482 | "City": { 483 | "Type": "String" 484 | }, 485 | "State": { 486 | "Type": "String" 487 | }, 488 | "Country": { 489 | "Type": "String" 490 | }, 491 | "PhoneNumber": { 492 | "Type": "String" 493 | }, 494 | "Facet": { 495 | "Type": "Guid" 496 | }, 497 | "IsPrimary": { 498 | "Type": "Boolean" 499 | } 500 | } 501 | }, 502 | "Sitecore.Commerce.CustomModels.Models.ShippingInfo": { 503 | "Type": "Complex", 504 | "BaseType": "Sitecore.Commerce.CustomModels.Models.MappedEntity", 505 | "Annotations": [ 506 | { 507 | "Type": "DoNotIndexAttribute" 508 | } 509 | ], 510 | "ClrType": "Sitecore.Commerce.CustomModels.Models.ShippingInfo, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 511 | "Properties": { 512 | "LineIDs": { 513 | "Type": [ 514 | "String" 515 | ] 516 | }, 517 | "ShippingMethodID": { 518 | "Type": "String" 519 | }, 520 | "ShippingProviderID": { 521 | "Type": "String" 522 | }, 523 | "PartyID": { 524 | "Type": "String" 525 | } 526 | } 527 | }, 528 | "Sitecore.Commerce.CustomModels.Models.PaymentInfo": { 529 | "Type": "Complex", 530 | "BaseType": "Sitecore.Commerce.CustomModels.Models.MappedEntity", 531 | "Annotations": [ 532 | { 533 | "Type": "DoNotIndexAttribute" 534 | } 535 | ], 536 | "ClrType": "Sitecore.Commerce.CustomModels.Models.PaymentInfo, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 537 | "Properties": { 538 | "LineIDs": { 539 | "Type": [ 540 | "String" 541 | ] 542 | }, 543 | "PaymentMethodID": { 544 | "Type": "String" 545 | }, 546 | "PaymentProviderID": { 547 | "Type": "String" 548 | }, 549 | "PartyID": { 550 | "Type": "String" 551 | } 552 | } 553 | }, 554 | "Sitecore.Commerce.CustomModels.Models.CartParty": { 555 | "Type": "Complex", 556 | "BaseType": "Sitecore.Commerce.CustomModels.Models.MappedEntity", 557 | "Annotations": [ 558 | { 559 | "Type": "DoNotIndexAttribute" 560 | } 561 | ], 562 | "ClrType": "Sitecore.Commerce.CustomModels.Models.CartParty, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 563 | "Properties": { 564 | "PartyID": { 565 | "Type": "String" 566 | }, 567 | "Name": { 568 | "Type": "String" 569 | } 570 | } 571 | }, 572 | "Sitecore.Commerce.CustomModels.Models.CartAdjustment": { 573 | "Type": "Complex", 574 | "BaseType": "Sitecore.Commerce.CustomModels.Models.Entity", 575 | "Annotations": [ 576 | { 577 | "Type": "DoNotIndexAttribute" 578 | } 579 | ], 580 | "ClrType": "Sitecore.Commerce.CustomModels.Models.CartAdjustment, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 581 | "Properties": { 582 | "Amount": { 583 | "Type": "Decimal" 584 | }, 585 | "Description": { 586 | "Type": "String" 587 | }, 588 | "IsCharge": { 589 | "Type": "Boolean" 590 | }, 591 | "LineNumber": { 592 | "Type": "Int32" 593 | }, 594 | "Percentage": { 595 | "Type": "Single" 596 | } 597 | } 598 | }, 599 | "Sitecore.Commerce.CustomModels.Models.CartOption": { 600 | "Type": "Complex", 601 | "BaseType": "Sitecore.Commerce.CustomModels.Models.Entity", 602 | "Annotations": [ 603 | { 604 | "Type": "DoNotIndexAttribute" 605 | } 606 | ], 607 | "ClrType": "Sitecore.Commerce.CustomModels.Models.CartOption, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 608 | "Properties": { 609 | "Description": { 610 | "Type": "String" 611 | }, 612 | "OptionId": { 613 | "Type": "String" 614 | }, 615 | "Value": { 616 | "Type": "String" 617 | } 618 | } 619 | }, 620 | "Sitecore.Commerce.CustomModels.Models.CartProduct": { 621 | "Type": "Complex", 622 | "BaseType": "Sitecore.Commerce.CustomModels.Models.Entity", 623 | "Annotations": [ 624 | { 625 | "Type": "DoNotIndexAttribute" 626 | } 627 | ], 628 | "ClrType": "Sitecore.Commerce.CustomModels.Models.CartProduct, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 629 | "Properties": { 630 | "Adjustments": { 631 | "Type": [ 632 | "Sitecore.Commerce.CustomModels.Models.CartAdjustment" 633 | ] 634 | }, 635 | "LineNumber": { 636 | "Type": "Int32" 637 | }, 638 | "Options": { 639 | "Type": [ 640 | "Sitecore.Commerce.CustomModels.Models.CartOption" 641 | ] 642 | }, 643 | "ProductId": { 644 | "Type": "String" 645 | }, 646 | "Price": { 647 | "Type": "Sitecore.Commerce.CustomModels.Models.Price" 648 | }, 649 | "SitecoreProductItemId": { 650 | "Type": "Guid" 651 | }, 652 | "StockStatus": { 653 | "Type": "Sitecore.Commerce.CustomModels.Models.StockStatus" 654 | }, 655 | "InStockDate": { 656 | "Type": "DateTime?" 657 | }, 658 | "ShippingDate": { 659 | "Type": "DateTime?" 660 | }, 661 | "ProductName": { 662 | "Type": "String" 663 | } 664 | } 665 | }, 666 | "Sitecore.Commerce.CustomModels.Models.CartBase": { 667 | "Type": "Complex", 668 | "BaseType": "Sitecore.Commerce.CustomModels.Models.MappedEntity", 669 | "Annotations": [ 670 | { 671 | "Type": "DoNotIndexAttribute" 672 | } 673 | ], 674 | "ClrType": "Sitecore.Commerce.CustomModels.Models.CartBase, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 675 | "Properties": { 676 | "UserId": { 677 | "Type": "String" 678 | }, 679 | "UserIdFacet": { 680 | "Type": "Guid" 681 | }, 682 | "CustomerId": { 683 | "Type": "String" 684 | }, 685 | "CustomerIdFacet": { 686 | "Type": "Guid" 687 | }, 688 | "Name": { 689 | "Type": "String" 690 | }, 691 | "ShopName": { 692 | "Type": "String" 693 | }, 694 | "CurrencyCode": { 695 | "Type": "String" 696 | }, 697 | "IsLocked": { 698 | "Type": "Boolean?" 699 | }, 700 | "Status": { 701 | "Type": "String" 702 | }, 703 | "CartType": { 704 | "Type": "String" 705 | }, 706 | "BuyerCustomerParty": { 707 | "Type": "Sitecore.Commerce.CustomModels.Models.CartParty" 708 | }, 709 | "AccountingCustomerParty": { 710 | "Type": "Sitecore.Commerce.CustomModels.Models.CartParty" 711 | }, 712 | "LoyaltyCardID": { 713 | "Type": "String" 714 | }, 715 | "Email": { 716 | "Type": "String" 717 | }, 718 | "EmailFacet": { 719 | "Type": "Guid" 720 | } 721 | } 722 | }, 723 | "Sitecore.Commerce.CustomModels.Models.WishListLine": { 724 | "Type": "Complex", 725 | "Annotations": [ 726 | { 727 | "Type": "DoNotIndexAttribute" 728 | } 729 | ], 730 | "ClrType": "Sitecore.Commerce.CustomModels.Models.WishListLine, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 731 | "Properties": { 732 | "ProductId": { 733 | "Type": "String" 734 | }, 735 | "Quantity": { 736 | "Type": "Decimal" 737 | }, 738 | "Price": { 739 | "Type": "String" 740 | } 741 | } 742 | }, 743 | "Sitecore.Commerce.CustomModels.Models.WishListEmailed": { 744 | "Type": "Complex", 745 | "Annotations": [ 746 | { 747 | "Type": "DoNotIndexAttribute" 748 | } 749 | ], 750 | "ClrType": "Sitecore.Commerce.CustomModels.Models.WishListEmailed, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 751 | "Properties": { 752 | "ExternalId": { 753 | "Type": "String" 754 | }, 755 | "UserId": { 756 | "Type": "String" 757 | }, 758 | "UserIdFacet": { 759 | "Type": "Guid" 760 | }, 761 | "WishListName": { 762 | "Type": "String" 763 | }, 764 | "ShopName": { 765 | "Type": "String" 766 | }, 767 | "WishListObject": { 768 | "Type": "Sitecore.Commerce.CustomModels.Models.WishList" 769 | } 770 | } 771 | }, 772 | "Sitecore.Commerce.CustomModels.Models.WishList": { 773 | "Type": "Complex", 774 | "BaseType": "Sitecore.Commerce.CustomModels.Models.MappedEntity", 775 | "Annotations": [ 776 | { 777 | "Type": "DoNotIndexAttribute" 778 | } 779 | ], 780 | "ClrType": "Sitecore.Commerce.CustomModels.Models.WishList, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 781 | "Properties": { 782 | "ShopName": { 783 | "Type": "String" 784 | }, 785 | "Name": { 786 | "Type": "String" 787 | }, 788 | "CustomerId": { 789 | "Type": "String" 790 | }, 791 | "CustomerIdFacet": { 792 | "Type": "Guid" 793 | }, 794 | "UserId": { 795 | "Type": "String" 796 | }, 797 | "UserIdFacet": { 798 | "Type": "Guid" 799 | }, 800 | "IsFavorite": { 801 | "Type": "Boolean" 802 | }, 803 | "Lines": { 804 | "Type": [ 805 | "Sitecore.Commerce.CustomModels.Models.WishListLine" 806 | ] 807 | } 808 | } 809 | }, 810 | "Sitecore.Commerce.CustomModels.Models.CustomerPaymentInfo": { 811 | "Type": "Complex", 812 | "BaseType": "Sitecore.Commerce.CustomModels.Models.MappedEntity", 813 | "Annotations": [ 814 | { 815 | "Type": "DoNotIndexAttribute" 816 | } 817 | ], 818 | "ClrType": "Sitecore.Commerce.CustomModels.Models.CustomerPaymentInfo, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 819 | "Properties": { 820 | "Name": { 821 | "Type": "String" 822 | }, 823 | "PaymentMethodID": { 824 | "Type": "String" 825 | }, 826 | "PaymentProviderID": { 827 | "Type": "String" 828 | }, 829 | "CardToken": { 830 | "Type": "String" 831 | }, 832 | "CreditCardType": { 833 | "Type": "String" 834 | }, 835 | "CardholderName": { 836 | "Type": "String" 837 | }, 838 | "CardNumber": { 839 | "Type": "String" 840 | }, 841 | "ExpireMonth": { 842 | "Type": "String" 843 | }, 844 | "ExpireYear": { 845 | "Type": "String" 846 | }, 847 | "Facet": { 848 | "Type": "Guid" 849 | } 850 | } 851 | }, 852 | "Sitecore.Commerce.CustomModels.Models.CustomerParty": { 853 | "Type": "Complex", 854 | "BaseType": "Sitecore.Commerce.CustomModels.Models.MappedEntity", 855 | "Annotations": [ 856 | { 857 | "Type": "DoNotIndexAttribute" 858 | } 859 | ], 860 | "ClrType": "Sitecore.Commerce.CustomModels.Models.CustomerParty, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 861 | "Properties": { 862 | "PartyID": { 863 | "Type": "String" 864 | }, 865 | "Name": { 866 | "Type": "String" 867 | }, 868 | "PartyType": { 869 | "Type": "Int32" 870 | } 871 | } 872 | }, 873 | "Sitecore.Commerce.CustomModels.Models.CommerceCustomer": { 874 | "Type": "Complex", 875 | "BaseType": "Sitecore.Commerce.CustomModels.Models.MappedEntity", 876 | "Annotations": [ 877 | { 878 | "Type": "DoNotIndexAttribute" 879 | } 880 | ], 881 | "ClrType": "Sitecore.Commerce.CustomModels.Models.CommerceCustomer, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 882 | "Properties": { 883 | "Name": { 884 | "Type": "String" 885 | }, 886 | "NameFacet": { 887 | "Type": "Guid" 888 | }, 889 | "IsDisabled": { 890 | "Type": "Boolean" 891 | }, 892 | "Shops": { 893 | "Type": [ 894 | "String" 895 | ] 896 | }, 897 | "Parties": { 898 | "Type": [ 899 | "Sitecore.Commerce.CustomModels.Models.CustomerParty" 900 | ] 901 | }, 902 | "Payments": { 903 | "Type": [ 904 | "Sitecore.Commerce.CustomModels.Models.CustomerPaymentInfo" 905 | ] 906 | }, 907 | "Users": { 908 | "Type": [ 909 | "String" 910 | ] 911 | } 912 | } 913 | }, 914 | "Sitecore.Commerce.CustomModels.Models.CommerceUser": { 915 | "Type": "Complex", 916 | "BaseType": "Sitecore.Commerce.CustomModels.Models.MappedEntity", 917 | "Annotations": [ 918 | { 919 | "Type": "DoNotIndexAttribute" 920 | } 921 | ], 922 | "ClrType": "Sitecore.Commerce.CustomModels.Models.CommerceUser, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 923 | "Properties": { 924 | "UserDataFacet": { 925 | "Type": "Guid" 926 | }, 927 | "UserName": { 928 | "Type": "String" 929 | }, 930 | "FirstName": { 931 | "Type": "String" 932 | }, 933 | "LastName": { 934 | "Type": "String" 935 | }, 936 | "Email": { 937 | "Type": "String" 938 | }, 939 | "Comment": { 940 | "Type": "String" 941 | }, 942 | "IsDisabled": { 943 | "Type": "Boolean" 944 | }, 945 | "CreationDate": { 946 | "Type": "DateTime" 947 | }, 948 | "LastActivityDate": { 949 | "Type": "DateTime" 950 | }, 951 | "LastLoginDate": { 952 | "Type": "DateTime" 953 | }, 954 | "LastDisabledDate": { 955 | "Type": "DateTime" 956 | }, 957 | "LastPasswordChangedDate": { 958 | "Type": "DateTime" 959 | }, 960 | "Shops": { 961 | "Type": [ 962 | "String" 963 | ] 964 | }, 965 | "Customers": { 966 | "Type": [ 967 | "String" 968 | ] 969 | } 970 | } 971 | }, 972 | "Sitecore.Commerce.CustomModels.Models.EnumType": { 973 | "Type": "Complex", 974 | "Abstract": true, 975 | "BaseType": "Sitecore.Commerce.CustomModels.Models.Entity", 976 | "Annotations": [ 977 | { 978 | "Type": "DoNotIndexAttribute" 979 | } 980 | ], 981 | "ClrType": "Sitecore.Commerce.CustomModels.Models.EnumType`1[[Sitecore.Commerce.CustomModels.Models.RewardPointType, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null]], Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 982 | "Properties": { 983 | "Value": { 984 | "Type": "Int32" 985 | }, 986 | "Name": { 987 | "Type": "String" 988 | } 989 | } 990 | }, 991 | "Sitecore.Commerce.CustomModels.Models.RewardPointType": { 992 | "Type": "Complex", 993 | "BaseType": "Sitecore.Commerce.CustomModels.Models.EnumType", 994 | "Annotations": [ 995 | { 996 | "Type": "DoNotIndexAttribute" 997 | } 998 | ], 999 | "ClrType": "Sitecore.Commerce.CustomModels.Models.RewardPointType, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 1000 | "Properties": {} 1001 | }, 1002 | "Sitecore.Commerce.CustomModels.Models.LoyaltyRewardPoint": { 1003 | "Type": "Complex", 1004 | "BaseType": "Sitecore.Commerce.CustomModels.Models.Entity", 1005 | "Annotations": [ 1006 | { 1007 | "Type": "DoNotIndexAttribute" 1008 | } 1009 | ], 1010 | "ClrType": "Sitecore.Commerce.CustomModels.Models.LoyaltyRewardPoint, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 1011 | "Properties": { 1012 | "Description": { 1013 | "Type": "String" 1014 | }, 1015 | "RewardPointType": { 1016 | "Type": "Sitecore.Commerce.CustomModels.Models.RewardPointType" 1017 | }, 1018 | "CurrencyCode": { 1019 | "Type": "String" 1020 | }, 1021 | "IssuedPoints": { 1022 | "Type": "Decimal" 1023 | }, 1024 | "UsedPoints": { 1025 | "Type": "Decimal" 1026 | }, 1027 | "ExpiredPoints": { 1028 | "Type": "Decimal" 1029 | }, 1030 | "ActivePoints": { 1031 | "Type": "Decimal" 1032 | } 1033 | } 1034 | }, 1035 | "Sitecore.Commerce.CustomModels.Models.LoyaltyCard": { 1036 | "Type": "Complex", 1037 | "BaseType": "Sitecore.Commerce.CustomModels.Models.MappedEntity", 1038 | "Annotations": [ 1039 | { 1040 | "Type": "DoNotIndexAttribute" 1041 | } 1042 | ], 1043 | "ClrType": "Sitecore.Commerce.CustomModels.Models.LoyaltyCard, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 1044 | "Properties": { 1045 | "CustomerId": { 1046 | "Type": "String" 1047 | }, 1048 | "CustomerIdFacet": { 1049 | "Type": "Guid" 1050 | }, 1051 | "UserId": { 1052 | "Type": "String" 1053 | }, 1054 | "UserIdFacet": { 1055 | "Type": "Guid" 1056 | }, 1057 | "ShopName": { 1058 | "Type": "String" 1059 | }, 1060 | "CardNumber": { 1061 | "Type": "String" 1062 | }, 1063 | "ProgramIds": { 1064 | "Type": [ 1065 | "String" 1066 | ] 1067 | }, 1068 | "RewardPoints": { 1069 | "Type": [ 1070 | "Sitecore.Commerce.CustomModels.Models.LoyaltyRewardPoint" 1071 | ] 1072 | } 1073 | } 1074 | }, 1075 | "Sitecore.Commerce.CustomModels.Models.CartLine": { 1076 | "Type": "Complex", 1077 | "BaseType": "Sitecore.Commerce.CustomModels.Models.Entity", 1078 | "Annotations": [ 1079 | { 1080 | "Type": "DoNotIndexAttribute" 1081 | } 1082 | ], 1083 | "ClrType": "Sitecore.Commerce.CustomModels.Models.CartLine, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 1084 | "Properties": { 1085 | "Adjustments": { 1086 | "Type": [ 1087 | "Sitecore.Commerce.CustomModels.Models.CartAdjustment" 1088 | ] 1089 | }, 1090 | "SubLines": { 1091 | "Type": [ 1092 | "Sitecore.Commerce.CustomModels.Models.CartSubLine" 1093 | ] 1094 | }, 1095 | "Id": { 1096 | "Type": "Guid" 1097 | }, 1098 | "Total": { 1099 | "Type": "Sitecore.Commerce.CustomModels.Models.Total" 1100 | }, 1101 | "Product": { 1102 | "Type": "Sitecore.Commerce.CustomModels.Models.CartProduct" 1103 | }, 1104 | "ExternalCartLineId": { 1105 | "Type": "String" 1106 | }, 1107 | "LineNumber": { 1108 | "Type": "Int32" 1109 | }, 1110 | "Quantity": { 1111 | "Type": "Decimal" 1112 | } 1113 | } 1114 | }, 1115 | "Sitecore.Commerce.CustomModels.Models.CartSubLine": { 1116 | "Type": "Complex", 1117 | "BaseType": "Sitecore.Commerce.CustomModels.Models.Entity", 1118 | "Annotations": [ 1119 | { 1120 | "Type": "DoNotIndexAttribute" 1121 | } 1122 | ], 1123 | "ClrType": "Sitecore.Commerce.CustomModels.Models.CartSubLine, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 1124 | "Properties": { 1125 | "Adjustments": { 1126 | "Type": [ 1127 | "Sitecore.Commerce.CustomModels.Models.CartAdjustment" 1128 | ] 1129 | }, 1130 | "Id": { 1131 | "Type": "Guid" 1132 | }, 1133 | "ParentId": { 1134 | "Type": "Guid" 1135 | }, 1136 | "Total": { 1137 | "Type": "Sitecore.Commerce.CustomModels.Models.Total" 1138 | }, 1139 | "Product": { 1140 | "Type": "Sitecore.Commerce.CustomModels.Models.CartProduct" 1141 | }, 1142 | "ExternalCartLineId": { 1143 | "Type": "String" 1144 | }, 1145 | "LineNumber": { 1146 | "Type": "Int32" 1147 | }, 1148 | "Quantity": { 1149 | "Type": "Decimal" 1150 | } 1151 | } 1152 | }, 1153 | "Sitecore.Commerce.CustomModels.Models.CartLineContainer": { 1154 | "Type": "Complex", 1155 | "Annotations": [ 1156 | { 1157 | "Type": "DoNotIndexAttribute" 1158 | } 1159 | ], 1160 | "ClrType": "Sitecore.Commerce.CustomModels.Models.CartLineContainer, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 1161 | "Properties": { 1162 | "ProductId": { 1163 | "Type": "String" 1164 | }, 1165 | "Quantity": { 1166 | "Type": "Decimal" 1167 | }, 1168 | "Price": { 1169 | "Type": "String" 1170 | }, 1171 | "ProductName": { 1172 | "Type": "String" 1173 | }, 1174 | "CartLine": { 1175 | "Type": "Sitecore.Commerce.CustomModels.Models.CartLine" 1176 | } 1177 | } 1178 | }, 1179 | "Sitecore.Commerce.CustomModels.Models.Cart": { 1180 | "Type": "Complex", 1181 | "BaseType": "Sitecore.Commerce.CustomModels.Models.CartBase", 1182 | "Annotations": [ 1183 | { 1184 | "Type": "DoNotIndexAttribute" 1185 | } 1186 | ], 1187 | "ClrType": "Sitecore.Commerce.CustomModels.Models.Cart, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 1188 | "Properties": { 1189 | "Adjustments": { 1190 | "Type": [ 1191 | "Sitecore.Commerce.CustomModels.Models.CartAdjustment" 1192 | ] 1193 | }, 1194 | "CartLines": { 1195 | "Type": [ 1196 | "Sitecore.Commerce.CustomModels.Models.CartLine" 1197 | ] 1198 | }, 1199 | "Total": { 1200 | "Type": "Sitecore.Commerce.CustomModels.Models.Total" 1201 | }, 1202 | "Parties": { 1203 | "Type": [ 1204 | "Sitecore.Commerce.CustomModels.Models.Party" 1205 | ] 1206 | }, 1207 | "Shipping": { 1208 | "Type": [ 1209 | "Sitecore.Commerce.CustomModels.Models.ShippingInfo" 1210 | ] 1211 | }, 1212 | "Payment": { 1213 | "Type": [ 1214 | "Sitecore.Commerce.CustomModels.Models.PaymentInfo" 1215 | ] 1216 | } 1217 | } 1218 | }, 1219 | "Sitecore.Commerce.CustomModels.Models.Order": { 1220 | "Type": "Complex", 1221 | "BaseType": "Sitecore.Commerce.CustomModels.Models.Cart", 1222 | "Annotations": [ 1223 | { 1224 | "Type": "DoNotIndexAttribute" 1225 | } 1226 | ], 1227 | "ClrType": "Sitecore.Commerce.CustomModels.Models.Order, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 1228 | "Properties": { 1229 | "OrderID": { 1230 | "Type": "String" 1231 | }, 1232 | "OrderDate": { 1233 | "Type": "DateTime" 1234 | }, 1235 | "TrackingNumber": { 1236 | "Type": "String" 1237 | }, 1238 | "IsOfflineOrder": { 1239 | "Type": "Boolean?" 1240 | } 1241 | } 1242 | }, 1243 | "Sitecore.Commerce.CustomModels.PageEvents.BaseCustomPageEvent": { 1244 | "Type": "Event", 1245 | "BaseType": "Sitecore.XConnect.Event", 1246 | "Annotations": [ 1247 | { 1248 | "Type": "DoNotIndexAttribute" 1249 | } 1250 | ], 1251 | "ClrType": "Sitecore.Commerce.CustomModels.PageEvents.BaseCustomPageEvent, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 1252 | "Properties": {} 1253 | }, 1254 | "Sitecore.Commerce.CustomModels.PageEvents.CultureChosenPageEvent": { 1255 | "Type": "Event", 1256 | "BaseType": "Sitecore.Commerce.CustomModels.PageEvents.BaseCustomPageEvent", 1257 | "Annotations": [ 1258 | { 1259 | "Type": "DoNotIndexAttribute" 1260 | } 1261 | ], 1262 | "ClrType": "Sitecore.Commerce.CustomModels.PageEvents.CultureChosenPageEvent, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 1263 | "Properties": { 1264 | "ShopName": { 1265 | "Type": "String" 1266 | }, 1267 | "Culture": { 1268 | "Type": "String" 1269 | } 1270 | } 1271 | }, 1272 | "Sitecore.Commerce.CustomModels.PageEvents.CurrencyChosenPageEvent": { 1273 | "Type": "Event", 1274 | "BaseType": "Sitecore.Commerce.CustomModels.PageEvents.BaseCustomPageEvent", 1275 | "Annotations": [ 1276 | { 1277 | "Type": "DoNotIndexAttribute" 1278 | } 1279 | ], 1280 | "ClrType": "Sitecore.Commerce.CustomModels.PageEvents.CurrencyChosenPageEvent, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 1281 | "Properties": { 1282 | "ShopName": { 1283 | "Type": "String" 1284 | }, 1285 | "CurrencyCode": { 1286 | "Type": "String" 1287 | } 1288 | } 1289 | }, 1290 | "Sitecore.Commerce.CustomModels.PageEvents.SearchPageEvent": { 1291 | "Type": "Event", 1292 | "BaseType": "Sitecore.XConnect.Collection.Model.SearchEvent", 1293 | "Annotations": [ 1294 | { 1295 | "Type": "DoNotIndexAttribute" 1296 | } 1297 | ], 1298 | "ClrType": "Sitecore.Commerce.CustomModels.PageEvents.SearchPageEvent, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 1299 | "Properties": { 1300 | "ShopName": { 1301 | "Type": "String" 1302 | }, 1303 | "SearchTerm": { 1304 | "Type": "String" 1305 | }, 1306 | "NumberOfHits": { 1307 | "Type": "Int32" 1308 | } 1309 | } 1310 | }, 1311 | "Sitecore.Commerce.CustomModels.PageEvents.FacetAppliedPageEvent": { 1312 | "Type": "Event", 1313 | "BaseType": "Sitecore.Commerce.CustomModels.PageEvents.BaseCustomPageEvent", 1314 | "Annotations": [ 1315 | { 1316 | "Type": "DoNotIndexAttribute" 1317 | } 1318 | ], 1319 | "ClrType": "Sitecore.Commerce.CustomModels.PageEvents.FacetAppliedPageEvent, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 1320 | "Properties": { 1321 | "ShopName": { 1322 | "Type": "String" 1323 | }, 1324 | "Facet": { 1325 | "Type": "String" 1326 | }, 1327 | "IsApplied": { 1328 | "Type": "Boolean" 1329 | } 1330 | } 1331 | }, 1332 | "Sitecore.Commerce.CustomModels.PageEvents.ProductSortingPageEvent": { 1333 | "Type": "Event", 1334 | "BaseType": "Sitecore.Commerce.CustomModels.PageEvents.BaseCustomPageEvent", 1335 | "Annotations": [ 1336 | { 1337 | "Type": "DoNotIndexAttribute" 1338 | } 1339 | ], 1340 | "ClrType": "Sitecore.Commerce.CustomModels.PageEvents.ProductSortingPageEvent, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 1341 | "Properties": { 1342 | "ShopName": { 1343 | "Type": "String" 1344 | }, 1345 | "SortKey": { 1346 | "Type": "String" 1347 | }, 1348 | "SortDirection": { 1349 | "Type": "Int32" 1350 | } 1351 | } 1352 | }, 1353 | "Sitecore.Commerce.CustomModels.PageEvents.VisitedCategoryPageEvent": { 1354 | "Type": "Event", 1355 | "BaseType": "Sitecore.Commerce.CustomModels.PageEvents.BaseCustomPageEvent", 1356 | "Annotations": [ 1357 | { 1358 | "Type": "DoNotIndexAttribute" 1359 | } 1360 | ], 1361 | "ClrType": "Sitecore.Commerce.CustomModels.PageEvents.VisitedCategoryPageEvent, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 1362 | "Properties": { 1363 | "ShopName": { 1364 | "Type": "String" 1365 | }, 1366 | "CategoryId": { 1367 | "Type": "String" 1368 | }, 1369 | "CategoryName": { 1370 | "Type": "String" 1371 | } 1372 | } 1373 | }, 1374 | "Sitecore.Commerce.CustomModels.PageEvents.VisitedProductDetailsPageEvent": { 1375 | "Type": "Event", 1376 | "BaseType": "Sitecore.Commerce.CustomModels.PageEvents.BaseCustomPageEvent", 1377 | "Annotations": [ 1378 | { 1379 | "Type": "DoNotIndexAttribute" 1380 | } 1381 | ], 1382 | "ClrType": "Sitecore.Commerce.CustomModels.PageEvents.VisitedProductDetailsPageEvent, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 1383 | "Properties": { 1384 | "ShopName": { 1385 | "Type": "String" 1386 | }, 1387 | "ProductId": { 1388 | "Type": "String" 1389 | }, 1390 | "ProductName": { 1391 | "Type": "String" 1392 | }, 1393 | "ParentCategoryId": { 1394 | "Type": "String" 1395 | }, 1396 | "ParentCategoryName": { 1397 | "Type": "String" 1398 | }, 1399 | "Amount": { 1400 | "Type": "Decimal?" 1401 | }, 1402 | "CurrencyCode": { 1403 | "Type": "String" 1404 | } 1405 | } 1406 | }, 1407 | "Sitecore.Commerce.CustomModels.PageEvents.CartPageEvent": { 1408 | "Type": "Event", 1409 | "BaseType": "Sitecore.Commerce.CustomModels.PageEvents.BaseCustomPageEvent", 1410 | "Annotations": [ 1411 | { 1412 | "Type": "DoNotIndexAttribute" 1413 | } 1414 | ], 1415 | "ClrType": "Sitecore.Commerce.CustomModels.PageEvents.CartPageEvent, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 1416 | "Properties": { 1417 | "ExternalId": { 1418 | "Type": "String" 1419 | }, 1420 | "UserId": { 1421 | "Type": "String" 1422 | }, 1423 | "UserIdFacet": { 1424 | "Type": "Guid" 1425 | }, 1426 | "CartName": { 1427 | "Type": "String" 1428 | }, 1429 | "CartStatus": { 1430 | "Type": "String" 1431 | }, 1432 | "ShopName": { 1433 | "Type": "String" 1434 | }, 1435 | "Cart": { 1436 | "Type": "Sitecore.Commerce.CustomModels.Models.Cart" 1437 | } 1438 | } 1439 | }, 1440 | "Sitecore.Commerce.CustomModels.PageEvents.CartCreatedPageEvent": { 1441 | "Type": "Event", 1442 | "BaseType": "Sitecore.Commerce.CustomModels.PageEvents.CartPageEvent", 1443 | "Annotations": [ 1444 | { 1445 | "Type": "DoNotIndexAttribute" 1446 | } 1447 | ], 1448 | "ClrType": "Sitecore.Commerce.CustomModels.PageEvents.CartCreatedPageEvent, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 1449 | "Properties": {} 1450 | }, 1451 | "Sitecore.Commerce.CustomModels.PageEvents.CartDeletedPageEvent": { 1452 | "Type": "Event", 1453 | "BaseType": "Sitecore.Commerce.CustomModels.PageEvents.CartPageEvent", 1454 | "Annotations": [ 1455 | { 1456 | "Type": "DoNotIndexAttribute" 1457 | } 1458 | ], 1459 | "ClrType": "Sitecore.Commerce.CustomModels.PageEvents.CartDeletedPageEvent, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 1460 | "Properties": {} 1461 | }, 1462 | "Sitecore.Commerce.CustomModels.PageEvents.CartLockedPageEvent": { 1463 | "Type": "Event", 1464 | "BaseType": "Sitecore.Commerce.CustomModels.PageEvents.CartPageEvent", 1465 | "Annotations": [ 1466 | { 1467 | "Type": "DoNotIndexAttribute" 1468 | } 1469 | ], 1470 | "ClrType": "Sitecore.Commerce.CustomModels.PageEvents.CartLockedPageEvent, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 1471 | "Properties": {} 1472 | }, 1473 | "Sitecore.Commerce.CustomModels.PageEvents.CartResumedPageEvent": { 1474 | "Type": "Event", 1475 | "BaseType": "Sitecore.Commerce.CustomModels.PageEvents.CartPageEvent", 1476 | "Annotations": [ 1477 | { 1478 | "Type": "DoNotIndexAttribute" 1479 | } 1480 | ], 1481 | "ClrType": "Sitecore.Commerce.CustomModels.PageEvents.CartResumedPageEvent, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 1482 | "Properties": { 1483 | "PreviousStateName": { 1484 | "Type": "String" 1485 | } 1486 | } 1487 | }, 1488 | "Sitecore.Commerce.CustomModels.PageEvents.CartUnlockedPageEvent": { 1489 | "Type": "Event", 1490 | "BaseType": "Sitecore.Commerce.CustomModels.PageEvents.CartPageEvent", 1491 | "Annotations": [ 1492 | { 1493 | "Type": "DoNotIndexAttribute" 1494 | } 1495 | ], 1496 | "ClrType": "Sitecore.Commerce.CustomModels.PageEvents.CartUnlockedPageEvent, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 1497 | "Properties": {} 1498 | }, 1499 | "Sitecore.Commerce.CustomModels.PageEvents.CartUpdatedPageEvent": { 1500 | "Type": "Event", 1501 | "BaseType": "Sitecore.Commerce.CustomModels.PageEvents.BaseCustomPageEvent", 1502 | "Annotations": [ 1503 | { 1504 | "Type": "DoNotIndexAttribute" 1505 | } 1506 | ], 1507 | "ClrType": "Sitecore.Commerce.CustomModels.PageEvents.CartUpdatedPageEvent, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 1508 | "Properties": { 1509 | "CustomerId": { 1510 | "Type": "String" 1511 | }, 1512 | "CartName": { 1513 | "Type": "String" 1514 | }, 1515 | "ShopName": { 1516 | "Type": "String" 1517 | }, 1518 | "Cart": { 1519 | "Type": "Sitecore.Commerce.CustomModels.Models.Cart" 1520 | } 1521 | } 1522 | }, 1523 | "Sitecore.Commerce.CustomModels.PageEvents.CartLinesPageEvent": { 1524 | "Type": "Event", 1525 | "BaseType": "Sitecore.Commerce.CustomModels.PageEvents.BaseCustomPageEvent", 1526 | "Annotations": [ 1527 | { 1528 | "Type": "DoNotIndexAttribute" 1529 | } 1530 | ], 1531 | "ClrType": "Sitecore.Commerce.CustomModels.PageEvents.CartLinesPageEvent, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 1532 | "Properties": { 1533 | "CartLines": { 1534 | "Type": [ 1535 | "Sitecore.Commerce.CustomModels.Models.CartLineContainer" 1536 | ] 1537 | }, 1538 | "ShopName": { 1539 | "Type": "String" 1540 | }, 1541 | "Cart": { 1542 | "Type": "Sitecore.Commerce.CustomModels.Models.Cart" 1543 | }, 1544 | "CustomCartJson": { 1545 | "Type": "String" 1546 | } 1547 | } 1548 | }, 1549 | "Sitecore.Commerce.CustomModels.PageEvents.LinesAddedToCartPageEvent": { 1550 | "Type": "Event", 1551 | "BaseType": "Sitecore.Commerce.CustomModels.PageEvents.CartLinesPageEvent", 1552 | "Annotations": [ 1553 | { 1554 | "Type": "DoNotIndexAttribute" 1555 | } 1556 | ], 1557 | "ClrType": "Sitecore.Commerce.CustomModels.PageEvents.LinesAddedToCartPageEvent, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 1558 | "Properties": {} 1559 | }, 1560 | "Sitecore.Commerce.CustomModels.PageEvents.LinesRemovedFromCartPageEvent": { 1561 | "Type": "Event", 1562 | "BaseType": "Sitecore.Commerce.CustomModels.PageEvents.CartLinesPageEvent", 1563 | "Annotations": [ 1564 | { 1565 | "Type": "DoNotIndexAttribute" 1566 | } 1567 | ], 1568 | "ClrType": "Sitecore.Commerce.CustomModels.PageEvents.LinesRemovedFromCartPageEvent, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 1569 | "Properties": {} 1570 | }, 1571 | "Sitecore.Commerce.CustomModels.PageEvents.LinesUpdatedOnCartPageEvent": { 1572 | "Type": "Event", 1573 | "BaseType": "Sitecore.Commerce.CustomModels.PageEvents.CartLinesPageEvent", 1574 | "Annotations": [ 1575 | { 1576 | "Type": "DoNotIndexAttribute" 1577 | } 1578 | ], 1579 | "ClrType": "Sitecore.Commerce.CustomModels.PageEvents.LinesUpdatedOnCartPageEvent, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 1580 | "Properties": {} 1581 | }, 1582 | "Sitecore.Commerce.CustomModels.PageEvents.CustomerAccountPageEvent": { 1583 | "Type": "Event", 1584 | "BaseType": "Sitecore.Commerce.CustomModels.PageEvents.BaseCustomPageEvent", 1585 | "Annotations": [ 1586 | { 1587 | "Type": "DoNotIndexAttribute" 1588 | } 1589 | ], 1590 | "ClrType": "Sitecore.Commerce.CustomModels.PageEvents.CustomerAccountPageEvent, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 1591 | "Properties": { 1592 | "CustomerName": { 1593 | "Type": "String" 1594 | }, 1595 | "ShopName": { 1596 | "Type": "String" 1597 | }, 1598 | "Customer": { 1599 | "Type": "Sitecore.Commerce.CustomModels.Models.CommerceCustomer" 1600 | } 1601 | } 1602 | }, 1603 | "Sitecore.Commerce.CustomModels.PageEvents.CustomerAccountDeletedPageEvent": { 1604 | "Type": "Event", 1605 | "BaseType": "Sitecore.Commerce.CustomModels.PageEvents.CustomerAccountPageEvent", 1606 | "Annotations": [ 1607 | { 1608 | "Type": "DoNotIndexAttribute" 1609 | } 1610 | ], 1611 | "ClrType": "Sitecore.Commerce.CustomModels.PageEvents.CustomerAccountDeletedPageEvent, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 1612 | "Properties": {} 1613 | }, 1614 | "Sitecore.Commerce.CustomModels.PageEvents.CustomerAccountDisabledPageEvent": { 1615 | "Type": "Event", 1616 | "BaseType": "Sitecore.Commerce.CustomModels.PageEvents.CustomerAccountPageEvent", 1617 | "Annotations": [ 1618 | { 1619 | "Type": "DoNotIndexAttribute" 1620 | } 1621 | ], 1622 | "ClrType": "Sitecore.Commerce.CustomModels.PageEvents.CustomerAccountDisabledPageEvent, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 1623 | "Properties": {} 1624 | }, 1625 | "Sitecore.Commerce.CustomModels.PageEvents.CustomerAccountEnabledPageEvent": { 1626 | "Type": "Event", 1627 | "BaseType": "Sitecore.Commerce.CustomModels.PageEvents.CustomerAccountPageEvent", 1628 | "Annotations": [ 1629 | { 1630 | "Type": "DoNotIndexAttribute" 1631 | } 1632 | ], 1633 | "ClrType": "Sitecore.Commerce.CustomModels.PageEvents.CustomerAccountEnabledPageEvent, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 1634 | "Properties": {} 1635 | }, 1636 | "Sitecore.Commerce.CustomModels.PageEvents.CustomerAccountUpdatedPageEvent": { 1637 | "Type": "Event", 1638 | "BaseType": "Sitecore.Commerce.CustomModels.PageEvents.CustomerAccountPageEvent", 1639 | "Annotations": [ 1640 | { 1641 | "Type": "DoNotIndexAttribute" 1642 | } 1643 | ], 1644 | "ClrType": "Sitecore.Commerce.CustomModels.PageEvents.CustomerAccountUpdatedPageEvent, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 1645 | "Properties": {} 1646 | }, 1647 | "Sitecore.Commerce.CustomModels.PageEvents.AddToCartStockStatusPageEvent": { 1648 | "Type": "Event", 1649 | "BaseType": "Sitecore.Commerce.CustomModels.PageEvents.BaseCustomPageEvent", 1650 | "Annotations": [ 1651 | { 1652 | "Type": "DoNotIndexAttribute" 1653 | } 1654 | ], 1655 | "ClrType": "Sitecore.Commerce.CustomModels.PageEvents.AddToCartStockStatusPageEvent, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 1656 | "Properties": { 1657 | "ExternalId": { 1658 | "Type": "String" 1659 | }, 1660 | "UserId": { 1661 | "Type": "String" 1662 | }, 1663 | "UserIdFacet": { 1664 | "Type": "Guid" 1665 | }, 1666 | "ShopName": { 1667 | "Type": "String" 1668 | }, 1669 | "CartLines": { 1670 | "Type": [ 1671 | "Sitecore.Commerce.CustomModels.Models.CartLine" 1672 | ] 1673 | }, 1674 | "Cart": { 1675 | "Type": "Sitecore.Commerce.CustomModels.Models.Cart" 1676 | } 1677 | } 1678 | }, 1679 | "Sitecore.Commerce.CustomModels.PageEvents.BackInStockSubscriptionPageEvent": { 1680 | "Type": "Event", 1681 | "BaseType": "Sitecore.Commerce.CustomModels.PageEvents.BaseCustomPageEvent", 1682 | "Annotations": [ 1683 | { 1684 | "Type": "DoNotIndexAttribute" 1685 | } 1686 | ], 1687 | "ClrType": "Sitecore.Commerce.CustomModels.PageEvents.BackInStockSubscriptionPageEvent, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 1688 | "Properties": { 1689 | "InventoryProduct": { 1690 | "Type": "Sitecore.Commerce.CustomModels.Models.InventoryProduct" 1691 | }, 1692 | "Email": { 1693 | "Type": "String" 1694 | }, 1695 | "EmailFacet": { 1696 | "Type": "Guid" 1697 | }, 1698 | "Location": { 1699 | "Type": "String" 1700 | }, 1701 | "InterestDate": { 1702 | "Type": "DateTime" 1703 | }, 1704 | "ShopName": { 1705 | "Type": "String" 1706 | } 1707 | } 1708 | }, 1709 | "Sitecore.Commerce.CustomModels.Models.InventoryProduct": { 1710 | "Type": "Complex", 1711 | "BaseType": "Sitecore.Commerce.CustomModels.Models.Entity", 1712 | "Annotations": [ 1713 | { 1714 | "Type": "DoNotIndexAttribute" 1715 | } 1716 | ], 1717 | "ClrType": "Sitecore.Commerce.CustomModels.Models.InventoryProduct, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 1718 | "Properties": { 1719 | "ProductId": { 1720 | "Type": "String" 1721 | } 1722 | } 1723 | }, 1724 | "Sitecore.Commerce.CustomModels.PageEvents.BackInStockUnsubscriptionPageEvent": { 1725 | "Type": "Event", 1726 | "BaseType": "Sitecore.Commerce.CustomModels.PageEvents.BaseCustomPageEvent", 1727 | "Annotations": [ 1728 | { 1729 | "Type": "DoNotIndexAttribute" 1730 | } 1731 | ], 1732 | "ClrType": "Sitecore.Commerce.CustomModels.PageEvents.BackInStockUnsubscriptionPageEvent, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 1733 | "Properties": { 1734 | "InventoryProduct": { 1735 | "Type": "Sitecore.Commerce.CustomModels.Models.InventoryProduct" 1736 | }, 1737 | "Location": { 1738 | "Type": "String" 1739 | }, 1740 | "ShopName": { 1741 | "Type": "String" 1742 | }, 1743 | "VisitorId": { 1744 | "Type": "String" 1745 | }, 1746 | "VisitorIdFacet": { 1747 | "Type": "Guid" 1748 | } 1749 | } 1750 | }, 1751 | "Sitecore.Commerce.CustomModels.PageEvents.ProductsAreBackInStockPageEvent": { 1752 | "Type": "Event", 1753 | "BaseType": "Sitecore.Commerce.CustomModels.PageEvents.BaseCustomPageEvent", 1754 | "Annotations": [ 1755 | { 1756 | "Type": "DoNotIndexAttribute" 1757 | } 1758 | ], 1759 | "ClrType": "Sitecore.Commerce.CustomModels.PageEvents.ProductsAreBackInStockPageEvent, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 1760 | "Properties": { 1761 | "RequestJson": { 1762 | "Type": "String" 1763 | } 1764 | } 1765 | }, 1766 | "Sitecore.Commerce.CustomModels.PageEvents.VisitedProductStockStatusPageEvent": { 1767 | "Type": "Event", 1768 | "BaseType": "Sitecore.Commerce.CustomModels.PageEvents.BaseCustomPageEvent", 1769 | "Annotations": [ 1770 | { 1771 | "Type": "DoNotIndexAttribute" 1772 | } 1773 | ], 1774 | "ClrType": "Sitecore.Commerce.CustomModels.PageEvents.VisitedProductStockStatusPageEvent, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 1775 | "Properties": { 1776 | "ShopName": { 1777 | "Type": "String" 1778 | }, 1779 | "InventoryProduct": { 1780 | "Type": "Sitecore.Commerce.CustomModels.Models.InventoryProduct" 1781 | }, 1782 | "Location": { 1783 | "Type": "String" 1784 | }, 1785 | "StockStatus": { 1786 | "Type": "String" 1787 | }, 1788 | "AvailabilityDate": { 1789 | "Type": "DateTime?" 1790 | }, 1791 | "StockCount": { 1792 | "Type": "Double" 1793 | } 1794 | } 1795 | }, 1796 | "Sitecore.Commerce.CustomModels.PageEvents.GiftCardPurchasePageEvent": { 1797 | "Type": "Event", 1798 | "BaseType": "Sitecore.Commerce.CustomModels.PageEvents.BaseCustomPageEvent", 1799 | "Annotations": [ 1800 | { 1801 | "Type": "DoNotIndexAttribute" 1802 | } 1803 | ], 1804 | "ClrType": "Sitecore.Commerce.CustomModels.PageEvents.GiftCardPurchasePageEvent, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 1805 | "Properties": { 1806 | "ExternalId": { 1807 | "Type": "String" 1808 | }, 1809 | "CustomerId": { 1810 | "Type": "String" 1811 | }, 1812 | "CustomerIdFacet": { 1813 | "Type": "Guid" 1814 | }, 1815 | "ShopName": { 1816 | "Type": "String" 1817 | }, 1818 | "OrderId": { 1819 | "Type": "String" 1820 | }, 1821 | "Total": { 1822 | "Type": "Sitecore.Commerce.CustomModels.Models.Total" 1823 | }, 1824 | "GiftCardAmount": { 1825 | "Type": "Decimal" 1826 | }, 1827 | "Order": { 1828 | "Type": "Sitecore.Commerce.CustomModels.Models.Order" 1829 | }, 1830 | "Balance": { 1831 | "Type": "Decimal?" 1832 | } 1833 | } 1834 | }, 1835 | "Sitecore.Commerce.CustomModels.PageEvents.LoyaltyCardPurchasePageEvent": { 1836 | "Type": "Event", 1837 | "BaseType": "Sitecore.Commerce.CustomModels.PageEvents.BaseCustomPageEvent", 1838 | "Annotations": [ 1839 | { 1840 | "Type": "DoNotIndexAttribute" 1841 | } 1842 | ], 1843 | "ClrType": "Sitecore.Commerce.CustomModels.PageEvents.LoyaltyCardPurchasePageEvent, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 1844 | "Properties": { 1845 | "ExternalId": { 1846 | "Type": "String" 1847 | }, 1848 | "CustomerId": { 1849 | "Type": "String" 1850 | }, 1851 | "CustomerIdFacet": { 1852 | "Type": "Guid" 1853 | }, 1854 | "ShopName": { 1855 | "Type": "String" 1856 | }, 1857 | "OrderId": { 1858 | "Type": "String" 1859 | }, 1860 | "Total": { 1861 | "Type": "Sitecore.Commerce.CustomModels.Models.Total" 1862 | }, 1863 | "LoyaltyCardAmount": { 1864 | "Type": "Decimal" 1865 | }, 1866 | "Order": { 1867 | "Type": "Sitecore.Commerce.CustomModels.Models.Order" 1868 | } 1869 | } 1870 | }, 1871 | "Sitecore.Commerce.CustomModels.PageEvents.OfflineOrdersSynchronizedPageEvent": { 1872 | "Type": "Event", 1873 | "BaseType": "Sitecore.Commerce.CustomModels.PageEvents.BaseCustomPageEvent", 1874 | "Annotations": [ 1875 | { 1876 | "Type": "DoNotIndexAttribute" 1877 | } 1878 | ], 1879 | "ClrType": "Sitecore.Commerce.CustomModels.PageEvents.OfflineOrdersSynchronizedPageEvent, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 1880 | "Properties": { 1881 | "UserId": { 1882 | "Type": "String" 1883 | }, 1884 | "UserIdFacet": { 1885 | "Type": "Guid" 1886 | }, 1887 | "ShopName": { 1888 | "Type": "String" 1889 | }, 1890 | "ExternalSystem": { 1891 | "Type": "String" 1892 | }, 1893 | "LastOrderSynchronizedDate": { 1894 | "Type": "DateTime?" 1895 | }, 1896 | "NumberOfOrdersSynchronized": { 1897 | "Type": "Int32" 1898 | }, 1899 | "SynchronizedOrderIdsList": { 1900 | "Type": [ 1901 | "String" 1902 | ] 1903 | } 1904 | } 1905 | }, 1906 | "Sitecore.Commerce.CustomModels.PageEvents.OrderStatusChangedPageEvent": { 1907 | "Type": "Event", 1908 | "BaseType": "Sitecore.Commerce.CustomModels.PageEvents.BaseCustomPageEvent", 1909 | "Annotations": [ 1910 | { 1911 | "Type": "DoNotIndexAttribute" 1912 | } 1913 | ], 1914 | "ClrType": "Sitecore.Commerce.CustomModels.PageEvents.OrderStatusChangedPageEvent, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 1915 | "Properties": { 1916 | "OrderId": { 1917 | "Type": "String" 1918 | }, 1919 | "OrderStatus": { 1920 | "Type": "String" 1921 | } 1922 | } 1923 | }, 1924 | "Sitecore.Commerce.CustomModels.PageEvents.ReorderRequestedPageEvent": { 1925 | "Type": "Event", 1926 | "BaseType": "Sitecore.Commerce.CustomModels.PageEvents.BaseCustomPageEvent", 1927 | "Annotations": [ 1928 | { 1929 | "Type": "DoNotIndexAttribute" 1930 | } 1931 | ], 1932 | "ClrType": "Sitecore.Commerce.CustomModels.PageEvents.ReorderRequestedPageEvent, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 1933 | "Properties": { 1934 | "ShopName": { 1935 | "Type": "String" 1936 | }, 1937 | "ItemsReorderedCount": { 1938 | "Type": "Int32" 1939 | }, 1940 | "OrderLinesReordered": { 1941 | "Type": [ 1942 | "String" 1943 | ] 1944 | }, 1945 | "SourceOrder": { 1946 | "Type": "Sitecore.Commerce.CustomModels.Models.Order" 1947 | }, 1948 | "ResultCart": { 1949 | "Type": "Sitecore.Commerce.CustomModels.Models.Cart" 1950 | } 1951 | } 1952 | }, 1953 | "Sitecore.Commerce.CustomModels.PageEvents.VisitorOrderCancelPageEvent": { 1954 | "Type": "Event", 1955 | "BaseType": "Sitecore.Commerce.CustomModels.PageEvents.BaseCustomPageEvent", 1956 | "Annotations": [ 1957 | { 1958 | "Type": "DoNotIndexAttribute" 1959 | } 1960 | ], 1961 | "ClrType": "Sitecore.Commerce.CustomModels.PageEvents.VisitorOrderCancelPageEvent, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 1962 | "Properties": { 1963 | "CustomerId": { 1964 | "Type": "String" 1965 | }, 1966 | "CustomerIdFacet": { 1967 | "Type": "Guid" 1968 | }, 1969 | "ShopName": { 1970 | "Type": "String" 1971 | }, 1972 | "OrderId": { 1973 | "Type": "String" 1974 | }, 1975 | "TotalAmount": { 1976 | "Type": "Decimal" 1977 | }, 1978 | "Order": { 1979 | "Type": "Sitecore.Commerce.CustomModels.Models.Order" 1980 | }, 1981 | "CancellationStatus": { 1982 | "Type": "Int32" 1983 | } 1984 | } 1985 | }, 1986 | "Sitecore.Commerce.CustomModels.PageEvents.VisitorViewedOrderDetailPageEvent": { 1987 | "Type": "Event", 1988 | "BaseType": "Sitecore.Commerce.CustomModels.PageEvents.BaseCustomPageEvent", 1989 | "Annotations": [ 1990 | { 1991 | "Type": "DoNotIndexAttribute" 1992 | } 1993 | ], 1994 | "ClrType": "Sitecore.Commerce.CustomModels.PageEvents.VisitorViewedOrderDetailPageEvent, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 1995 | "Properties": { 1996 | "CustomerId": { 1997 | "Type": "String" 1998 | }, 1999 | "CustomerIdFacet": { 2000 | "Type": "Guid" 2001 | }, 2002 | "ShopName": { 2003 | "Type": "String" 2004 | }, 2005 | "OrderId": { 2006 | "Type": "String" 2007 | }, 2008 | "TotalAmount": { 2009 | "Type": "Decimal" 2010 | }, 2011 | "Order": { 2012 | "Type": "Sitecore.Commerce.CustomModels.Models.Order" 2013 | } 2014 | } 2015 | }, 2016 | "Sitecore.Commerce.CustomModels.PageEvents.VisitorViewedOrderHistoryPageEvent": { 2017 | "Type": "Event", 2018 | "BaseType": "Sitecore.Commerce.CustomModels.PageEvents.BaseCustomPageEvent", 2019 | "Annotations": [ 2020 | { 2021 | "Type": "DoNotIndexAttribute" 2022 | } 2023 | ], 2024 | "ClrType": "Sitecore.Commerce.CustomModels.PageEvents.VisitorViewedOrderHistoryPageEvent, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 2025 | "Properties": { 2026 | "CustomerId": { 2027 | "Type": "String" 2028 | }, 2029 | "CustomerIdFacet": { 2030 | "Type": "Guid" 2031 | }, 2032 | "ShopName": { 2033 | "Type": "String" 2034 | } 2035 | } 2036 | }, 2037 | "Sitecore.Commerce.CustomModels.PageEvents.OrderedProductStockStatusPageEvent": { 2038 | "Type": "Event", 2039 | "BaseType": "Sitecore.Commerce.CustomModels.PageEvents.BaseCustomPageEvent", 2040 | "Annotations": [ 2041 | { 2042 | "Type": "DoNotIndexAttribute" 2043 | } 2044 | ], 2045 | "ClrType": "Sitecore.Commerce.CustomModels.PageEvents.OrderedProductStockStatusPageEvent, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 2046 | "Properties": { 2047 | "ProductId": { 2048 | "Type": "String" 2049 | }, 2050 | "StockStatus": { 2051 | "Type": "Int32" 2052 | }, 2053 | "InStockDate": { 2054 | "Type": "DateTime?" 2055 | }, 2056 | "ShippingDate": { 2057 | "Type": "DateTime?" 2058 | }, 2059 | "PreOrderable": { 2060 | "Type": "Boolean" 2061 | }, 2062 | "ProductName": { 2063 | "Type": "String" 2064 | } 2065 | } 2066 | }, 2067 | "Sitecore.Commerce.CustomModels.PageEvents.UserAccountPageEvent": { 2068 | "Type": "Event", 2069 | "BaseType": "Sitecore.Commerce.CustomModels.PageEvents.BaseCustomPageEvent", 2070 | "Annotations": [ 2071 | { 2072 | "Type": "DoNotIndexAttribute" 2073 | } 2074 | ], 2075 | "ClrType": "Sitecore.Commerce.CustomModels.PageEvents.UserAccountPageEvent, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 2076 | "Properties": { 2077 | "UserName": { 2078 | "Type": "String" 2079 | }, 2080 | "UserNameFacet": { 2081 | "Type": "Guid" 2082 | }, 2083 | "ShopName": { 2084 | "Type": "String" 2085 | }, 2086 | "CommerceUser": { 2087 | "Type": "Sitecore.Commerce.CustomModels.Models.CommerceUser" 2088 | } 2089 | } 2090 | }, 2091 | "Sitecore.Commerce.CustomModels.PageEvents.UserAccountDeletedPageEvent": { 2092 | "Type": "Event", 2093 | "BaseType": "Sitecore.Commerce.CustomModels.PageEvents.UserAccountPageEvent", 2094 | "Annotations": [ 2095 | { 2096 | "Type": "DoNotIndexAttribute" 2097 | } 2098 | ], 2099 | "ClrType": "Sitecore.Commerce.CustomModels.PageEvents.UserAccountDeletedPageEvent, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 2100 | "Properties": {} 2101 | }, 2102 | "Sitecore.Commerce.CustomModels.PageEvents.UserAccountDisabledPageEvent": { 2103 | "Type": "Event", 2104 | "BaseType": "Sitecore.Commerce.CustomModels.PageEvents.UserAccountPageEvent", 2105 | "Annotations": [ 2106 | { 2107 | "Type": "DoNotIndexAttribute" 2108 | } 2109 | ], 2110 | "ClrType": "Sitecore.Commerce.CustomModels.PageEvents.UserAccountDisabledPageEvent, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 2111 | "Properties": {} 2112 | }, 2113 | "Sitecore.Commerce.CustomModels.PageEvents.UserAccountEnabledPageEvent": { 2114 | "Type": "Event", 2115 | "BaseType": "Sitecore.Commerce.CustomModels.PageEvents.UserAccountPageEvent", 2116 | "Annotations": [ 2117 | { 2118 | "Type": "DoNotIndexAttribute" 2119 | } 2120 | ], 2121 | "ClrType": "Sitecore.Commerce.CustomModels.PageEvents.UserAccountEnabledPageEvent, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 2122 | "Properties": {} 2123 | }, 2124 | "Sitecore.Commerce.CustomModels.PageEvents.UserAccountUpdatedPageEvent": { 2125 | "Type": "Event", 2126 | "BaseType": "Sitecore.Commerce.CustomModels.PageEvents.UserAccountPageEvent", 2127 | "Annotations": [ 2128 | { 2129 | "Type": "DoNotIndexAttribute" 2130 | } 2131 | ], 2132 | "ClrType": "Sitecore.Commerce.CustomModels.PageEvents.UserAccountUpdatedPageEvent, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 2133 | "Properties": {} 2134 | }, 2135 | "Sitecore.Commerce.CustomModels.PageEvents.WishListLinesPageEvent": { 2136 | "Type": "Event", 2137 | "BaseType": "Sitecore.Commerce.CustomModels.PageEvents.BaseCustomPageEvent", 2138 | "Annotations": [ 2139 | { 2140 | "Type": "DoNotIndexAttribute" 2141 | } 2142 | ], 2143 | "ClrType": "Sitecore.Commerce.CustomModels.PageEvents.WishListLinesPageEvent, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 2144 | "Properties": { 2145 | "ExternalId": { 2146 | "Type": "String" 2147 | }, 2148 | "UserId": { 2149 | "Type": "String" 2150 | }, 2151 | "UserIdFacet": { 2152 | "Type": "Guid" 2153 | }, 2154 | "WishListName": { 2155 | "Type": "String" 2156 | }, 2157 | "ShopName": { 2158 | "Type": "String" 2159 | }, 2160 | "WishList": { 2161 | "Type": "Sitecore.Commerce.CustomModels.Models.WishList" 2162 | }, 2163 | "WishListLines": { 2164 | "Type": [ 2165 | "Sitecore.Commerce.CustomModels.Models.WishListLine" 2166 | ] 2167 | } 2168 | } 2169 | }, 2170 | "Sitecore.Commerce.CustomModels.PageEvents.LinesAddedToWishListPageEvent": { 2171 | "Type": "Event", 2172 | "BaseType": "Sitecore.Commerce.CustomModels.PageEvents.WishListLinesPageEvent", 2173 | "Annotations": [ 2174 | { 2175 | "Type": "DoNotIndexAttribute" 2176 | } 2177 | ], 2178 | "ClrType": "Sitecore.Commerce.CustomModels.PageEvents.LinesAddedToWishListPageEvent, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 2179 | "Properties": {} 2180 | }, 2181 | "Sitecore.Commerce.CustomModels.PageEvents.LinesRemovedFromWishListPageEvent": { 2182 | "Type": "Event", 2183 | "BaseType": "Sitecore.Commerce.CustomModels.PageEvents.WishListLinesPageEvent", 2184 | "Annotations": [ 2185 | { 2186 | "Type": "DoNotIndexAttribute" 2187 | } 2188 | ], 2189 | "ClrType": "Sitecore.Commerce.CustomModels.PageEvents.LinesRemovedFromWishListPageEvent, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 2190 | "Properties": {} 2191 | }, 2192 | "Sitecore.Commerce.CustomModels.PageEvents.LinesUpdatedOnWishListPageEvent": { 2193 | "Type": "Event", 2194 | "BaseType": "Sitecore.Commerce.CustomModels.PageEvents.WishListLinesPageEvent", 2195 | "Annotations": [ 2196 | { 2197 | "Type": "DoNotIndexAttribute" 2198 | } 2199 | ], 2200 | "ClrType": "Sitecore.Commerce.CustomModels.PageEvents.LinesUpdatedOnWishListPageEvent, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 2201 | "Properties": {} 2202 | }, 2203 | "Sitecore.Commerce.CustomModels.PageEvents.WishListCreatedPageEvent": { 2204 | "Type": "Event", 2205 | "BaseType": "Sitecore.Commerce.CustomModels.PageEvents.BaseCustomPageEvent", 2206 | "Annotations": [ 2207 | { 2208 | "Type": "DoNotIndexAttribute" 2209 | } 2210 | ], 2211 | "ClrType": "Sitecore.Commerce.CustomModels.PageEvents.WishListCreatedPageEvent, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 2212 | "Properties": { 2213 | "ExternalId": { 2214 | "Type": "String" 2215 | }, 2216 | "UserId": { 2217 | "Type": "String" 2218 | }, 2219 | "UserIdFacet": { 2220 | "Type": "Guid" 2221 | }, 2222 | "WishListName": { 2223 | "Type": "String" 2224 | }, 2225 | "ShopName": { 2226 | "Type": "String" 2227 | }, 2228 | "WishList": { 2229 | "Type": "Sitecore.Commerce.CustomModels.Models.WishList" 2230 | } 2231 | } 2232 | }, 2233 | "Sitecore.Commerce.CustomModels.PageEvents.WishListDeletedPageEvent": { 2234 | "Type": "Event", 2235 | "BaseType": "Sitecore.Commerce.CustomModels.PageEvents.BaseCustomPageEvent", 2236 | "Annotations": [ 2237 | { 2238 | "Type": "DoNotIndexAttribute" 2239 | } 2240 | ], 2241 | "ClrType": "Sitecore.Commerce.CustomModels.PageEvents.WishListDeletedPageEvent, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 2242 | "Properties": { 2243 | "ExternalId": { 2244 | "Type": "String" 2245 | }, 2246 | "UserId": { 2247 | "Type": "String" 2248 | }, 2249 | "UserIdFacet": { 2250 | "Type": "Guid" 2251 | }, 2252 | "WishListName": { 2253 | "Type": "String" 2254 | }, 2255 | "ShopName": { 2256 | "Type": "String" 2257 | }, 2258 | "WishList": { 2259 | "Type": "Sitecore.Commerce.CustomModels.Models.WishList" 2260 | } 2261 | } 2262 | }, 2263 | "Sitecore.Commerce.CustomModels.PageEvents.WishListEmailedPageEvent": { 2264 | "Type": "Event", 2265 | "BaseType": "Sitecore.Commerce.CustomModels.PageEvents.BaseCustomPageEvent", 2266 | "Annotations": [ 2267 | { 2268 | "Type": "DoNotIndexAttribute" 2269 | } 2270 | ], 2271 | "ClrType": "Sitecore.Commerce.CustomModels.PageEvents.WishListEmailedPageEvent, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 2272 | "Properties": { 2273 | "WishLists": { 2274 | "Type": [ 2275 | "Sitecore.Commerce.CustomModels.Models.WishListEmailed" 2276 | ] 2277 | } 2278 | } 2279 | }, 2280 | "Sitecore.Commerce.CustomModels.PageEvents.WishListPrintedPageEvent": { 2281 | "Type": "Event", 2282 | "BaseType": "Sitecore.Commerce.CustomModels.PageEvents.BaseCustomPageEvent", 2283 | "Annotations": [ 2284 | { 2285 | "Type": "DoNotIndexAttribute" 2286 | } 2287 | ], 2288 | "ClrType": "Sitecore.Commerce.CustomModels.PageEvents.WishListPrintedPageEvent, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 2289 | "Properties": { 2290 | "ExternalId": { 2291 | "Type": "String" 2292 | }, 2293 | "UserId": { 2294 | "Type": "String" 2295 | }, 2296 | "UserIdFacet": { 2297 | "Type": "Guid" 2298 | }, 2299 | "WishListName": { 2300 | "Type": "String" 2301 | }, 2302 | "ShopName": { 2303 | "Type": "String" 2304 | }, 2305 | "WishList": { 2306 | "Type": "Sitecore.Commerce.CustomModels.Models.WishList" 2307 | } 2308 | } 2309 | }, 2310 | "Sitecore.Commerce.CustomModels.Goals.BaseCustomGoal": { 2311 | "Type": "Event", 2312 | "BaseType": "Sitecore.XConnect.Goal", 2313 | "Annotations": [ 2314 | { 2315 | "Type": "DoNotIndexAttribute" 2316 | } 2317 | ], 2318 | "ClrType": "Sitecore.Commerce.CustomModels.Goals.BaseCustomGoal, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 2319 | "Properties": {} 2320 | }, 2321 | "Sitecore.Commerce.CustomModels.Goals.UserAccountCreatedGoal": { 2322 | "Type": "Event", 2323 | "BaseType": "Sitecore.Commerce.CustomModels.Goals.BaseCustomGoal", 2324 | "Annotations": [ 2325 | { 2326 | "Type": "DoNotIndexAttribute" 2327 | } 2328 | ], 2329 | "ClrType": "Sitecore.Commerce.CustomModels.Goals.UserAccountCreatedGoal, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 2330 | "Properties": { 2331 | "UserName": { 2332 | "Type": "String" 2333 | }, 2334 | "UserNameFacet": { 2335 | "Type": "Guid" 2336 | }, 2337 | "ShopName": { 2338 | "Type": "String" 2339 | }, 2340 | "CommerceUser": { 2341 | "Type": "Sitecore.Commerce.CustomModels.Models.CommerceUser" 2342 | } 2343 | } 2344 | }, 2345 | "Sitecore.Commerce.CustomModels.Goals.CustomerAccountCreatedGoal": { 2346 | "Type": "Event", 2347 | "BaseType": "Sitecore.Commerce.CustomModels.Goals.BaseCustomGoal", 2348 | "Annotations": [ 2349 | { 2350 | "Type": "DoNotIndexAttribute" 2351 | } 2352 | ], 2353 | "ClrType": "Sitecore.Commerce.CustomModels.Goals.CustomerAccountCreatedGoal, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 2354 | "Properties": { 2355 | "CustomerName": { 2356 | "Type": "String" 2357 | }, 2358 | "CustomerNameFacet": { 2359 | "Type": "Guid" 2360 | }, 2361 | "ShopName": { 2362 | "Type": "String" 2363 | }, 2364 | "Customer": { 2365 | "Type": "Sitecore.Commerce.CustomModels.Models.CommerceCustomer" 2366 | } 2367 | } 2368 | }, 2369 | "Sitecore.Commerce.CustomModels.Goals.LoyaltyProgramJoinedGoal": { 2370 | "Type": "Event", 2371 | "BaseType": "Sitecore.Commerce.CustomModels.Goals.BaseCustomGoal", 2372 | "Annotations": [ 2373 | { 2374 | "Type": "DoNotIndexAttribute" 2375 | } 2376 | ], 2377 | "ClrType": "Sitecore.Commerce.CustomModels.Goals.LoyaltyProgramJoinedGoal, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 2378 | "Properties": { 2379 | "ExternalId": { 2380 | "Type": "String" 2381 | }, 2382 | "CustomerId": { 2383 | "Type": "String" 2384 | }, 2385 | "CustomerIdFacet": { 2386 | "Type": "Guid" 2387 | }, 2388 | "ShopName": { 2389 | "Type": "String" 2390 | }, 2391 | "CardNumber": { 2392 | "Type": "String" 2393 | }, 2394 | "LoyaltyCard": { 2395 | "Type": "Sitecore.Commerce.CustomModels.Models.LoyaltyCard" 2396 | } 2397 | } 2398 | }, 2399 | "Sitecore.Commerce.CustomModels.Goals.VisitorOrderCreatedGoal": { 2400 | "Type": "Event", 2401 | "BaseType": "Sitecore.Commerce.CustomModels.Goals.BaseCustomGoal", 2402 | "Annotations": [ 2403 | { 2404 | "Type": "DoNotIndexAttribute" 2405 | } 2406 | ], 2407 | "ClrType": "Sitecore.Commerce.CustomModels.Goals.VisitorOrderCreatedGoal, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 2408 | "Properties": { 2409 | "SitecoreUserName": { 2410 | "Type": "String" 2411 | }, 2412 | "SitecoreCustomerName": { 2413 | "Type": "String" 2414 | }, 2415 | "ExternalId": { 2416 | "Type": "String" 2417 | }, 2418 | "ShopName": { 2419 | "Type": "String" 2420 | }, 2421 | "Total": { 2422 | "Type": "Sitecore.Commerce.CustomModels.Models.Total" 2423 | }, 2424 | "Order": { 2425 | "Type": "Sitecore.Commerce.CustomModels.Models.Order" 2426 | }, 2427 | "IsOfflineOrder": { 2428 | "Type": "Boolean?" 2429 | } 2430 | } 2431 | }, 2432 | "Sitecore.Commerce.CustomModels.Outcomes.BaseCustomOutcome": { 2433 | "Type": "Event", 2434 | "BaseType": "Sitecore.XConnect.Outcome", 2435 | "Annotations": [ 2436 | { 2437 | "Type": "DoNotIndexAttribute" 2438 | } 2439 | ], 2440 | "ClrType": "Sitecore.Commerce.CustomModels.Outcomes.BaseCustomOutcome, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 2441 | "Properties": {} 2442 | }, 2443 | "Sitecore.Commerce.CustomModels.Outcomes.SubmittedOrderOutcome": { 2444 | "Type": "Event", 2445 | "BaseType": "Sitecore.Commerce.CustomModels.Outcomes.BaseCustomOutcome", 2446 | "Annotations": [ 2447 | { 2448 | "Type": "DoNotIndexAttribute" 2449 | } 2450 | ], 2451 | "ClrType": "Sitecore.Commerce.CustomModels.Outcomes.SubmittedOrderOutcome, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 2452 | "Properties": { 2453 | "ExternalId": { 2454 | "Type": "String" 2455 | }, 2456 | "ShopName": { 2457 | "Type": "String" 2458 | }, 2459 | "Order": { 2460 | "Type": "Sitecore.Commerce.CustomModels.Models.Order" 2461 | } 2462 | } 2463 | }, 2464 | "Sitecore.Commerce.CustomModels.Outcomes.AbandonedCartOutcome": { 2465 | "Type": "Event", 2466 | "BaseType": "Sitecore.Commerce.CustomModels.Outcomes.BaseCustomOutcome", 2467 | "Annotations": [ 2468 | { 2469 | "Type": "DoNotIndexAttribute" 2470 | } 2471 | ], 2472 | "ClrType": "Sitecore.Commerce.CustomModels.Outcomes.AbandonedCartOutcome, Sitecore.Commerce.Connect.Collection.Model, Version=11.2.0.0, Culture=neutral, PublicKeyToken=null", 2473 | "Properties": { 2474 | "ShopName": { 2475 | "Type": "String" 2476 | }, 2477 | "ExternalId": { 2478 | "Type": "String" 2479 | }, 2480 | "Cart": { 2481 | "Type": "Sitecore.Commerce.CustomModels.Models.Cart" 2482 | } 2483 | } 2484 | } 2485 | }, 2486 | "Facets": [ 2487 | { 2488 | "Target": "Contact", 2489 | "Name": "GDPRConnectPartyListInfo", 2490 | "Type": "Sitecore.Commerce.CustomModels.Facets.GDPR.GDPRPartyList" 2491 | }, 2492 | { 2493 | "Target": "Contact", 2494 | "Name": "GDPRConnectStringListInfo", 2495 | "Type": "Sitecore.Commerce.CustomModels.Facets.GDPR.GDPRStringList" 2496 | }, 2497 | { 2498 | "Target": "Contact", 2499 | "Name": "GDPRConnectCustomerPaymentInfoList", 2500 | "Type": "Sitecore.Commerce.CustomModels.Facets.GDPR.GDPRCustomerPaymentInfoList" 2501 | }, 2502 | { 2503 | "Target": "Contact", 2504 | "Name": "GDPRConnectCommerceUserInfo", 2505 | "Type": "Sitecore.Commerce.CustomModels.Facets.GDPR.GDPRCommerceUserList" 2506 | }, 2507 | { 2508 | "Target": "Contact", 2509 | "Name": "ConnectCurrentCartFacet", 2510 | "Type": "Sitecore.Commerce.CustomModels.Facets.CurrentCartFacet" 2511 | } 2512 | ] 2513 | } --------------------------------------------------------------------------------