Reading through the requirements for running Sitecore 8 implementation in production environment, here is my recommendation:
Systems Architecture and Hardware:
- Quad core processor (up-to 8 threads)
- 16 GB of RAM
- Microsoft Windows Server 2012 R2 (64 bit)
- Microsoft SQL Server 2014
- MongoDB 3.0
- IIS 8.5
- .NET Framework 4.5.2
- ASP.NET MVC 5
- Sitecore 8 with xDB
- Solr for Search
Message: Root item is not defined
at Sitecore.Diagnostics.Assert.IsNotNull(Object value, String message)
at Sitecore.Search.Crawlers.DatabaseCrawler.Initialize(Index index)
at Sitecore.Search.Index.AddCrawler(ICrawler crawler)
This is one of the most common errors we see in the sitecore logs or when we try to login to sitecore desktop.
To resolve it, try the following:
– Go to sitecore/admin/showconfig.aspx
– Find all entries for <index> attributes. Ctrl+F “<index”.
– Ensure all index entries have <root></root> node specified.
– Ensure all <root> node paths are valid and do exists in the sitecore respective databases.
Lessons learned while upgrading sitecore from 6.5 to 7.2 final release. While most of the steps are pretty straight forward and as documented by sitecore. There are some gotchas that you may want to keep in mind while upgrading it. Here are some of the notes that I’ve compiled while upgrading a project.
Upgrading to .Net 4.5.2
Running the automatic upgrade seems to have worked out fine while using Visual Studio 2013.
6.5 to 6.6
Link to upgrade documentation – http://sdn.sitecore.net/SDN5/Products/Sitecore%20V5/Sitecore%20CMS%206/Update/6_6_0_rev_120918/Upgrade%20to%20This%20Release/from65.aspx
While working with sitecore buckets, it is possible that you will encounter this warning on top of the item:
Unbucketable Item stored in an Item Bucket
This item is stored in an item bucket. However, it is not hidden because its template is not bucketable. If you want to hide this item in an item bucket, you must make the template that is based on bucketable
It could mean that either you have items in that bucket that are not bucketable or the current item itself is unbucketable but is placed inside a bucket item. For former, simply sync the item as shown in the screenshot below and for latter, select the parent bucket item, and try syncing it.
If you still notice this warning, you may want to revert and bucket the item again.
Hope this helps.
Coveo Admin kept throwing this error:
Cannot connect to the instance default of Coveo Enterprise Search hosted on localhost port 52800.
Check for following current problems and try again :
The Coveo Enterprise Search service may not have been started.
You may not have administrator rights.
The Coveo Enterprise Search service log on account may have changed.
Turns out the problem was one of the index sources was pointing to a url that was not accessible.
Many times we have to deal with the process of getting content from a database, then sorting it and then displaying it to the user. Recently I was given a task of optimizing a user control on the website that pulls upcoming and past events for a particular category. The way this thing was programmed was something like this:
- Pull all the event data irrespective of the category. More than 1000 records.
- Put all events starting from current datetime in upcoming list
- Put events dated prior to current date in past list
- Grab the page category name and filter both upcoming and past lists
- Display events in respective placeholder/view
This logic was spun across the site as the upcoming/past event controls were almost everywhere. It was taking up to 5 seconds to run this whole process for each user, thereby making it really slow when there are 1000s of users. The first thing I did to fix this is analyzed the queries using Sitecore’s built in X-Path query builder. I could clearly see that although grabbing all the events from the parent directory was taking less time than filtering out events per category. But I was certain that when we fit this filtered data into respective user controls things will be faster. Here’s what I did:
- Modified sitecore query to grab events per field name.
Using something like (C#): /sitecore/content/calendar events/calendars/meeting events//*[@@templatename = ‘Meeting’ and @Short Title = ‘” + Sitecore.Context.Item.Name + “‘ or @Short Title = ‘” + Sitecore.Context.Item.Name.ToUpper() + “‘]
- Now that I have events specific to just one category. Only 10 to 20 records. I sorted them based on currentdate to see if its an upcoming or past event.
- Display events in respective placeholder/view
This logic took less than a second to process the whole thing. Not sure why the previous designers thought about it before. So, the moral of the story is, If data is huge collectively (as in all categories here), pull only what you need. Others may argue.
So I am working on this project that involves heavy sitecore work and I thought of writing few words on it.
For those who don’t know, Sitecore is an Enterprise CMS majorly used by mid size to large enterprises. There are many features that Sitecore offers, and it’s CMS architecture has a lot to talk about. The CMS has 3 tiers. Presentation, business and data layers. You know you can read a lot about the cms at their website www.sitecore.net, but to give you a very brief overview, sitecore puts presentation from content. It’s built on the proven MVP design pattern and utilizes heavy pipeline patterns. It’s ability to integrate with compainy’s lightweight directory for business users and an extranet module for outside visitors makes it ideal for large enterprises.
It also has a module that will help you publish content in an web farm environment. The staging module can be used to publish large media files where databases are not an ideal solution. All in all, a very smart and easy to use/adapt CMS for enterprises.
Well known companies using sitecore: Pepsi Co., Mc Kinsey, National Geographic, Universal Pictures, PJM Interconnections, Deloitte, Accenture, Microsoft, etc.