├── .nuke ├── .gitignore ├── .env ├── scripts ├── Install-SIF.ps1 ├── Import-Certificate.ps1 ├── WatchDirectoryMultiple.ps1 └── Watch-Directory.ps1 ├── commerce ├── WatchDefaultDirectories.ps1 ├── UpdateIdentityServerUrl.ps1 ├── UpdateSitecoreUrl.ps1 ├── UpdateConnectionString.ps1 ├── WatchDirectoryMultiple.ps1 └── Dockerfile ├── CreateLogDirs.ps1 ├── solr ├── sxa │ ├── Dockerfile │ └── sxa-solr.json └── DockerFile ├── config └── EnableItemServices.config ├── Generate-Self-Signed-Certificate.ps1 ├── docker-compose.sxa.yml ├── docker-compose.build-sxa.yml ├── Generate-Certificates.ps1 ├── sitecore ├── Sitecore.Commerce.Engine.Connectors.Index.Solr.InitializeOnAdd.config ├── sxa │ ├── InstallSXA.ps1 │ └── install-sxa.json ├── Dockerfile └── InstallCommercePackages.ps1 ├── xconnect ├── Dockerfile └── Sitecore.Commerce.Connect.XConnect.Models.json ├── mssql └── Dockerfile ├── docker-compose.yml ├── CopyCores.ps1 ├── CopyDatabases.ps1 └── README.md /.nuke: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | build/bin 2 | build/obj 3 | cores 4 | databases 5 | files 6 | logs 7 | tmp 8 | .tmp 9 | *.log -------------------------------------------------------------------------------- /.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 -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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') -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /config/EnableItemServices.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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; -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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'\" -------------------------------------------------------------------------------- /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 | } -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | } -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | } -------------------------------------------------------------------------------- /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 | } -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | } --------------------------------------------------------------------------------