Skip to content

Sitecore Interview Questions and Answers (Part II)

What is work box?

The workbox gives you of an overview of all items that are in workflows and enables you to manage these items.

In the workbox, you can see the editing history of the items in the workflow, each items workflow state, and the number of items in each work flow.

What is Item bucket?

Large number of items in content tree will decrease the performance of CMS.

An Item bucket is a container that you can use to hide many Items and still easily retrive and work with these items. The only way to find bucket item is to use the Sitecore search engine.

When you store item in item bucket, the parent to child relationship between the item is removed, and instead the items are organized in a folder structure according to the date and time they were created.

Sitecore Domains

A Sitecore Domain is a collection of security accounts (users and roles) that you can administer as a unit with common rules and procedures. A domain is used to collect security accounts that have some logical relationship.

Default Domains

Extranet:

Website Security Domain that contains the users account that correspond to the visitors to the website. This domain holds the website visitor’s roles that manage read access of the content.

Sitecore:

Internal security domain that contains the sitecore clients and the Sitecore clients roles that corresponds to the internal visitors to the CMS.

Default:

This is a virtual domain that only exists in memory. Sitecore is setup with Extranet as the default domain and most user accounts will be extranetanonymous when they visit website.

Domain Manager Tool:

This can be used to add/update domain. Domain Manager Tool can be access from Sitecore Desktop.

Conflicting Rules

Access Rights: Denied overrides allowed.

Security Accounts: Access rights assign to a user account override access rights assigned to a role.

Item: Access rights assigned specifically on an item overrides access rights specified for the descendants on the parent item.

Access rights assigned specifically on an item or on the descendants of an item overrides the inheritance access right.

     

      • Denied overrules allowed.

      • When an access right is not specified, it is denied.

      • If nothing is specified for the inheritance access right, inheritance is allowed.

      • Access right assigned to a use account overrules the access rights assigned to a role.

      • Access rights specifically assigned to an item for a user account overrules the access rights that are specifically assigned to an item for a role that the user is a member of.

      • Specifically assigned access rights to a user account overrules specifically assigned access rights to a role that the user is a member of.

      • Access rights specifically granted for an item, to either a user or a role, overrule the inheritance access rights and any rights assigned to the descendants of the parent item.

    What is virtual User?

    virtual User is a user object created in memory that do not physically exist Nin the security database. This user object can be assigned administrative rights, roles, etc. and can be used for log in. Once the virtual user has been logged in, it is used by the system as if it was a ‘real user’.

    Sitecore Experience Database

    The Sitecore experience database(xDB) collects all your customer interactions from all channel sources in a real-time.

       

        • Collects interaction data from all channels.

        • Stores data for each indivisual customer over their entire lifetime.

        • Shows you the value of visits and how people are navigating through your content.

        • Powers smart personlization, testing and optimization.

      How xDB works:

         

          1. Collect customer data from all channels 360 degree view of every customer.

          1. Analyze, optimize and fine tune depending on data collected.

          1. Get end to end customer perspective.

        Key components of xDB

           

            • CD Server

            • Session DB

            • Collection DB

            • Processing Server

            • Reporting DB

            • Reporting Service

            • Reporting Application

          What is Session State Server

          As a visitor browses around your site, information about that visitor and their interaction is stored in session. When the session ends, this information is flushed to the xDB. Session state enables you to store and retrieve values for a user as the user navigates pages in the web application.

          Private session state:

             

              • It contains information about contact visit information, such as page viwed, goals converted, or campaigns triggered.

              • Private session state is private to the browser beign used to access the website.

              • If a contact accesses a website simultaneously from their desktop and mobile phones, each device will have its own private session state.

            Shared session state:

               

                • Shared session state contains information that is ‘shared’ across potentially multiple active sessions.

                • This includes any contact information that has been loaded into the tracker at the start of the session.

              What is the xDB collection database, and what does it consist of?

              The xdb collection database stores analytics data, including contacts and interaction. Shared databases are used to store contact, interactions and device profiles.

              Shared map manager database is to manage the multiples shared dbs

              Experience data is shared in the following three ways:

                 

                  • Contact and interaction data is shared by contact ID.

                  • The identifiers index is shared ny identifier.

                  • Device profiles are shared by device profile ID.
                    Database sharding is the process of storing a large database across multiple machines.

                What is xDB reference Database?

                The reference Data service and xDB reference data database is used to secure the integrity of data in the Sitecore Experience Database. It is a central store for data referrence throughout the experience platform processes, such as tracking, aggregation, and reporting.

                   

                    • Goal or campaign definitation, marketing automation plan definition, or taxonomies are stored n the master database.

                    • Content management role deploys the metadata to the reference data service, which in turn stores tha data in the xdb reference data database.

                    • Storing the marketing metadata in the xDB reference data database means that the integrity of the data in the xDB is secured and that the deployed data can now be used by aggregation process, marketing automation service, or in reporting.

                  What is xDB Processing Server?

                  The processing and aggregation component extracts information from captured, raw analytics data and transform it into a form suitable for use in reporting application. It also performs specific tasks on the collection database that involve mass update. Processing activities are,

                  Interaction Aggregation is the process by which interaction data is grouped and reduced into a format that is suitable for reporting.

                  Contact Processing offers an extensions point for responding to the create or updating of a contact. Each time a contact is changed or updated, an event is queued up for processing along with the type of modification that was made.

                  Rebuilding the reporting database reprocesses the interaction that have already been aggregated into the reporting database.

                  How can I disable xDB?

                  Running Sitecore without the xDB

                     

                      • Disable the xDB AND tracker on content delivery and content management servers. This puts both server roles into CMS only mode with support for some Sitecore XP features, such as in-session personalization.

                      • In 9.1 and later, you can deploy CMS-specific version of the content delivery and content management roles that have been optimized for running the experience manager only. Sitecore XP binaries and configuration files are not included, which means that only a limited set of Sitecore XP features are supported.

                    Patch configuration File: Sitecore.Xdb.config

                    xDB.Enabled

                    <setting name="Xdb.Enabled" value="false" />

                    Enable or disable tracking in the xDB on the reporting server.

                    Xdb.Tracking.Enabled

                    <setting name="Xdb.Tracking.Enabled" value="false" />

                    Enable or disable tracking on the content management and content delivery roles.

                    Explain language fallback with example

                    Business use case

                    Customer global site is in English and some of its English contain is same across other countries English website.

                    English Global Website www.example.com

                    Initial content is setup on this site.

                    English India Website www.example.com/en-IN

                    Only some of the pages different on this site. For same pages content should be same as global website.

                    English Canada Website www.example.com/en-CA

                    Only home page is different. All other content should be same as India website.

                    How to set language fallback at website level?

                    Website Level fallback

                    Configuration File: File:WebsiteApp_ConfigIncludeSitecore.LanguageFallback.config

                    Attributes are:

                       

                        • EnableItemLanguageFallback

                        • EnableFieldLanguageFallback

                      <sites>
                      <sites name="shell">
                      <patch:attribute name="enableItemLanguageFallback">true</patch:attribute>
                      <patch:attribute name="enableFieldLanguageFallback">true</patch:attribute>
                      </sites>
                      <site name="website">
                      <patch:attribute name="enableItemLanguageFallback">true</patch:attribute>
                      <patch:attribute name="enableFieldLanguageFallback">true</patch:attribute>
                      </site>
                      </sites>
                      

                      Link manager class

                      The link manager class is a module of Sitecore used to resolve URIs. For example, you may only want to display relative URIs, or add the current Item language to its URI. The link manager is particularly useful in a multi sites configuration, where an Item can be accessed via different URIs that seem completely unrelated to each other.

                      Sitecore.Links.LinkManage

                      GetItemUrl(): method to access the friendly URL of a content Item.

                      Sitecore.Data.Database master= Sitecore.Configuration.Factory.GetDatabase(“master”);

                      Sitecore.Data.Items.Item home= master.GetItem(“Sitecore/content/home”);

                      string url = Sitecore.Links.LinkManager.GetItemUrl(home);

                      Types of Fallback

                      Item Level Fallback

                      Item level fallback enables you to setup an ’empty’ item version in a given language so that it falls back to another language version, including all its fields. In this way, you can launch a new language version of your entire website without creating any item in the new language in the content database.

                      Field Level Fallback

                      Field level fallback enables you to specify on a single field, which field values that you want to localize and which field values that you want to fall back another language.

                      Dictionary Level Fallback

                      Item level fallback is enabled by default on the template that dictionary entries are based on.

                      What are different index update strategies in Sitecore?

                      RebuildAfterFullPublishStrategy

                         

                          • Rebuild indexes after full publish.

                          • Subscribe to the OnFullPublishEnd eventand it triggers a full index rebuild.

                          • Event Queue must be enabled in distributed environment.

                          • Do not combined with Synchronous Strategy.

                        OnPublishEndASynchronousStrategy

                           

                            • Subscribe to the OnPublishEnd event and triggers an incremental index rebuild.

                            • Event Queue must be enabled in distributed environment.

                            • This strategy uses the Event Queue object from the database it was initialized with and depends on

                          This database must be specified.

                          The enabled event queue settings must be true.

                          What is computed Files?

                          Computed files are fields which stores calculation information while Sitecore indexes your item. It basically stores calculated or computed values in the index which physically does not exist in Sitecore.

                          Step1

                          Create a class that implements the Sitecore.ContentSearch.ComputedFields.IComputedIndexField interface.

                          Step2

                          Implement simple string properties named Field name and return type. The field name string is the name the field uses in the index The return type string refers to the solr data type that the Sitecore Field type is mapped to within type matches.

                          Step3

                          Implement a method called ComputeFieldValue(). This method accepts an argument that implements the Sitecore.ContentSearch.IIndexable interface and that specifies the data to index. It returns an object that represents the value for the field.

                          Step4

                          In the Sitecore.ContentSearch.Solr.DefaultIndexConfiguration.config configuration file,

                          locate <fields hint="raw:AddComputedIndexField">
                          

                          Step5

                          Add a element to AddComputedIndexField and reference your custom class and assembly within it.

                          Step6

                          Rebuild your search indexes using the Indexing Manager.

                          Indexing Optimization in Sitecore

                          Index only required templates and fields

                          Check: Sitecore.ContentSearch.Solr.DefaultIndexConfiguration.config

                             

                              • Turn off indexing of all fields using,
                                true, and include only the fields you need.

                              • Index only what you intent to search / query

                              • Include template:

                              • Exclude Field:

                              • Index everything for master index so that all items are searchable in the content editor and index what you need for web index.

                            How do I run a query in Solr?

                            Sitecore Query

                            Step1

                            Get the Index which you want to use by using “Content Search Manager”.

                            Step2

                            Open a connection to search index by using method “CreateSearchContext” and get the context.

                            Step3

                            Last step is to query the index. For which you have to use “GetQueryable”

                            Processor Class

                            Pipeline Args

                            using Sitecore.Pipelines;
                            namespace Sitecore.Foundation.Custom.Pipeline
                            {
                            	public class CustomPipelineArgs : PipelineArg
                            	{
                            		public string MyArg {get; set;}
                            	}
                            }
                            

                            Processor

                            namespace Sitecore.Foundation.Custom.Pipeline
                            {
                            	public class Customprocessor
                            	{
                            		public void Process(CustompipelineArgs args)
                            		{
                            			// your logic
                            		}
                            	}
                            }
                            

                            Configuration – Define Sequence

                            <configuration xmlns:patch="http:www.Sitecore.net/xml config/">
                            	<sitecore>
                            		<pipelines>
                            		<Custompipeline>
                            		<processor 				type="Sitecore.Foundation.Custom.Pipeline.Customprocessor, 	Sitecore.Foundation.Custom.pipeline" />
                            		<Custompipeline>
                            		</pipelines>
                            	</sitecore>
                            </configurations>
                            

                            Resolving a Page

                            From any browser to send a request it goes to the IIS. And this IIS finds that requested URL. Then it passes this request to the Sitecore. As we know there is sitecore pipeline in Sitecore, so this request pipeline maps the request to content Item. There is another pipeline called Render Layout pipeline, this finds out the presentation details of the particular pages.

                            Why we need Datasource?

                            Assume you have a complete webpages including Header, Banner, Body section and Footer.

                            case1

                            You have header Header component and links are configured in the Sitecore. You need to display this component on all the pages and need to allow Authors to update it.
                            You can configure header menu links as shared data and can be used to display on all pages using Datasources.

                            case2

                            You want to apply Sitecore Personalization on the banner like if user comes from google with search query you want to display different banner or you want to perform A/B Testing.
                            You can use Datasource property, and its value can be changed using personalization rule.

                            case3

                            You have multi country website. For India you want to display featured post from local content of India and for Global website you want to display global featured post.

                            You can have different Datasource property setup for India and Global Website.

                            Compitable Rendering

                            Feature Post Template

                            • Title
                            • Short Descripton
                            • Long Description
                            • Image

                              Why should we use compactible renderings?
                            1. Data is reused so saving development efforts.
                            2. It wil help you to display content in multiple ways
                            3. Editor can easily change design of the pages without any code change.

                            What is Sitecre prefetch cache?

                            Prefetch

                            • Database prefetch caches contains items that Sitecore accesses during and immedietly after initialization, and items with children that Sitecore often accesses as a group.
                            • Sitecore populates database prefetch caches at application initialization, and maintains those caches over the life of the application.
                            • Each database prefetch caches stores data from different database or data source. Not all data providers implement prefetch caches.
                            • Excessive use of prefetch cache can affect the time required for application initialization.
                            Share this post on social!

                            Leave a Reply

                            Your email address will not be published. Required fields are marked *