Wednesday, December 27, 2017

Sitecore 9 - Long Live Forms

A new Experience Forms module has finally been released.

We are familiar with the Web Forms for Marketers (WFFM) module which is provided with previous Sitecore releases. The new Sitecore Forms module is not just an upgrade of the existing WFFM modules, but it is a completely new module designed and developed from the ground up. Sitecore announced at SUGCON EU 2016 that they were beginning work on a new module, which is a complete revamp ground up rebuild of the module.

The goal for the WFFM was to provide content authors the ability to create web forms for their site with little to no development effort involvement.  Though the WFFM was seemed to achieve these goals but the process itself was clumsy and the module seemed to be error prone at most times. Also when more advanced scenarios was the need of the hour, WFFM lacked ability and had to be dropped at most times.  The new Sitecore Forms module targets most of the shortcomings which plagued WFFM. The Forms  module provides a nice and clean user interface with drag and drop capability for creating forms.  The module has support for wizards to allow data capture over multiple pages in sequence (something that was never possible with WFFM).  And finally,  the forms module is included in the Sitecore install, which means that we no longer need to install it as an add-on module.

The good thing here is, that the existing WFFM module has also been updated to work with Sitecore 9.0. So it should make upgrades easier and also we do not have to rework all your existing forms, fields, save actions and other custom actions immediately. But expect support for WFFM to be dropped in a near future.


Monday, December 25, 2017

Sitecore 9 - Configuration files redesigned

With Sitecore 9, Sitecore has redesigned the way configuration files are loaded and managed.

In Sitecore 9, the first thing we will notice post setup is that the App_Config\Include folder has no configuration files.  Instead there's a new file in the App_Config folder called Layers.config.
Below is a snap from the file -

<layers>
  <layer name="Sitecore" includeFolder="/App_Config/Sitecore/">
    <loadOrder>
      <add path="CMS.Core" type="Folder" />
      <add path="AntiCSRFModule" type="Folder" />
      ...
      ...
      <add path="PathAnalyzer" type="Folder" />
    </loadOrder>
  </layer>
  <layer name="Modules" includeFolder="/App_Config/Modules/" />
  <layer name="Custom" includeFolder="/App_Config/Include/" />
  <layer name="Environment" includeFolder="/App_Config/Environment/" />
</layers>

From the above snippet it becomes rather clear that Sitecore is creating a layered structure for the different configuration files, and  also these  layers are loaded in a specific order.

To begin with Sitecore loads all of the "Core" configurations first, and all these are maintained in a separate folder.  Next, any third-party modules will be loaded in the "Modules" layer.  Thereafter, any custom configuration would be loaded from the current empty "Include" folder as part of the "Custom" layer.  And lastly, any environment specific configuration gets loaded as part of the "Environment" layer.

This approach makes it much easier to keep all the different out of the box Sitecore configuration files separate from the custom configurations.  Also, since each configuration layer has a specific folder for it, this makes tracking any update easier, as well as also helps in maintainability and troubleshooting the different layers.

In addition to the above mentioned layered approach, Sitecore has also introduced the concept of role-based configuration.

Note - This also marks the end of the era of creating folders with a prefix of "z"  :-P

Role Base Configuration:

Role-based configuration allows us to assign any specific server role to an individual configuration node.  For example, we can define some configuration settings specifically for say a Content Management, Content Delivery or a Processing server without having to go through the erroneous and painful steps of enabling or disabling the various configuration files on each of these specific servers.  Further, we can also define your own custom configuration roles and assign the configuration information to those roles.  This role-based approach provides a lot of flexibility, while also allowing for consistent, repeatable and automated deployments.

Sitecore has also provided a new admin page (/sitecore/admin/showconfiglayers.aspx) that allows us to view all the defined configuration layers, config files included with each layer, the different configuration roles that has been defined, and allows us to define new roles.  It also provides us with the ability to select a specific role and preview the resulting configuration that would be generated for that type of server role.  This allows us to essentially validate any environment-specific configuration in a single development environment without having to actually deploy our configuration to another server.

Friday, December 22, 2017

Sitecore 9 - Sitecore Installation Framework (SIF)

With the release of Sitecore 9 - Sitecore has also release a new framework "Sitecore Installation Framework (SIF)", this new framework revamps the way Sitecore installations are done.

The SIF framework is built on top of Windows PowerShell, which provides an automated approach towards installing and configuring the Sitecore instances.  The framework can set up the databases, search indexes, web sites as well as perform all of other Sitecore configuration updates needed for the installation to work (e.g. setup IIS application pool).

Any configuration/settings needed are controlled by JSON files that define the different variables and parameters that go into your specific installation (e.g. database names, usernames and passwords, file paths, etc.). The framework extends and enhances the capabilities for the user to incorporate/automate all the other different updates they need to perform post Sitecore installation to meet demands around any specific provision such as security hardening etc.

The new Installation frame has one quite evident drawback for all users. The installation process is not going to be as easy/user friendly as the out-going Sitecore installers (SIM or the Sitecore installation executable) used to be.

So, though SIF is going to provides Power and Flexibility for a consistent, secure and automated deployment, it will require a bit of hands-on towards defining the different variables and parameters that go into a specific installation.

Wednesday, May 1, 2013

Forgotten your admin password? - Part 2

 In my previous blog with the same Title we discussed ways to reset the password for Admin user in-case we forgot them for Sitecore version 6.0 and above when Sitecore integrated ASP.NET Membership.

But with the launch of Sitecore 6.4 and above when Sitecore introduced PasswordSalt there's a change to the update query we discussed earlier. Below is the updated  query -

UPDATE [Sitecore_core].[dbo].[aspnet_Membership]
SET Password='qOvF8m8F2IcWMvfOBjJYHmfLABc=',
PasswordSalt='OM5gu45RQuJ76itRvkSPFw=='
WHERE UserId IN (SELECT UserId FROM [Sitecore_core].[dbo].[aspnet_Users] WHERE UserName = 'sitecore\Admin')


Thanks Patrick for bringing this up... :-)

Tuesday, April 30, 2013

Sitecore 7 is round the corner

Hi folks-

The web world is now buzzing with the entry of Sitecore7. Though still not very aware of what the new product is going to be but MVP's across the globe have plunged in to deliver a gem of a product.

Following some of the most admired names in the industry I can clearly make out that Sitecore 7 is going to have a host of new features that's going to largely enhance performance, scalability and usability.

Sitecore 7 brings along the concept of item buckets, which abstract the descendants of an item through search interfaces rather than a content tree. Item buckets allow Sitecore solutions that manage extremely large volumes of data with high performance. The revamped item buckets would possibly allow us in having our items at the same level.

Also probably the Lucene has been upgraded to allow for higher scalability. The old Sitecore 6 versions probably could make up to 1,000,000 items but its being said that Sitecore 7 have almost no limitations. Another high for Sitecore 7 is going to be its ability to implement the optional SOLR search for indexing and querying Sitecore solutions.

Another great feature that could possible be part of Sitecore 7 is that Authors and Marketers could have powerful features embedded in the Content Editor and Page Editor  modes possibly the Ribbon.

Friends feel free to post in your like/dislikes also you can post your wish list for the upcoming Sitecore 7 to your regional contact or product marketer.

To conclude with we should be looking forward to a cleaner, efficient and amazing performance oriented product.....

Monday, April 22, 2013

How to Render Image Extension

Hello Friends,

While working with Sitecore we all would by now been familiar with the extension '.ashx'. This is the extension by which Sitecore normally renders all its media items.

Now I came across  query wherein I was asked as to is it possible to render images or other media items in their original extension (e.g. '.jpg', '.png', etc)

Well this query made me to search those options from this is being managed and my search landed me on the web.config file. Within web.config you would find the below mentioned snippet -

  MEDIA - REQUEST EXTENSION
The extension to use in media request URLs.
If the value is not set, the Extension field of the individual media items will be used (ie. JPG, GIF, etc.)
Default value: "ashx"

< setting name="Media.RequestExtension" value="" /> 


If the 'Media.RequestExtension' value is left as blank in that case the the extension of the media item would be used but if we have set its value to Default value then the Default value would show up.

I did test it with latest Sitecore version but need to see if lower versions too support it. 



Saturday, April 20, 2013

Basic checklists While Designing Sitecore Solution

Many of us landing on this post would have at some point worked on Sitecore. Sitecore as a Content Management System provides us a really flexible interface to design and develop our solution. It is also probably the most flexible one when it comes to configuring and deploying websites.

However on a personal level I have experienced that at most times we fail to make full use of the systems capabilities because of really small things that we miss out. 

A good system is one that is designed keeping in mind that it provides a simplified user experience, has minimum performance lag, could be easily scaled to the next level in the future and is easy to maintain and support.

Some basic points that we need to rather check for before going BANG ON with deployment of the websites are - 


 Templates-

  • To minimize confusion arising due to large number of templates - Templates should be segregated on the basis of say, Page Level Templates (Page items) and Component Level Templates (Non-Page items)
  • Leverage the concept of Inheritance within Templates to minimize duplicate fields
  • Understanding the concept of Standard Values within Sitecore
  • Presentation Component settings should be managed at standard value level and not on individual items


Content Tree Structure - 

  • When designing the Content Tree care needs to the taken so that we don't have more than 100 items at any give point of time within the Content Tree. Hence we need to study the design of the solution and segregate the structure accordingly.


Security Settings-

  • System users access needs to be driven from Roles and not assigned for individual users
  • Access permissions needs to be through checked for all items, workflows, etc and within all the databases accordingly.


Apart from the above points before deployment Sitecore provides for tools for checking for any broken links and care needs to be taken that we remove the Admin folder from the website.


Please feel free to add any more points or options in case I missed them....