Tuesday, January 8, 2019

Sitecore 9 Analytics Dashboard/Reporting Database updating very Slow?

Your Sitecore Analytics Dashboard is not updating properly or updating very Slow?

Sitecore Analytics Dashboard is based on the Reporting database, all analytics data are coming from this database only, which means the data is not updating in the reporting database properly.

Are you facing the same problem, Processing server/Aggregation Agent issue, where data(interaction and Contacts) are properly storing in the collection database but not updating into the reporting database, or updating very slow?

If yes, then this blog might help you.

I also faced the same issue on my restricted scaled Sitecore 9 Production environment, with no internet connectivity.

In My scenario, I had the separate reporting and processing server, where data was connected from all the servers properly:

  • CD is connected to Xconnect
  • Xconnect is storing the data in the collection database properly
  • Processing server connected with reporting database
  • CM server is reading the data from the Reporting Database.

Everything was fine, but data was updating to reporting database very slow(around 10 records in a one Hours), we did the basic troubleshooting as below:

  • Increased the maxAgents to 16 in Sitecore.Analytics.Processing.Services.config
  • Tunned the Sitecore.Analytics.Processing.Aggregation.Services.config
  • Tuned the Sitecore.Analytics.Processing.Aggregation.ProcessingPools.config

But no luck and records in the “InteractionLiveProcessingPool” table in the “Processing.Pools” database were keep growing and aggregation agents were stuck to processed the record, resulted very slow updating in reporting database and Sitecore analytics dashboard.

After further research we found out that “Root Cause” the problem was the “Device Detection Database” error.

We need to disable this service, as the service is blocked the processing agent as device detection was not configured on the production server.


Check the below Hotfix from Sitecore if you are using below Sitecore 9 version

For Sitecore XP 9.0 rev. 171002 (Initial Release): https://dl.sitecore.net/hotfix/SC Hotfix 204620-1 Sitecore CES 2.1.0.zip

For Sitecore XP 9.0 rev. 171219 (Update-1)
https://dl.sitecore.net/hotfix/SC Hotfix 205547-1 Sitecore CES 2.1.1.zip See the readme.txt file inside the archive for installation instructions.

Or Disabled the service if you not using or configured, in my case I was not using this service so I just disabled  this service as below:

  1. Go to  \App_Config\Sitecore\DeviceDetection.Client.config
  2. Change the below setting to false:<setting name="DeviceDetection.Enabled" value="false" />

And magic happened, analytics was working fine:

Hope this article will help you!

Happy Sitecoring

Sunday, December 2, 2018

Configure Sitecore 9.1 Content Tagging feature with Open Calais

What is Tagging?

Tagging refers to the metadata of the content which is assigned to a content by the content creator and the readers/users of the content to group the content in the same category.

Content tagging is the very significant feature introduced in the Sitecore 9.1 Release, I was eagerly waiting for the Sitecore 9.1 release, as I heard about this feature in the Sitecore Symposium 2018, Orlando.

Content tagging is the wider term to implement and to create the proper taxonomy of the content, we might need one full-fledged intelligent system, who can analyze the content and automatically tag the content, based on the relevancy of the content keywords.

I know, still in the 21st century, many people are doing this job manually, company’s hires dedicated content authors, who read the content manually line by line and based on the taxonomy bucket, they tag the content accordingly and it becomes worst when you are creating lots of articles/publication per day.
Now, with the help of Sitecore Content tagging feature, we can easily automate this manual task with the help of integration with any intelligent tagging (metadata) provider/system including Sitecore Cortex and Open Calais.

In this ERA, the whole requirement of the current digital marketer is to automate the Metadata tagging with the click of one button. As we are using the Sitecore to create the content page, we wanted something on the Sitecore ribbon button to tag the content with the relevant tags  

Now, without taking further time, let me quickly introduce the best tagging provider in the world called Open Calais by Thomson Reuters
Thomson Reuters Open Calais™ offers the easiest and most accurate way to tag the people, places, companies, facts, and events in your content to increase its value, accessibility, and interoperability
We use Natural Language Processing (NLP) and machine learning algorithms trained by hundreds of Thomson Reuters’ Editorial teams for several years to offer the industry’s best combination of company extraction and relevance. For the user, the process is pretty simple. You feed unstructured text into the extraction engine (news articles, blog postings, etc.) to examine your text and locate:

·        Entities: (Companies, people, places, products, etc.)
·        Relationships: (John Doe works for Acme Corp.)
·        Facts: (John Doe is a 42-year old male CFO)
·        Events: (Jane Doe was appointed a board member of Acme Corp.)
·        Topics: (Story is about M&As in the Pharma industry)

Now, we understood what is content tagging, why Auto-tagging is important and what Open Calais is?

Let’s start the practical, as we are going to configure the auto-tagging feature in the Sitecore.

Please note, this feature is only available in the Sitecore 9.1 Release, if you haven’t installed the Sitecore 9.1 yet, then please install it.

Step1: Create the account on Open Calais

http://www.opencalais.com/opencalais-api/ and get the Access code as below:

Step 2: Configure the API in Sitecore 9.1

When you navigate the default Sitecore 9.1 content tree and go to home tag ribbon, you will find the open called “Tag” which is newly introduced in the Sitecore 9.1, by default it’s disabled until you configured any content tagging provider.

Now go to the Sitecore configuration

1. Navigate to \App_Config\Sitecore\ContentTagging\Sitecore.ContentTagging.OpenCalais.config

2. Provide the value of the Open Calais token in the below setting which we generated in the Step1:

<setting name="Sitecore.ContentTagging.OpenCalais.CalaisAccessToken" value="" />

All set for the configuration, now let's consume the APIs in the Sitecore

Step 3: Consume the Open Calais API In the Sitecore Content Tree

Go to the content tree and update any Sitecore content item with some data, for demo purpose, I just update the below paragraph in the RTE field

“ Sitecore’s digital experience platform combines content, commerce, and personalization to help customers easily create the most relevant, individualized experiences possible. We capture interactions at every touchpoint to provide a personalized experience across every channel, continuously over the lifetime of the customer. Businesses look to Sitecore to power the most relevant experiences possible. “

As you can see, the tag option is enabled now, after configured the API key in the configuration file.

Now > click on Tag Item >

The moment, I click on the Tag item button, Sitecore starts the Content tagging service to call the API and get the data:

Now, check your tags of the item, navigate to the tagging section, and here is the results:

All relevant tags have been added automatically, without any manual intervention such as Technology_Internet, Business_Finance, Information science, Content Management System etc.

PDF Search for Content Tagging

The Content tagging feature does not only search the RTE, single, multi-line fields, it also supports the documents such as PDF for content tagging, let’s take an example, you have some Sitecore items and some relevant documents which need to attach with the Items for example – Product information PDF, and you want to search the content from the PDF also and tag some meta tag based on PDF data, then it  is possible with this integration as Open Calais supports the PDF documents.

Now, I am going to attach one SIF Configuration pdf In the sitecore internal link field as below:

The tags are blank now:

Now> adding the tag from the ribbon, and here is the result:

isn't this cool 

Some other Observations:

1. This functionality required the internet connection, as its calling  https://api.thomsonreuters.com/permid/calais API, so please make sure in the production, internet should work, and this API link should be whitelisted.

2. All the open Calais tags are stored in the Sitecore itself  as a sitecore bucketable item in the  below location:


Demo in Thomson Reuters Open Calais Website

Want to quickly check the Open Calais results, without importing into the Sitecore, no worries, here is the easy way, go to the 

Try to paste some content or upload any document, and you can able to find the relevant tags immediately on the screen as below:

I hope you enjoyed this article, and it will help you to configure the Sitecore 9.1 content tagging feature.

Happy Sitecoring

Friday, November 9, 2018

Track your Internal Search Keywords Using Sitecore Analytics

In the Digital ERA, everything is now measurable, Everybody wants to know their customer behavior on the website and keyword search is the most important element in this aspect to know what exactly customer is searching or looking on the website, through tracking these keywords information, marketers can further optimize the pages/visuals/lead/forms/Sitemap/personalization’s/ rules etc.  To provide better customer experience and get more conversions.

Again, “Internal Search” feature is the hidden gems feature in the Sitecore analytics, Must say Sitecore cares the current digital marketers and provides such a “must have” feature in the Sitecore analytics out of the box.

I didn’t know this feature, and wanted the track all the keyword search on my website, to check “what exactly people are searching on my website”
But the question is how? How to track all the keyword of the website search that customers are searching? Do I need to store in the database? And do some basic reporting, or track all the pages with query string? and provide the unique report? Was totally confused and planning to build my custom module for the same.

But after scratching my head a bit and some googling , I came to know the feature called “Internal Search” in the Sitecore out of the box. Cool, then why should I reinventing the wheel, if  Sitecore has already invested and provided as a feature.

But the problem was how to configure this search tracking functionality in the analytics, by default it’s not implemented and showing blank as below.

Then again after doing some research I figured out the solution, and now I can track my keyword search and here is the results:


Guess, who is the most searchable person by the Sitecore community members on my website?

 Yes, Akshay Sura and Kamruz Jaman are the top keyword search on my website, see how important this feature is? Now I can track my keywords search like anything – Real time..


Solution – How to configure the Internal Search keywords tracking in Sitecore Analytics:

For the demo purpose, I just created a simple search.aspx page which consists of textbox and button,

I am searching the keywords using the above textbox and click on the search me button, then I am calling sitecore analytics API to register the keyword.

 Register the search page event in the Sitecore Aanalytics tracker

        protected void Button1_Click(object sender, EventArgs e)
            var searchEvent = Tracker.MarketingDefinitions.PageEvents[AnalyticsIds.SearchEvent.Guid];
            string searchKeyword = string.Empty;
            searchKeyword = TextBox1.Text.Trim();
            Sitecore.Analytics.Tracker.Current.CurrentPage.Register(new PageEventData(searchEvent.Alias, searchEvent.Id)
                Data = searchKeyword, Text = searchKeyword


here is the form page, don’t forget to add visitor identification tag on the page:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Search.aspx.cs" Inherits="Search.Search" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <form id="form1" runat="server">
            Enter Search Keyword :
            <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>

            <asp:Button ID="Button1" runat="server" Text="Search Me" OnClick="Button1_Click" />

    <sc:VisitorIdentification runat='server'/>

Here is the code behind:

using Sitecore.Analytics;
using Sitecore.Analytics.Data;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace Search
    public partial class Search : System.Web.UI.Page
        protected void Page_Load(object sender, EventArgs e)


        protected void Button1_Click(object sender, EventArgs e)
            var searchEvent = Tracker.MarketingDefinitions.PageEvents[AnalyticsIds.SearchEvent.Guid];
            string searchKeyword = string.Empty;
            searchKeyword = TextBox1.Text.Trim();
            Sitecore.Analytics.Tracker.Current.CurrentPage.Register(new PageEventData(searchEvent.Alias, searchEvent.Id)
                Data = searchKeyword, Text = searchKeyword


Really cool and quick to start the POC and implement the above code based on your solution and code:

Now, deploy your page into your Sitecore instance and hot the search page URL something like http://suguae.sc/search.aspx in your case, replace your domain name:

Search some keywords and hit search button and behind Sitecore will track all the keywords which you are searching.

Change the session timeout setting from the web.config to quickly test the functionality otherwise you have to wait 30 minutes to refresh the results,

<sessionState mode="InProc" cookieless="false" timeout="1" sessionIDManagerType="Sitecore.SessionManagement.ConditionalSessionIdManager">      <providers>      

Now all done, let’s check the Analytics:

Go to the analytics dashboard: 

Go to internal search under Behavior tag on the left hand side panel

Now you can able to see all your keyword tracking based on your search page here, also you can generate multiple reports based on multiple Metric – Page view, counts, Visits etc. further you can filter the date based report using time range etc..

I found this feature very important and relevant, and everything is built-in with minimum code change.

I hope you like this article  will help you to start thinking and exploring the Keyword search with Sitecore.

Happy Sitecoring..  

Sunday, October 28, 2018

My Sitecore Symposium 2018 Take Away:

It’s been an amazing journey with Sitecore(almost 11 years) so far, and recently I got the opportunity to attend Sitecore Symposium this year In Orlando, FL, USA.

Some basic facts of this symposium:

  • Over 1,000 brands are at Symposium
  • 3,000 attendees from 53 countries
  • 5 breakout tracks with 100 sessions
  • Partner pavilion with 50 sponsors
  • 15,000 certified Sitecore developers
  • Sitecore delivers 200 million digital experiences per year


My Journey started from Dubai to Orlando, its 16 hours non-stop flight, Yes 16 Hours..  but everything is fair in Sitecore Love n WAR , so I don’t had any regret to flown that long..

The very first keynote started with customer experience –

“Mark CEO of Sitecore started with “How Experience is important in the Era of digital world, everbody expecting the experience not the just product” Experience is everywhere.. and that’s how  Sitecore can come into the picture and provide the real customer experience”

“Sitecore delivers 200 million digital experience in a year” 

3 Main  Pillar of New Sitecore Release – 9.1

Empower Developers through JSS


Sitecore and Salesforce:

Big Announcement = Sitecore+ StyleLabs

Daymond John – Keynote Speaker:

 360 – Degree of Content and Customer:

Sitecore Focus -  Next 12 Months

Thanks for Jake Johannsen for entertaining us all the time on the stage:

Sitecore 9 Analytics Dashboard/Reporting Database updating very Slow?

Your Sitecore Analytics Dashboard is not updating properly or updating very Slow? Sitecore Analytics Dashboard is based on the...