Sitecore Publishing Service (SPS) is an opt-in mechanism for high-performance publishing in large scale Sitecore setups. This module increases publishing throughput, reduces the amount of time spent publishing large volumes of items, and offers greater data consistency and reliability. The module also improves the user experience and provides better visual feedback to the user on the state of the publishing system. If you don't use SPS yet and if your publishing tasks take longer than expected, SPS module can be highly useful to you.
In this blog, I am going to share a recent experience related to configuring SPS in scaled environment. There is a specific step in installation guide which needs to be performed explicitly in scaled environments and if you miss it, you may have problems publishing related items with the page.
THE PROBLEM
In our case, publishing worked correctly but none of the related items of published page got published. We reached out to community on slack and also created a Sitecore support ticket to understand the possible root cause. We got answers but there was no proper explanation about what causes the problem and how the problem gets fixed. Hence, I decided to share it in this article.
THE SOLUTION
Publishing services seems to be dependent on Link database to find related items of the page being publishing. The default configuration for the Publishing Service specifies that the Links Database is stored in the Core database. Sitecore by default uses Core db for LinkDatabase for standalone instances but for CM or CD servers it uses Web database for LinkDatabase due to the Sitecore.Variables.config-
<?xml version="1.0" encoding="utf-8"?>
<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/" xmlns:role="http://www.sitecore.net/xmlconfig/role/" xmlns:security="http://www.sitecore.net/xmlconfig/security/">
<sitecore>
<sc.variable name="defaultLinkDatabaseConnectionStringName" value="core"/>
<sc.variable name="defaultLinkDatabaseConnectionStringName" role:require="ContentDelivery or ContentManagement">
<patch:attribute name="value">web</patch:attribute>
</sc.variable>
</sitecore>
</configuration>
If you are running the Publishing Service in a scaled environment, then your Sitecore server's Links Data is stored in a different database than the Core database (as per config Web database). You must update the Publishing Service configuration accordingly. For example, if the Links Data is stored in the Web database, then the Publishing Service configuration needs the following override:
<DefaultConnectionFactory>
<Options>
<Connections>
<Links>
<Type>Sitecore.Framework.Publishing.Data.AdoNet.SqlDatabaseConnection, Sitecore.Framework.Publishing.Data</Type>
<LifeTime>Transient</LifeTime>
<Options>
<ConnectionString>Web</ConnectionString>
<DefaultCommandTimeout>120</DefaultCommandTimeout>
<Behaviours>
<backend>sql-backend-default</backend>
<api>sql-api-default</api>
</Behaviours>
</Options>
</Links>
If you are using SPS v5, this needs to be done in sc.publishing.xml.
If our case, we were using SPS v6 due to which this change was done in multiple files as below -
- \sitecore\Sitecore.Framework.Plugin.Publishing\Config\sc.publishing.itemrevision.command.services.xml
- \sitecore\Sitecore.Framework.Plugin.Publishing\Config\sc.publishing.web.command.services.xml
- \sitecore\Sitecore.Framework.Plugin.Publishing\Config\sc.publishing.schema.command.services.xml
You must also update the database schema. To upgrade the database schema, run the following command:
Sitecore.Framework.Publishing.Host.exe schema upgrade --force
If you miss to perform these steps while configuring SPS in scaled environment, you may face issues in publishing. When you publish a page and check the checkbox for Publish Related Items, related items wont publish correctly and content authors will complain that their changes are not reflecting on live site.
This is also outlined by Sitecore support team in following link -
https://support.sitecore.com/kb?id=kb_article_view&sysparm_article=KB0889655
Hope this helps you!
Comments
Post a Comment