Error on upgrading to Sitecore 7.1 Initial Release

Leave a comment


While upgrading our solution to Sitecore 7.2, we encountered an issue when we reached Sitecore 7.1 Initial Release

The issue was such that our Content editor stopped opening and we started getting the following error in the browser window –  Object reference not set to an instance of an object.

Drilling Down to the issue:

We thought it could be something in our config file, and the first and foremost thing we did was putting our web.config file aside and replacing it with Sitecore web.config file of a plain Sitecore 7.1 Initial Release instance.

And Bingo! It worked, Content Editor was up! :)


So the next step was to find what could be conflicting, or which config in our web.config file was the cause of this issue.

On checking, we found almost 150+ changes in our web.config as compared to Sitecore 7.1 Initial Release (Our first thought: Oh God, please Save us! :(  )

But then, we worked a little smartly. — We checked for various config values that had changes related to content editor only — approx 50+ in number — manageable!

We went on changing our updated value to the default value of Sitecore web.config, and on each change, getting the Sitecore instance up, to check if Content Editor was up and running.

And that’s when we found the following config which was leading us to the issue:

Indicates whether the Content Editor show the search panel above the treeview as default
Default value: true
      <setting name=”ContentEditor.ShowSearchPanel” value=”true”/>

We had the value of this as false, as we did not require a Search Panel in the Content Editor.

We verified the check — On making it true, the CE was up and running and making it false, the issue resurfaced.

On confirmation, we contacted Sitecore Support, with a complete analysis, as we all know, they are the best guys who can help us in such cases!


Yaroslav Krinitskiy from Sitecore Support, replied our support ticket, registered this issue as a Bug and provided us with a workaround for it.

The workaround, is as follows:

  1. Open the ‘\sitecore\shell\Applications\Content Manager\Default.aspx’ file.
  2. Find the following line          <div id=”SearchPanel” style=”background: #e9e9e9; border-bottom: 1px solid #4c4c4c”>
    (it must be the ~116th line)
  3. Replace it with
               <table><tr id=”SearchPanel” style=”background: #e9e9e9; border-bottom: 1px solid #4c4c4c” runat=”server”><td>
  4. Don’t forget to replace its closing tag           </div>          <div class=”scFlexContentWithoutFlexie scFlexColumnContainerWithoutFlexie” id=”SearchResultHolder” style=”display: none”>with
    <div class=”scFlexContentWithoutFlexie scFlexColumnContainerWithoutFlexie” id=”SearchResultHolder” style=”display: none”>

We checked it in our solution, keeping the config entry specified above as false and it worked well.

Also, on smoke testing, we could not find any other issue after applying this workaround.


So again, Thanks Sitecore Support, and specially Yaroslav Krinitskiy for getting us to the solution of this issue!

Happy Sitecoring and Happy Upgrading! :)

Sitecore 7.2 is a massive release!

Leave a comment

Hello my Dear Sitecorians,

Its been ages since I have written an article on Sitecore. And I thought Sitecore 7.2 can be the best way to start it!

Well, there are so many reasons that suggest that Sitecore 7.2 is the best release by par, as compared to the previous versions.

Lets go in a little more details about them.

Main Highlights of the version:

  • IE11 Full Support
  • Sitecore MVC now supports ASP.NET MVC 5.1
  • Publishing Performance Improvements and bug fixes. — we will see later in this post
  • Sitecore Parallel Publishing
  • Improved performance in building Link DB while publishing – LinkDatabase.UpdateDuringPublish
  • Sitecore gives us an option of creating new threads for each new Job
    • Jobs.ExecuteInManagedThreadPool (current value would be true)
    • This setting in config, specifies whether jobs should be executed in Sitecore’s managed thread pool.
    • If true, jobs are queued to the managed thread pool.
    • If false, Sitecore creates a new thread for each job that is started.
  • FilteredItemCache is not cleared on every time an item saved, but will be cleared only when required.
  • When your Sitecore instance is busy, it will automatically block the EventQueue to be executed.
  • Sitecore 7.2 includes many performance and bug fixes. How? Check this!
    • Sitecore 7.2 includes all the fixes of Sitecore 7.1 Update-1.
    • Sitecore 7.1 Update-1 includes all the fixes of Sitecore 7.0 Udpate-3 and Sitecore 7.0 Update-4.
    • Sitecore 7.0 Update-4 includes all the fixes from Sitecore 6.6
    • So ideally, 7.2 would covers all the required performance and bug fixes till any previous version of Sitecore so far!

As Sitecore 7.0 was all about Search, we can say, that Sitecore 7.2 is all about Publishing!

  1. With Sitecore 7.2, we can now check how our content would be displayed on our Production Servers (CD Servers), even when the item is in Workflow State.

    • The Workflow definition item, now has a field — Preview Publishing Targets — wherein we can specify our QA or pre-production environments.
    • So even when the item is in some intermediate state, we can publish and check it.
  2. Sitecore now provides an option of publishing all the items that are related to the current item that we are publishing.

    • A new pipeline is added — getItemReferences — and a new option is added to the Publish Dialog using which all the items related to one particular item can be published in one go.
    • By default, the related items include clones, aliases, related media items and items that the current item refers to in the link database.
    • For more details, click here.
  3. Sitecore now considers publishing a special job, and would create a new thread for each Publishing Job

    • Publishing.ExecuteInManagedTheadPool (current value is false)
    • If true, publishing jobs are queued to the managed thread pool.
    • If false, Sitecore creates a new thread for each publishing job.
  4. A new publishing Appender is added – so from now on, we don’t need to search for publishing related log entries in Sitecore log files, we have individual Publishing Log files available.

  5. If you have configured a dedicated publishing instance then with Sitecore 7.2, you can take advantage of a few things:

    • Database Caching not required on Publishing Instance(s) – Publishing.DisableDatabaseCaches
    • Enabling Parallel Publishing – There are some config files added to App_Config/Include folder, using which, we can enable Parallel Publishing in our Sitecore environment. For more details, click here

Want to know more about Sitecore 7.2? Sitecore 7.2 development team have written a number of articles on this. click here to check them.

Hope you enjoyed the post?

Happy Sitecoring!

2012 in review


The stats helper monkeys prepared a 2012 annual report for this blog.

Here’s an excerpt:

600 people reached the top of Mt. Everest in 2012. This blog got about 9,100 views in 2012. If every person who reached the top of Mt. Everest viewed this blog, it would have taken 15 years to get that many views.

Click here to see the complete report.

Application Domain in Dotnet


Hey Friends, do know you what is an Application Domain?

If the answer of the above question in NO, then you have ended up to a right place. In case it is yes, and still, you just want to recollect what it is, please read through.

The post will start on rather a theoretical note, but we will learn its use as well as discuss some of its applications also.

So, lets understand what it is.

Microsoft defines it as follows: An Application Domain is a logical container that allows multiple assemblies to run within a single process, but prevents them from directly accessing memory that belongs to other assemblies.

Well yes and an Assembly in simple terms is a DLL or an EXE.

In a bit more detail, Process is a unit of Execution for an Operating System, but talking in case of the applications that we develop using Dotnet Framework, we need to consider the Runtime Engine of Dotnet that actually deals with its execution. Yes, the Common Language Runtime (CLR), and for CLR, the unit of Execution is an Application Domain.

So, summarizing it, we can say, that  an Operating System runs a Process within it (multiple processes actually), while a Process runs one or more Application Domains within it. It can be depicted by the below image:

Image Courtesy: Microsoft

Advantages of Application Domains:

  1. Application Domains, provide  a very important benefit, that of providing isolation from runtime errors and unhandled exceptions, in such a way that if one such occurs in a running application, it will not affect any other applications (until they are dependent on that particular application.)
  2. We can provide different security levels to different application domains, to keep the machine secure in case we are running some unknown third party assemblies in our application.
  3. Another very important benefit, is that of running multiple assemblies in separate app domains, without the overhead of starting multiple processes. (A really big advantage!)
  4. Separate Memory spaces.
  5. Separate access to resources.

Important Features provided by Application Domains:

  • Reliability

- Isolate tasks that might cause a process to terminate.

- If app domain state becomes unstable unexpectedly, it can be unloaded without affecting the process

- Very useful for two kinds of applications:

  (a) Which should run for very long time without getting restarted

  (b) Which should not share any data with third party assemblies.

  • Efficiency:

- If an assembly is loaded in the default application domain, it cannot be unloaded from memory while the process is running. But, if you run it in a child app domain, you can load and unload as and when required, without affecting the main process plus having the added advantage of freeing up the unused resources.

Ok guys, enough of theory now, lets go see how to create our own app domain, load assemblies and unload  application domains in our own code.

We make use of the AppDomain Class to play with the Application domains, in our applications.

  • Creating an Application Domain:

We will use a method called CreateDomain, which is a static Method to create an application domain.

AppDomain myAppDomain = AppDomain.CreateDomain("VarunDomain");
  • Loading Assemblies in an Application Domain:

For this, we will make use of an instance method called ExecuteAssembly or ExecuteAssemblyByName.



  • Unloading an Application Domain:

For this, we make use of a static method called Unload.


Very simple! Isn’t it?

Finally, lets look at where can this be applied:

  1. Say you are creating an application where you provide your users with add-ins for their custom use, then you can make use of Application Domains, to load/unload those add-ins without restarting the Main Process.
  2. Say you are creating a very critical Information Management Application, but want to make use of some free third party assemblies available, then you can use them by providing some particular security levels, so that they do not tamper with your critical data in any case.

There can be many more cases, as many as you want to add to the list of two here, based on your own perspective!

Happy Application Domaining! :)

Tortoise SVN and Windows Server 2008 issue – Access Denied!


Hello Friends,

My Friend Sandeep Kumar Gupta and I were facing a problem since a few days. It was related to taking latest for our solution using Tortoise SVN.


Whenever we tried to do any activity, say take SVN Update, or Tortoise SVN Cleanup or anything else, it gave us an error! It works fine in Windows 2003, then why not in Windows 2008? The error that we got was as follows:

We tried to find solution on Net. And this is what we got!


We all know, that from Windows Vista, Windows 7 and Windows Server 2008 and onwards, Microsoft has introduced a functionality called UAC — User Access Control.  Whenever we open a program, it asks us for an administrative access many a times right? This is because of UAC.

To know more about it, please refer to the following links:

Now, even for Tortoise SVN, it requires Administrative Access, but does it ask us when we do any SVN related operations? NO. So, we need to make sure, that the user account under which the current operation is being performed by the Tortoise SVN, is an Administrator, and has sufficient rights on the Directory, which we are performing the SVN operation.

Mind well, the first time SVN activity (i.e. SVN Checkout) will be performed effortlessly and without any issue, the issue comes after those directories are available in Local Machine and when we want to make changes, those directories do not have sufficient rights.

Things we tried which didn’t workout:

After reading this, we went to the respective directory, and tried giving full rights to the currently logged in user!

Directory -> Right-Click -> Properties -> Security Tab -> Add -> Find User -> Full Control

So, on that directory, the user got Full Control now. And we even tested that, we tried SVN Update using tortoise SVN, and it gave us error for an interior directory!!

So one level of success, we can say! :)

Next, we went to Directory Properties -> Advanced -> Select User -> Full Control -> Select [Check box] Replace all child permissions with inheritable permissions from this object.

And what we got was “Access is Denied

We also read on a link, that nevermind even if it gives Access is Denied, press continue and the permissions will flow. But unfortunately for us, it didn’t. :(

Also, even if you are a part of the Group of Administrators, you may not have access to perform certain functions and that’s why you are asked for Administrative Access sometimes.


We went to the main parent directory.

Right-Click -> Security Tab -> Advanced Option -> Owner Tab -> Added the Currently Logged in user as an Owner.

+ Selected the Check box Replace all child permissions with inheritable permissions from this object.

Next, we did Directory Properties, Security Tab -> Advanced Option -> Select User -> Full Control -> Selected [Check box] Replace all child permissions with inheritable permissions from this object.

And Bingo!!

It was done and successfully working!






Hope this article helps you if you face similar issue!

Happy Flowing Permissions! :)

Some Findings while Sitecore Version Upgrade!

1 Comment

Hello Sitecore Enthusiasts!

In the previous post, we saw some basics of Sitecore Version Upgrade! In case you missed it, you can always go and have a look by clicking here.

In this post, I would like to share some findings while performing the Sitecore Version Upgrade.

Well, along with the findings, I have also had some brief/detailed explanation, based on some experience as well as some by asking in forums or searching on the internet. Reading the details or not is solely your choice, but if you ask me, I would insist you do it at least once! — if not be now then sometime later!

  • Always install Upgrade package in FF Browser rather than IE.
We somehow happened to have find it while installing the Upgrade Package in our local environment. Without going into much details of it, I would like to share an article written by  Kiran Patil, which explains it fully
  • Change the values of DefaultSQLTimeout and DataProviderTimeout.
By default, these two settings are set to 5 minutes, and actually they are not present in the Web.Config file. But, you can add these settings, in case you want to override them, and set it to something greater than that.
Lets understand why this is required. Sitecore Version Upgrade consists of two main things — the Database Upgrade Scripts and Installing the Upgrade Package.
While applying the Upgrade scripts, its never a problem, because we are directly working on the Database with Database Management System (i.e. say SQL Management Studio in case of SQL Database).
But, while installing the upgrade package, it is a continuous database activity from Application to the Database. And the time required to install the upgrade package, is relatively dependent to our database size — for us it took some Hours! :(
We had tried without changing this setting and it gave us SQL Timeout while executing the package, but after changing these settings, it worked fine for us.
Some details about what these settings would do — These settings define how long will the .Net Code wait, before it declares that the SQL query has timed out. These settings, would allow some heavy queries to be executed successfully instead of been claimed as time out.
To override these settings, Please add the following in the <settings> section in Web.Config File:
<setting name=”DefaultSQLTimeout” value=”00:30:00″/>
<setting name=”DataProviderTimeout” value=”00:30:00″/>
  • In case you have overridden some basic items,say from Content Editor Ribbon or Web Edit Ribbon, it is better to keep them in tact as packages.
A very important and a must remembered step! Majority of us tweak the Content Editor and/or the Web Edit Ribbon as well as some other options, say the right click Context Menu options and some others, to make our working environment easy. So, at the time you install the upgrade package, (i.e. at the time you execute analyze the upgrade package) you will be able to see, the conflicts for such items (in case they have something added) as they will not be same as basic Sitecore Items.
On ignoring this and moving ahead with installation, its quite possible that you lose your Custom Fields/Items from the Ribbon/Context Menus.
So its better to be on a safer side and make packages of such items and fields, so that you don’t have to rework after the upgrade package installation, just installing your package will make all those functionalities working again.
But one thing to be remembered while making such packages, is that only consider your custom items and fields while creating package and do not make a package of all the items with its subitems in the package.
  • Better apply your changes to the updated items one by one rather than installing a package from the previous version.
Well, we saw something above, and this is actually contradicting the above case. Instead of creating a package of your custom items and fields, you know what is a safer solution? Creating the items and fields all over again. Do this in your local development environment, and after you upgrade, and check that they are working fine. Then you can obviously create package from this upgraded environment. This one would be safer, as you in no case would override any of the Sitecore items that you shouldn’t have.
  • If you are upgrading your Sitecore solution, do keep at least one of your older versions up and running so that its easy for you to compare!
I think this point should be marked with High Importance! We need to and must have at least one old version running either in our Development Environment or somewhere, so that at any point of time we can directly compare after upgrading our Sitecore Solution to the target version.
This is because there maybe some deprecated functionalities, and some newly added ones, or some replaced by some others which may affect your Business needs, say just like Sitecore replaced Telerik RAD by Telerik RTE, which had many changes, and even though RTE had many added functionalities, It was missing out some of our Core Requirements, which we had to plug-in to it, with help from Sitecore and Telerik.
  • Always decide your Target Version based on your Business Requirement rather than the Recommended Version.

I do agree, I am going somewhere different from what any Sitecore Lover would say or a Sitecore Professional would say. If you ask anyone from Sitecore, which version should I upgrade my Current Solution to, they will always say, the Recommended Sitecore Version.

But practically, upgrading a Sitecore Version is not that easy a job! Also, this is not what you are going to do every now and then! So make sure before upgrading to which Sitecore Version you want to upgrade your Current Solution to? This decision should be specifically based on is the main for you to upgrade covered in your target version?

Lets say, you have requirement “A” for which you want to upgrade your Sitecore Solution.

Now, if that “A” is already taken care in some Sitecore Version “X-1″ and Sitecore Version “X” is the recommended version, then please upgrade to the version “X”. :)

But, in case the requirement is covered in some version say, “X+2″ then better go with that Sitecore version “X+2″ — but only after making some serious study, that the version “X+2″ does not have any performance hit or some critical issues reported. For this, you may refer to the Sitecore Developer Forums or ask Sitecore Support directly, as to whether you can go ahead with it or not.

  • Comment out your custom Commands/Processors/Agents/Schedulers if any in your Sitecore Solution before going ahead with installation of Sitecore Upgrade Package.

Here, I would like to share something that we faced while upgrading our solution in Local Environment. We had a custom command in Commands.config — specifically for delelting items in some way — and you know what we were facing? After upgrade when we checked, the items in Core Database for WebEdit Ribbon, the item’s content were not present. (It asked us to add a new version). At first we were shocked, and thought might be some mistake from our side only, and hence did the whole procedure again, with the same result. Then, we tried commenting all our Custom Processors & Commands and everything, and Bravo! It worked.. This was as suggested by a Great Sitecore Lover - Kiran Patil! 

Some other low priority issues that we faced on our end, would like to mention them as precautions to be taken:

  • Sometimes, if you get an error related to the Database Schema, dont worry, just proceed to your Target Version.

It was in our case! For more details on this please refer to the following article :

  •  Shrink your Databases so that you don’t have a heavy LDF files, and all/most of your data is in MDF so that the upgrade Transactions can perform faster.
  • Always Analyze and then Install the upgrade package, and make sure you save all these Log Files. You never know when you require those!
  • [Update] Keep a full backup of your databases as well as application before starting the Upgrade, and also keeping a second copy of the same databases restored with a small modification of names, so that in case of some issue, reverting back in application as well as databases is possible in minimum time. —  Thanks to Devashri Oza for this point! A quite important one when we talk reverting on Live environment! [/Updated]
These were some of the findings that we did and I am penning them down here!
Thank you for reading this Article patiently, and Sincere Apologies for such a long and a theoretical post! :)
Hope you guys enjoyed and/or benefit from this article!
In case you face any other issue, or have any other finding, please share it here in Comments to this Article, so that it can help some more Sitecore Enthusiasts!
Happy Sitecore Version Upgrading! :)

Error while Applying Upgrade – Invalid Column name ‘Sequence’



While upgrading our Sitecore Solution from 6.3.1 110113 to 64.1 120113, which was to be done as a 2 step process, (i.e. from 6.3.1 110113 to the prerequisite version 6.4.0 Initial Release, and then move to 6.4.1 120113) we found the following error in our Sitecore Log files.

1956 06:43:02 ERROR Exception in alarm clock event subscriber.
Exception: System.Exception
Message: Invalid column name ‘Sequence’.
Source: Sitecore.Kernel
   at Sitecore.Data.DataProviders.Sql.DataProviderCommand.ExecuteReader()
   at Sitecore.Data.DataProviders.Sql.DataProviderReader..ctor(DataProviderCommand command)
   at Sitecore.Data.DataProviders.Sql.SqlDataApi.CreateReader(String sql, Object[] parameters)
   at Sitecore.Data.DataProviders.Sql.SqlDataApi.<CreateObjectReader>d__0`1.MoveNext()
   at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source)
   at Sitecore.Data.Eventing.SqlEventQueue.GetTimestampForLastProcessing()
   at Sitecore.Eventing.EventQueue.GetQueuedEvents(String targetInstanceName)
   at Sitecore.Eventing.EventQueue.ProcessEvents(Action`2 handler)
   at Sitecore.Eventing.EventProvider.RaiseQueuedEvents()
   at Sitecore.Services.AlarmClock.Heartbeat_Beat(Object sender, EventArgs e)

Nested Exception

Exception: System.Data.DataException
Message: Error executing SQL command:  SELECT MAX([Created]), MAX([Sequence]) FROM [EventQueue]

Nested Exception

Exception: System.Data.SqlClient.SqlException
Message: Invalid column name ‘Sequence’.
Source: .Net SqlClient Data Provider
   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
   at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
   at System.Data.SqlClient.SqlDataReader.ConsumeMetaData()
   at System.Data.SqlClient.SqlDataReader.get_MetaData()
   at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
   at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)
   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)
   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
   at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
   at System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
   at System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader()
   at Sitecore.Data.DataProviders.Sql.DataProviderCommand.ExecuteReader()
Which actually said it was searching for a Column called “Sequence” in EventQueue table, which it was unable to get.
Findings and Research:
On investigation, we found that in while upgrading to the version 6.3.1 110113 Sitecore had back-ported a functionality from 6.4.1 where it had deprecated and removed the Sequence column from EventQueue Table.
Thus the column was already removed from our Databases.
But, after following the Log Entries and checking the code in Reflector, we moved to a function in Sitecore.Data.Eventing.SqlEventQueue  in 6.4.0 Initial Release where it was hardcoded to read values from this column.
protected override EventQueue.TimeStamp GetTimestampForLastProcessing()
 if (this.timestamp == null)
 string sql = " SELECT MAX({0}Created{1}), MAX({0}Sequence{1}) FROM {0
 this.timestamp = this.DataApi.CreateObjectReader(sql, new object[0],delegate (IDataReader reader) { return new EventQueue.TimeStamp(GetDateTime(reader, 0), GetLong(reader, 1)); }).FirstOrDefault();
 if (this.timestamp == null)
 this.timestamp = EventQueue.TimeStamp.MinValue;
We contacted Sitecore Support with all this information, and the reply was as follows:
“>>So if it is backported in 6.3.1 110112 then this error should not come when we upgrade our solution to 6.4.0 Initial release right? (Correct me if I am wrong!)
Pay attention:
This is an old update. We recommend that you install the most recent update. You should only use this update as an interim update when upgrading from Sitecore 6.3 to 6.4 or later. ( (There is a little typo in this sentence and I’ll make a request to our Doc team to fix that. You should upgrade to the Sitecore CMS 6.4.1 rev.101221 version or later  )
If you continue upgrading your solution to the Sitecore CMS 6.4.1 rev.101221 version or later this will solve the issue. These versions  use the Stamp column of the EventQueue table instead of  the Sequence column.
(Sitecore Link for 6.4.1 Initial Release and further)
>>What can be the fix for this error?
I suppose this could be fixed by executing an SQL script which will return the Sequence column and delete the Stamp one. But I strongly recommend you to continue the upgrading process since this version is just an intermediate one.”

Great Guys really! they solve your issues and problems so quickly! Special Thanks to Viacheslav Nemirovskiy for looking into the issue and solving it!

Happy Sitecore Upgrading! :)

Older Entries


Get every new post delivered to your Inbox.

Join 305 other followers

%d bloggers like this: