SitecorePowerShell / Console

Sitecore PowerShell Extensions
https://doc.sitecorepowershell.com/
Other
114 stars 71 forks source link

NullReferenceException occurs when trying to accept VersionAddedNotification via PowerShell in Sitecore #1331

Closed mrvinaykj closed 4 months ago

mrvinaykj commented 5 months ago

Expected Behavior

No exceptions should occur when accepting VersionAddedNotification via PowerShell in Sitecore.

Actual Behavior

NullReferenceException occurs when trying to accept VersionAddedNotification via PowerShell in Sitecore. It happens for cloned items after creating a new numbered version for its master item.

Steps to Reproduce the Problem

Steps to reproduce:

  1. Create a master item - /sitecore/content/Home/Sample Item
  2. Clone master item - /sitecore/content/Home/Clones/Sample Item
  3. Add a numbered version for the master item
  4. Run the below PS script
$item = (Get-Item -Path "/sitecore/content/Home/Clones/Sample Item" -Language "en")
Write-Host $item.Uri
Write-Host "------------------------------"

$notifications = Get-ItemCloneNotification -Item $item

$notifications | % { Write-Host $_.Type $_.VersionUri}

foreach ($notification in $notifications)
{
if ($notification -ne $null)
{
if ($notification.Type -eq "VersionAddedNotification" `
-and $notification.Type -ne "FirstVersionAddedNotification")
{
Write-Host $notification.ItemUri

Receive-ItemCloneNotification -Notification $notification -Action Accept
}
}
}

Debugging the source code, we detected the exception occurs in VersionAddedNotification.Accept method when trying to invoke this.SendMessage - see attached pictures

The reason for the issue is HttpContext.Current is null.

It is reproduced not steadily - after several attempts, it could be successfully accepted. But, each failed attempt adds a new version for the cloned item.

AdamNaj commented 4 months ago

This one should be fixed but I have a feeling it's a lost cause... I don't think the notification for Field approval is going to be so easy to handle. unless we start taking over some of the "Accept" code. in some of the notifications.