Sitecore Symposium 2024 – All discounts in one place!

Edit: August 30, 2024 – added Sitecore SYM party ticket
Edit: September 20, 2024 – changed discount, from $150 to $300

Here we go again! Like the previous years, again this year I have decided to gather all Sitecore Symposium 2024 discounts in one place.

If you do not want to waste your time searching for the best deals – stay with me on my blog and just add it to your favorites!

I will be updating this page whenever I find something that may be useful to everyone who wants to enjoy the Sitecore Symposium and at the same time save some money where it is possible.

If something is not clear or some of the deals that are listed here are not working for you, feel free to reach out to me on my LinkedIn: https://www.linkedin.com/in/skowronskilukasz/

Use my discount code

If you decide to use my dedicated discount code you will save $150 (USD) $300 (USD) during your purchase.

To use the code you have to start the registration process through the link: https://sym.sitecore.com/flow/sitecore/symposium24/registration/page/grouppassesstep?regcode=SYM24-SKOWRONSKI&utm_medium=PP&utm_source=MVP&utm_campaign=Symposium_24

You can also try to use code “SYM24-SKOWRONSKI” if for some reason the discount has not been applied correctly.

Remember: code expires Monday, September 30, 2024

Buy tickets before the event

It is a well-known rule – if you buy tickets sooner you will get a better price. This year Sitecore has prepared four price levels:

  • Super early bird: 1349$ (ends June 30th )
  • Early bird: 1549$ (July 1st – August 16th )
  • Advanced: 1849$ (August 17th – September 30th )
  • Regular/Onsite: 2049$ (starts October 1st )

It means that if you buy the tickets now you can have tickets for $350 cheaper than the people buying tickets in October.

Buy tickets in groups

If you buy tickets in groups you can find good deals also for you (my dedicated code may not work there, but you can always try). Details of deals for groups you can find also on the Sitecore Symposium page as also below

Discounted hotel rooms

Sitecore informs that you can secure your discounted hotel rooms starting at $299/night by September 12th. This price may go up when Sitecore releases hotel rooms reserved for attendees of the Symposium.

Discounted flights

Sitecore together with United Airlines prepared a special code that will let you save some money on flights. Use ZPTH838048 to check how much you can save.

You can also start the purchase process with the link: https://www.united.com/ual/en/us/booking/searchinjection?txtPromoCode=ZPTH838048

Additional information taken from the FAQ of the Sitecore Symposium page, that you have to be aware of:

A good deal for a friend or business partner

It does not belong to the group of discounts but as it is a great deal, I am adding it to the list too.
If you bought already your Sitecore Symposium Ticket, you have access to the Symposium Party that will be held in the center of Nashville downtown. You can have even better fun if you take your friend or business partner with you. Sitecore allows you to buy a ticket to the party (without the need to buy another Sitecore Symposium ticket). Your friend can enter the party for as small as $149.

Based on my experience – it is worth it!

This is all I gathered

I hope that the gathered information from this post will let you save some bucks to spend in Nashville!

How to find all Sitecore RichText fields contain scripts inside

One of the customers I was working for recently asked us “Can you find for me all RichText fields that contain scripts and styles tags inside?”. Let’s be honest – in the thousands of items no one could ever done it manually – but with PowerShell you can do that fairly easily.

Here is the script that searches for all fields of “RichText” and then within the usage of indexes tries to find items with these fields containing prohibited values.

$fieldsList = @()
$templatesPaths = @(
    "master:\templates\Branches",
    "master:\templates\Feature",
    "master:\templates\Foundation",
    "master:\templates\Project",
    "master:\templates\User Defined"
    )


ForEach($templatePath in $templatesPaths)
{
    $fieldsList += Get-ChildItem $templatePath -Recurse | Where-Object {
        $_.TemplateID -eq "{455A3E98-A627-4B40-8035-E683A0331AC7}" -and $_.Fields['Type'].Value -eq "Rich Text" -and $_.TemplateID -ne "{0437FEE2-44C9-46A6-ABE9-28858D9FEE8C}" -and $_.TemplateID -ne "{85ADBF5B-E836-4932-A333-FE0F9FA1ED1E}" -and $_.FullPath -notLike "*/System/*" -and $_.FullPath -notLike "*/Experience Accelerator/*" -and $_.FullPath -notLike '*/JSS Experience Accelerator/*' -and $_.FullPath -notLike '*$name*' -and $_.TemplateID -ne "{E269FBB5-3750-427A-9149-7AA950B49301}" -and $_.TemplateID -ne "{A46706F7-EAF8-4575-9860-A85B6F17C5EB}" -and $_.TemplateID -ne "{239F9CF4-E5A0-44E0-B342-0F32CD4C6D8B}" -and $_.Name -ne "__Standard Values"
    }
}

$reportProps = @{
    Title = "Report of RichText fields"
    InfoTitle = "Report of RichText fields containing script and styles inside"
    InfoDescription = "Total entries found: $($itemList.length)"
    PageSize = 25
}

$report = New-Object System.Collections.Generic.List[PSObject]

ForEach ($field in $fieldsList)
{
    Write-Host "Operations on field: "+ $field.FullPath
    $foundPaths = New-Object System.Collections.Generic.List[String]
    $foundIDs = New-Object System.Collections.Generic.List[String]
	
	$foundItems = Find-Item -Index sitecore_master_index -Criteria @{Filter = "Contains"; Field = $field.Name; Value = "script"}, @{Filter = "Contains"; Field = $field.Name; Value = "style"}, @{Filter = "Equals"; Field = "_latestversion"; value = "1"}|Initialize-Item
	ForEach($foundItem in $foundItems)
	{
	    if($foundItem.Fields[$field.Name].Value -like "*<script*" -or $foundItem.Fields[$field.Name].Value -like "*<style*")
	    {
	        $foundPaths.Add($foundItem.FullPath)
	        $foundIDs.Add($foundItem.ID.ToString())
	    }
	}
	#$foundItems| ForEach-Object -Process { $foundPaths.Add($_.FullPath) }
	#$foundItems| ForEach-Object -Process { $foundIDs.Add($_.ID.ToString()) }
	
	$newObject = New-Object PSObject @{__Icon = $field.__Icon; DisplayName = $field.DisplayName; FullPath = $field.FullPath; ID = $field.ID; IDs = ($foundIDs -join "|"); Paths = ($foundPaths -join "|")}
    $report.Add($newObject)
}


$report | Show-ListView @reportProps -Property `
    @{ Label = "Field Name"; Expression = { $_.DisplayName } },
    @{ Label = "Field Path"; Expression = { $_.FullPath} },
    @{ Label = "Field Id"; Expression = { $_.ID } },
    @{ Label = "Items use that field"; Expression = {$_.IDs} },
    @{ Label = "Paths of items using that field"; Expression = { $_.Paths } }
Close-Window

Automated Sitecore deployment with the usage of Jenkins and Nexus Repository Manager

I wrote an article describing the process of automated deployment built with the usage of Jenkins and Nexus Repository Manager. You can find this article on Konabos’s website: https://konabos.com/blog/sitecore-upgrade-deployment-aws-virtual-servers-jenkins-nexus-repository-manager

How to find all of the Sitecore Items that use aliases?

Recently I had to find all the items being linked by aliases. Because we had hundreds of aliases and no one wanted to go one by one to check where are they linking to I decided to prepare a PowerShell script to generate a report. Here is the code of it:

$itemList = @()
$allPaths = @(
    "master:\system\Aliases"
    )
    
ForEach($path in $allPaths)
{
    $itemList += Get-ChildItem $path -Recurse | Where-Object {
        $_.TemplateID -eq "{54BCFFB7-8F46-4948-AE74-DA5B6B5AFA86}"
    }
}

$reportProps = @{
    Title = "Aliases Report"
    InfoTitle = "This is a report showing items being linked by aliases"
    InfoDescription = "Total entries found: $($itemList.length)"
    PageSize = 25
}

$report = New-Object System.Collections.Generic.List[PSObject]

ForEach ($item in $itemList)
{    
    $linkedItem = $item.PSFields."Linked item"
    $found = $linkedItem.Value -match '.*id="(.*?)".*'
    $foundItemPath = ""
    $foundID = ""
    if ($found)
    {
        $foundID = $matches[1]
        
        if ($foundItem = Get-Item -Path "master:" -ID $foundID -ErrorAction SilentlyContinue)
        {
            $foundItemPath = $foundItem.FullPath
        }
        else
        {
            $foundItemPath = "Broken Link"
        }
        
    }
    
    $newObject = New-Object PSObject @{__Icon = $item.__Icon; DisplayName = $item.DisplayName; FullPath = $item.FullPath; ID = $item.ID; URL = $linkedItem.Url; LinkedItemPath = $foundItemPath; LinkedItemID = $foundID}
    $report.Add($newObject)
}

$report | Show-ListView @reportProps -Property `
    @{ Label = "Alias Path"; Expression = { $_.FullPath} },
    @{ Label = "Alias Id"; Expression = { $_.ID } },
    @{ Label = "LinkedItem ID"; Expression = { $_.LinkedItemID } },
    @{ Label = "Linked Url"; Expression = { $_.URL } },
    @{ Label = "LinkedItem Path"; Expression = { $_.LinkedItemPath } }
Close-Window

Data migration strategy as a crucial part of Sitecore upgrade

Recently I wrote a blog post describing the challenges of the Sitecore upgrades and now on the Konabos website we released a continuation written by me. I share some knowledge about data migration strategies – you can find it here: Rethinking Sitecore Upgrades: The Art and Science of Content Migration