Sitecore Smart HTML Cache Clearance

Hello, Folks, I hope you are all doing well.

Smart HTML Cache clearance – As the name suggests it clears HTML Cache for a site in a smarter way.

In Sitecore Content tree if you are building a site for two or more different countries/regions and as you publish any content in any of the sites that you can observe via Cache.aspx that HTML Cache for each site gets cleared. Which should not happen.

So in order to achieve this goal, I did analysis and found that we have to override the default implementation of cache clearance when we publish any item in the content tree. But what if we publish any template or media item or anything other than content than at that time whole HTML cache should get clear. Also when we publish the whole site at that time HTML cache for all the sites should get clear. Smart HTML Cache Clearance will handle all the scenarios efficiently and accurately when you publish any item on local or on remote site. Also when it needs to clear the entire HTML Cache for all the sites than the default implementation, as written by Sitecore, will handle our job.

So whenever we face such challenges we google it, so similarly I did and found the blog of Mark Stiles ( ), which helped me to achieve the objective but that was for remote publishing, what if Sitecore is enabled on the production server? Or what if we want to test it in local? So for that, I tried to modify the code and got the solution.

Step 1: Create a class called SmartHtmlCacheClearer in your library.

Step 2: Replace publish:end and publish:end:remote handler to refer the SmartHtmlCacheClearer class in web.config

Now we have to add the reference to this class to the events section in web.config file and allow Sitecore to execute this code instead of Sitecore default code.

We just have to modify the handler for publish:end and publish:end:remote.

That’s it.

Note: Please specify the exact method name in handler which should be executed.

Happy Sitecoring.!


Setup SVN on Local Network

Subversioning plays a very vital role for Developers. It keeps track of changes to a file over time. It maintains the history of all the changes. This way you do not end up with millions of copies of the project that you cannot make heads or tails out of.  With a version control system, every time you commit a set of changes you write a comment describing what you did. Then you can look at the log to see what was changed when and by whom. You can easily look at the differences between versions and easily roll back changes if you need to. You also always have easy remote access to the current version of your project without having to remember which file name you used for it: you simply do an update of your working directory or check out the head version. For more information regarding version control please refer:

Read More


Quick way to deploy web application to multiple environment.

Hello, Folks. It’s really interesting to know about MSBuild. Recently while working on one project we found that deploying Project Files on multiple environments consumes a lot of time. So we thought to take the help of MSBuild and deploy project files on live Server(s) automatically.
What is MSBuild?
MSBuild is Microsoft Build Engine for Visual Studio. MSBuild is completely transparent with regards to how to process and build software developed in Visual Studio.
Why MSBuild?
Initially from Visual studio we do publish via Publish Profile(s). MSBuild uses that publish profile and does deployment without the help of visual studio. It can reduce deployment time up to 70%.
This is the basic Dev environment which I have created to demonstrate you on Automatic Build. Developer can publish files to staging as well production Environments.
How MSBuild?
MSBuild command needs few command line options mainly MSBuild.exe, Visual Studio Project Solution File (.sln), and Publish Profile.
First of all, you need to get the path of MSBuild.exe in my case it is located at C:WindowsMicrosoft.NETFramework64v4.0.30319msbuild.exe
Create a new File and enter the below two MSBuild Commands. (Note: You need to change the path according to your project solution directory.)

/p:DeployOnBuild=true – This will build the solution before deployment and will throw an error if build fails before it deploys the files.
Save this file with any name and provide extension as “.bat”.
Open Command Prompt in Administrator Mode and execute the MSBuild (.bat) file.
Note: If you are using SVN then before deployment you can also write the SVN Command which will update the solution. After that MSBuild.exe will build the code and then publish.
Please download this file for more user-friendly deployment file which will prompt the user for deployment whether to start deployment or not on particular servers. Thanks to Kiran Sir ( for helping me in creating deployment file.

To know more about Web Deploy: Click HereIf you have a better idea do share with us.

Have a nice Deployment! 🙂

PHP Mailer script to send Contact Us form email.

If the website is running on PHP Server than it’s just easy to create Form. It will only take fifteen to twenty minutes to build a form on a website. The simple static website can also be customized to have a contact us or any other form.
Let’s begin by writing a simple html code for form.

Note: Please remember the name that have been given to textboxes and text area. We have to use same name in PHP script. And the file must be located where our .html file is stored as we have directly specified send_form_email.php in action parameter. If you have placed somewhere else then do specify the proper path. 

Now let’s write the PHP script to send an email.
Create a file send_form_email.php

Copy the below code.


We need to change the $to email id to wherever you want to send an email.
As the form is submitted by the user and the form is successfully sent then we have to redirect the user to any page. So for that we have to change the header location as per requirement. Here we have redirected to our actual domain site.
Note: This will only work on PHP Server. If we try to submit the form on our local machine then we will see the php file appearing but on live server the actual mail will be sent.
For seeing the Demo of this application CLICK HERE.
If you were looking for something and this helped? Or if you
have any other better idea? Feel free to share with us!

Happy Coding!


Sitecore Workflow QuickStart Guide: Part-3

This series is divided into three parts:
Part 1 : Sitecore Workflow QuickStart Guide : Part-1
Part 2 : Sitecore Workflow QuickStart Guide : Part-2
Part 3 : Sitecore Workflow QuickStart Guide : Part-3In Part-2, we saw creating roles and users and assigned workflow states based on our requirement.

When the reviewer clicks the Approve command, Sitecore triggers the Validation Action, which checks that the item has no validation errors. This occurs because the Approve command includes a Validation action. The validation action will cancel the movement of the item from the Awaiting Approval state to the Approve and Publish state if it finds errors.
If the validation action finds no errors, the Approve command moves the item to the Approve and Publish state.
Let’s do practical.
We won’t allow the duplicate workflow item name allowed to be published.
So when sitecoreReviewer try to approve any ProductPublishingWorkflow item with duplicate name then the guy will get an
error and reviewer won’t be allowed to approve that item.
Now where do comments go when Editor/Reviewer/Publisher apply comments to a workflow item?
You can see comments in the History section in Review Tab.
Let me know if you face any challenges or if you have any better idea. Suggestions/Comments/Feedback are most welcome.
I am very much thankful to Brijesh Patel (, Nilesh Thakkar ( and Kiran Patil ( for helping me out in understanding the fundas.

Sitecore Workflow QuickStart Guide: Part-2

This series is divided into three parts:

Part 1 : Sitecore Workflow QuickStart Guide : Part-1
Part 2 : Sitecore Workflow QuickStart Guide : Part-2
Part 3 : Sitecore Workflow QuickStart Guide : Part-3

In Part-1 we saw creating workflow in sitecore, Now let’s create roles and users and assign workflow states to appropriate roles.

1)      Creating Roles
Its best practice to assign workflow rules to the roles and not to the users, so we will first create the roles and then assign it to users. We will create three roles.
     1)      sitecoreEditor
     2)      sitecoreReviewer
     3)      sitecorePublisher

Now as we have created roles we have to assign roles to a role for authoring a user with this particular role to login into sitecore and do some actions.
We will assign Sitecore Client Authoring to all the three roles.
Open Role Manager and follow the steps given in screenshot.
     1)      Click on sitecore\SitecoreEditor
     2)      Click on Member Of
     3)      Click on Add
     4)      Click on sitecore\Sitecore Client Authoring
     5)      Click OK
Similarly apply Sitecore Client Authoring to sitecoreReviewer and sitecorePublisher.

Additionally we need to assign Sitecore Client Publishing role to sitecorePublisher. sitecorePublisher should be able to publish items so this guy needs Sitecore Client Publishing role. sitecoreEditor and sitecoreReviewer won’t be able to publish any item of ProductPublishingWokflow workflow.

Now for each particular role we have to assign what items that particular user having these roles should be able to access or perform actions.
It’s good to assign access on roles rather than on user because in future if you need to create multiple user who must be able to perform similar actions than it would be easy to create by just assigning the role.
By default Read access is assigned to all the roles.
In my case MySearch is the root item and child items are in workflow. Child item’s template is MyItem template as shown in figure above to whom we have assigned the workflow in standard values items.
Here we are assigning Read and Create access to MySearch Item and Read, Write, Rename, Create and Delete access to Descendants (Sub Items / Child Items).
Similarly we assign Read, Write access to sitecoreReviewer role.
Publisher can approve/reject and publish the items, once publisher approves the item, it will be moved to Done state and it will be automatically published. So similarly provide read/write access as in sitecoreReviewer role to sitecorePublisher role.  We already have given an additional role to publisher for publishing the items so publisher can publish the items that are moved Done state incase if the item is in workflow.
Now the very important thing is we have to give proper access of workflow States to these three roles.
Let’s do step by step. First assign it to sitecoreEditor
Ok now sitecoreEditor should only be able to create, edit and submit item to reviewer so we have to assign workflow states accordingly. sitecoreEditor should not be able to Approve or Publish Items. We have already assigned security settings to ProductsPublishingWorkflow and its Descendants. So Draft State is by default applied to the sitecoreEditor. Now we have to deny read access to Awaiting Approval, Approve and Publish and Done states from sitecoreEditor roles
Similarly sitecoreReviewer should not be able to create or submit item. It should only be able to approve or reject items.
sitecoreReviewer needs Awaiting Approval State access so we already have assigned it to Workflow and its descendants so it is by default applied to Awaiting Approval state. No need to assign or deny anything to Awaiting Approval state for sitecoreReviewer.
Remove Draft, Done, Approve and Publish states access from sitecoreReviewer as reviewer is not allowed to so.
And similarly for sitecorePublisher. Sitecore Publisher won’t be able to create item. It can only approve item for publish or reject item. So we have to deny read access for Awaiting Approval and Draft State.
2)      Creating Users
Now we will create three users and assign these three roles respectively.
     1)      WebsiteEditor
     2)      WebsiteReviewer
     3)      WebsitePublisher
Refer this link to know how to create new roles [pg. 29] and how to create new users [pg. 15].
While creating user you will get an option to assign the roles to each user so assign the appropriate roles i.e. WebsiteEditor user will have sitecoreEditor role, WebsiteReviewer user will have sitecoreReviewer role and WebsitePublisher user will have sitecorePublisher role respectively.
Refer below screen to create a user and assigning roles.
That’s it. We are done.
You can now test it with different users.
Continued in Part-3.

Sitecore Workflow QuickStart Guide: Part-1

This series is divided into three parts:
Part 1 : Sitecore Workflow QuickStart Guide : Part-1
Part 2 : Sitecore Workflow QuickStart Guide : Part-2
Part 3 : Sitecore Workflow QuickStart Guide : Part-3

Workflow in sitecore ensures that items move through a predefined set of states ­­­­before they are publishable, usually, it’s to ensure that content is reviewed appropriately before publishing on the live website.
Important things to consider in workflow are

1)      State
2)      Command
3)      Action

  • States are building blocks of the workflow. It represents steps in the workflow.
  • Commands allows users to transition content items from one state to another.
  • Actions automate functions in the workflow.

We will assign workflow to item template’s standard values so all the items that are published based on that template enters into the workflow which has to be followed.

In real scenario content item is created by one user it is then submitted and reviewed by another user, who will approve which will change the state to Approved then finally the publisher will approve and publish the item.
Workflow Item follows ERP Formula.
Editor Reviewer Publisher
Editor creates item. Reviewer Approves item or Reject item.
If Item is rejected by reviewer then it will go back to Editor. If reviewer approves item it will then be in Approve and Publish state and can be approved and published by Publisher.
At the end we should have the following workflow implementation in sitecore:
1)      Creating workflow
Create a workflow using /sitecore/System/Workflows/ and enter the name
Before assigning the initial state to this workflow, we first have to create the state.
2)      Creating Workflow States
For that select workflow definition item and the select Insert from Template command and create the new workflow state using the /System/Workflow/State template.
Call the first state “Draft”.
Similarly create three more workflow states –Awaiting Approval, Approve and Publish, Done.
It’s up to the requirement whether you have to create two levels or three of workflow. Here we will look at three levels of workflow where in as sitecore item reaches its final state i.e. Done then it will Auto Publish to Web Database.
At the end of this step you should have the following:
Now let’s set the Initial State as a Draft.
3)      Creating Workflow Commands
To add command to a workflow


Create commands as shown in below diagram.




Note: You can give any valid name to commands. Commands will appear to user. For example here publisher will have access to Approve and Publish State where we have provided Approve and Reject options, instead you can provide Approve and Publish or Reject.

Now let’s set the transition from one state to another with the help of commands.
Click on Submit Command in Draft State and set the Next State to Awaiting Approval State.



Similarly select Approve in Awaiting Approval and set the Next State to Approve and Publish.

Select – Reject in Awaiting Approval State and set the Next State to Draft.
Similarly from Approve and Publish state Approve Command will point the Next state as Done and Reject Command will point the Next State to Awaiting Approval State.
Note: Suppress Comment: This checkbox defines whether or not users are prompted to enter a comment when a workflow command is executed. If the checkbox is cleared, users are prompted. If the checkbox is selected, users are not prompted.
4)      Creating Workflow Actions
a.       Validation Actions
Select Approve Workflow Command, Right click and select Insert from Template Command and create the new workflow action using /System/Workflow/Validation Action template. Call the new command “Validation Action”.
You will get the below screen. Enter the following information in Fields.
Type Field: Sitecore.Workflows.Simple.ValidatorsAction,Sitecore.Kernel.
Max Result Allowed: Warning
The maximum response from the validator.
The possible values are:
If the value of this field is “Error”, then items which have errors will pass, but the items which have critical errors will not pass.
Fill the error results with proper error messages that you want a user to see in case of validation errors.
Similarly add Validation Action at Approve in Approve and Publish State.
b.       Auto Publish Action
The data section of this workflow action contains the following fields:
The namespace.class, assembly name of the implementation class.
            For Example: Sitecore.Workflows.Simple.PublishAction, Sitecore.Kernel
The deep parameter that specifies whether or not the child items should be
— publish children
— do not publish children
— publish children (Sitecore 7.2 onwards)
5)      Defining Workflow Final State
Select the state which is supposed to be the final state in workflow and select the Final Checkbox in the Data field:
Only those items which are approved by publisher in Approve and Publish state will move on to Done State of workflow and it will be published automatically.
6)      Assigning workflow to a Template
It is always the best practice to assign the workflow to the standard values item of a template.
Select the Standard Fields Checkbox.
Leave the Workflow and the State field’s blank, as they will be filled automatically upon the item creation basing on the workflow settings. Leave the Lock field as it is.
Save the template and now it is ready to use with workflow support. First phase of creating a workflow is complete.
Now let’s see how to use workflow for creating-reviewing-publishing items in Part-2

Lucene Search in Sitecore

Lucene is an open source search engine used in Sitecore CMS for indexing and searching the contents of the website. Here you will see the simple and easy way to perform Lucene search in Sitecore. Lucene search can be performed on any item or fields of item(s). In this post we will look at performing Lucene search on Sitecore item field.

We will use the default search index provided by Sitecore. Default search index i.e. sitecore_master_index. This default search index uses syncMaster search strategy which will rebuild automatically based on certain events. Every time you update, create or delete an item Sitecore runs a job that updates the indexes. The process is usually complete by the time you have saved or published an item. So as you do any changes to an item then it will automatically rebuild the search index.
For more information about search index strategies refer this blog:
For displaying result you just need to bind SearchResultItem with the event called displaySearchResultRepeater_ItemDataBound. For getting the result on the repeater data bound event you have to do the following:

Output:  when we pass “Item” in SearchText (e.g. SearchText = Item)

Microsoft Student Partners Program

What is Microsoft Student Partner?

Microsoft is the well-renowned company all over the globe.
Everyone in the world uses Microsoft Products
Microsoft is always up and running with the new technology and ahead of all the others.
Microsoft Student Partner Program is from Microsoft which encourages developers/coders to come and join Microsoft technology and take advantage of it and develop new innovated applications with them.
The Microsoft Student Partner Program (MSP) is a worldwide educational program initiated by Microsoft in 2001 to sponsor students majoring in disciplines related to technology.

This Program attempts to enhance the skills of interested technology enthusiast student in the field of Development with the hands on Microsoft Technologies.


Each year Microsoft identifies top students who are passionate about technology and Microsoft and want to share their knowledge with students and faculty on campus.  Students will serve for next academic year of selection, and get numerous benefits including competitive compensation, Microsoft software, training and work experience that looks great on a resume.

If you are passionate about technology, love throwing fun events on campus, and aren’t shy about sharing your enthusiasm for the latest Microsoft products, you could be the perfect fit for the Microsoft Student Partners Program! Whether you’re a tech junkie or a marketing guru, you could have the chance to be the Microsoft Rockstar of your campus.
I was not knowing about this program, one of my friend was going through this program since last one year but as soon as he told me about this program I just started preparing myself to take part in it and crack to become MSP.
Any Student who is interested in technologies can become MSP.
In the year 2012-2013, there were three simple round that one need to complete to become MSP.
There were points in each round, and a candidate will be selected as an MSP based on points received & the number of currently active MSPs in his/her college. Well Microsoft never discloses the points received by a MSP.
It’s was not mandatory to take part in all the rounds but it would be good for you and there will be higher chances for you to get selected for MSP.
Initial Round : Registration (Last Date 26th August 2012)
The form is needed to be filled complete and accurate information should be provided.
Round 1: Video Submission – 100 Points (Last Date 26th August 2012)
Here we were told to create a video giving answer of three questions
  • Why would you like to become Microsoft Student Partners?
  • Skills that will make you great MSP?
  • Explaining why you are exited for new Windows 8/ Windows Phone/ Internet Explorer 10?
Initially because of work load from our university and my business, I thought to skip taking part in this program but because of watching benefits and information that I have collected, I thought that is should do it and go for it. So on 26th as Sunrise I started making the video and after working for whole day my video was successfully completed at 9.00 p.m. sharp. I was in hurry to upload video because only 3 hours were left so I somehow decreased the quality and size of the video and uploaded at 11.00 p.m. even though I was knowing that quality and content of the video matters for the selection process but due to lack of time I had taken this step. And on 27th I gone through the site and I found that date has been extended to 5th Nov where I got disappointed as I uploaded video with low quality but we should upload the link only once over the site so I had been with that only. Next step was to share the video as maximum viewers can lead to good number of points.
Round 2: App Development – 100 Points per Windows 8 app and 50 Points per Windows Phone app (Last Date 26th September 2012)
(Later on date was extended to 15th November)
This was the step where I was bothering because I haven’t developed any app like such which would be available to the world, but I tried hard to get it done. I developed app named “Quiz Center”
It was some-what difficult task for me to learn and explore and develop an app on new technology, new platform and that also within one month. Thanks to my university who had organized the Metro Style App Development Workshop which helped me to crack this step and finally my app was successfully up and running over the store on 11th Nov 2012.
App takes minimum 7 days for certification process.
 Round 3: Participation in Imagine Cup 2013 Quizzes – 50 Points (Last Date 30th November 2012)
I was in very much hurry as there was 30 questions and time limit was not shown so I thought that session might get expired so finally after hard time I scored 22 out of 30 and minimum required was 15.
Microsoft with this also taught us the patience as it told us that results will be declared on 7th Dec and I was having exams from 19th but I was very much exited for the result, I haven’t started studies till 7th and then suddenly there was announcement that result will be declared on 10th which was very difficult time for me.
But at last I got selected as the Microsoft Student Partner.
Welcome letter
MSDN subscription after successful completion of probation period
Rewards & Recognition for top performers
Networking opportunities
Technical training & resources
Specific Microsoft events
Interaction with MVPs & Microsoft Employees
Internship & Recruitment announcements for high performers
If you get selected as an MSP, here’s an indication of some of short term goals:
     Learn & implement emerging technologies like Windows 8 apps and Windows Phone apps.
     Conduct at least 1 technical session per month in your college.
     Participate and drive entries for Imagine Cup.
If you get selected as an MSP, here’s an indication of some of long term goals:
     Publish high quality apps into the Windows Store and the Windows Phone Marketplace.
     Organize city-level events by collaborating with other MSPs and the local Microsoft User Group.
     Mentor other MSPs.
This is the new beginning with a dream to work with Microsoft.
To Conclude this post I hope that you got all about Microsoft Student Partner and I will keep on blogging to make you aware with new Technologies.