6

I'm doing a test install of 8.5 to an Azure VM and DB, have gotten as far as installing the Content Manager and logging into the CME. As per this KB article, I've modified Tridion.ContentManager.config to have a Messaging endpoint.

enter image description here

After restarting services, no longer see error message:

"The SQL Server edition of the target server is unsupported, e.g. SQL Azure."

However I still see error:

"Could not connect to the notification hub, Because SDL Web could not connect to the notification system, it cannot receive push notifications"

enter image description here

Any thoughts on what steps I've missed?

I've modified the example config from the mentioned KB article, as below

<signalrBackplaneHub messageBusType="Microsoft.AspNet.SignalR.ServiceBus.ServiceBusMessageBus" scaleoutConfigurationType="Microsoft.AspNet.SignalR.ServiceBusScaleoutConfiguration" assembly="Microsoft.AspNet.SignalR.ServiceBus, Version=2.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
  <backplaneConnectionParameters>
    <add parameter="Endpoint=sb://web85-ns.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=<ACCESS_KEY>" />
    <add parameter="topicPrefix"/>
  </backplaneConnectionParameters>
</signalrBackplaneHub>

2 Answers 2

5

I had similar errors when until I got the Tridion.ContentManager.config update correct.

function Set-SignalRServiceBusEndpoint
{
<#
.SYNOPSIS
   Update Tridion.ContentManager.config SignalR
   Chris Mills 07768805566
.DESCRIPTION
    Notification broadcasting is not supported out of the box for the Content Manager SQL Azure database
    Although Azure databases are supported as of SDL Web 8.5, 
    you need to apply some additional backplane hub configuration if you want to use broadcast notification. 
    Specifically, you need to specify your Azure service bus and service bus endpoint in the 
    server-side Content Manager configuration file, Tridion.ContentManager.config located in the %TRIDION_HOME%\config\ folder.

.PARAMETER
    Service Bus ENDPOINT
    where ENDPOINT is the value listed in the Azure Portal under Service Bus | Shared access policies | RootManageSharedKeyAccess
    •   Create/Open service bus
    •   Open “Shared access policies”
    •   Open “RootManageSharedKeyAccess”
    •   Copy “Primary Connection String”


.EXAMPLE   
        Set-SignalRServiceBusEndpoint -ServiceBusEndpoint "Endpoint=sb://notmyreal.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=/notmyrealkey+notmyrealkey="



.LINK
    https://capaxdiscoverydevtest.visualstudio.com/_git/PowerShell4SdlWeb8.5

#>
    [CmdletBinding()]
    Param(
      [Parameter(Mandatory=$True,HelpMessage="Please enter the ServiceBusEndPoint")]
      [string]$ServiceBusEndpoint

    )

    if( -not $env:TRIDION_CM_HOME)
    {
      Write-Output "Tridion CMS is not installed on this server"
      exit
    }

    $TridionConfFile = [string]::Format("{0}\config\Tridion.ContentManager.config",$env:TRIDION_CM_HOME)

    $TridionConf = New-Object System.Xml.XmlDocument
    $TridionConf.Load($TridionConfFile)

    $signalrBackplaneHub = $TridionConf.Configuration.signalrBackplaneHub

    $signalrBackplaneHub.messageBusType = "Microsoft.AspNet.SignalR.ServiceBus.ServiceBusMessageBus"
    $signalrBackplaneHub.scaleoutConfigurationType = "Microsoft.AspNet.SignalR.ServiceBusScaleoutConfiguration"
    $signalrBackplaneHub.assembly = "Microsoft.AspNet.SignalR.ServiceBus, Version=2.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"

    $bp = $signalrBackplaneHub.backplaneConnectionParameters
    if($bp) { $bp.ParentNode.RemoveChild($bp) }

    $be = $TridionConf.CreateElement("backplaneConnectionParameters")

    $adde1 = $TridionConf.CreateElement("add")
    $a = $adde1.OwnerDocument.CreateAttribute("parameter")
    $adde1.Attributes.Append($a)
    $adde1.SetAttribute("parameter","$ServiceBusEndpoint")

    $adde2 = $TridionConf.CreateElement("add")
    $a = $adde2.OwnerDocument.CreateAttribute("parameter")
    $adde2.Attributes.Append($a)
    $adde2.SetAttribute("parameter","topicPrefix")

    $be.AppendChild($adde1)
    $be.AppendChild($adde2)
    $signalrBackplaneHub.AppendChild($be)

    $TridionConf.Save($TridionConfFile)    

}
1

Here is the Chris's Tridion.ContentManager.config update script for SDL Sites 9.

What changed is the $signalrBackplaneHub.assembly.

Also see documentation in https://docs.sdl.com/LiveContent/content/en-US/SDL%20Tridion%20Sites-v1/GUID-8B1C96F2-464E-442F-9727-3F4E7B21AF23

Also see another TREX QA The SQL Server edition of the target server is unsupported, e.g. SQL Azure

function Set-SignalRServiceBusEndpoint
{
<#
.SYNOPSIS
   Update Tridion.ContentManager.config SignalR
   Chris Mills 07768805566
.DESCRIPTION
    Notification broadcasting is not supported out of the box for the Content Manager SQL Azure database
    Although Azure databases are supported as of SDL Web 8.5, 
    you need to apply some additional backplane hub configuration if you want to use broadcast notification. 
    Specifically, you need to specify your Azure service bus and service bus endpoint in the 
    server-side Content Manager configuration file, Tridion.ContentManager.config located in the %TRIDION_HOME%\config\ folder.

.PARAMETER
    Service Bus ENDPOINT
    where ENDPOINT is the value listed in the Azure Portal under Service Bus | Shared access policies | RootManageSharedKeyAccess
    •   Create/Open service bus
    •   Open “Shared access policies”
    •   Open “RootManageSharedKeyAccess”
    •   Copy “Primary Connection String”


.EXAMPLE   
        Set-SignalRServiceBusEndpoint -ServiceBusEndpoint "Endpoint=sb://notmyreal.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=/notmyrealkey+notmyrealkey="



.LINK
    https://capaxdiscoverydevtest.visualstudio.com/_git/PowerShell4SdlWeb8.5

#>
    [CmdletBinding()]
    Param(
      [Parameter(Mandatory=$True,HelpMessage="Please enter the ServiceBusEndPoint")]
      [string]$ServiceBusEndpoint

    )

    if( -not $env:TRIDION_CM_HOME)
    {
      Write-Output "Tridion CMS is not installed on this server"
      exit  
    }

    $TridionConfFile = [string]::Format("{0}\config\Tridion.ContentManager.config",$env:TRIDION_CM_HOME)

    $TridionConf = New-Object System.Xml.XmlDocument
    $TridionConf.Load($TridionConfFile)

    $signalrBackplaneHub = $TridionConf.Configuration.signalrBackplaneHub

    $signalrBackplaneHub.messageBusType = "Microsoft.AspNet.SignalR.ServiceBus.ServiceBusMessageBus"
    $signalrBackplaneHub.scaleoutConfigurationType = "Microsoft.AspNet.SignalR.ServiceBusScaleoutConfiguration"
    $signalrBackplaneHub.assembly = "Microsoft.AspNet.SignalR.ServiceBus3, Version=2.3.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"

    $bp = $signalrBackplaneHub.backplaneConnectionParameters
    if($bp) { $bp.ParentNode.RemoveChild($bp) }

    $be = $TridionConf.CreateElement("backplaneConnectionParameters")

    $adde1 = $TridionConf.CreateElement("add")
    $a = $adde1.OwnerDocument.CreateAttribute("parameter")
    $adde1.Attributes.Append($a)
    $adde1.SetAttribute("parameter","$ServiceBusEndpoint")

    $adde2 = $TridionConf.CreateElement("add")
    $a = $adde2.OwnerDocument.CreateAttribute("parameter")
    $adde2.Attributes.Append($a)
    $adde2.SetAttribute("parameter","topicPrefix")

    $be.AppendChild($adde1)
    $be.AppendChild($adde2)
    $signalrBackplaneHub.AppendChild($be)

    $TridionConf.Save($TridionConfFile)    

}

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.