Sitecore 9.3 installation using Sitecore Install Assistant (SIA)

Sitecore released a new version 9.3.0, known as Sitecore Experience Platform (XP). This version majorly focuses on the feature upgrades. One such feature upgrade is SIA, also known as Sitecore Install Assistant.
Scheduled tasks in Sitecore – Creating and scheduling

Sitecore provides a way to schedule routine tasks called scheduled tasks. It is a simple way to execute code logic within a defined interval.
Sitecore Helix and Habitat – creating a new module/project

Helix is a set of overall design principles and conventions for Sitecore development. Helix gives developers some architectural guidelines that have emerged out of experience from past Sitecore implementations The core focus of Helix is the separation of functionality into modules – a conceptual grouping of all assets related to a single business requirement and their organization into layers. This organization is beneficial because it reduces dependency between modules, minimizes side effects and additional efforts in later iterations. Helix defines some rules on how to organize the filesystem and items in the content tree. When we follow these rules, we can be sure that other developers can easily navigate the solution we built. Habitat is nothing but a way on how to implement Sitecore solution based on Helix design principles. Habitat is a real Sitecore project, built using the overall design principles and conventions provided by Helix. Habitat solution for Sitecore v9 is available on Github, and Habitat demo site is also available online for reference. Sitecore Habitat solution can be set up by following the steps which are explained in many articles and videos available online. This article describes the steps to add a new module/project in Sitecore while following Helix principles and using Habitat solution. Creating a new module/project Here we are taking an example of creating a new project by the name Ports in the Sitecore Habitat solution project section. Any module in Feature and Foundation can be created in the same way: 1. Create a folder structure: a. Open windows file explorer and navigate to the path for existing Sitecore solution C:VSTSAdvaiyaSitecoreCodeAdvaiya b. Inside the above path, create the following folder structure srcProjectPorts and srcProjectPortsserialization 2. Create a new project in Visual Studio: Open Visual Studio 2017 in administrative mode a. Open the Sitecore Habitat solution from the location C:VSTSAdvaiyaSitecoreCodeAdvaiya b. Create a solution folder by the name “ports” inside “project” section c. Create a project in the newly created “ports” folder: i. Right click “ports”, add à new project ii. Use the template “ASP.NET web application” iii. Select the project location inside the file system as below C:VSTSAdvaiyaSitecoreCodeAdvaiyasrcProjectPorts iv. Name the project as “code” to maintain the correct folder structure. We will rename it to project in the next steps. v. Click next, now select “Empty” project template and check the “MVC” checkbox vi. Click “OK” 3. Setting properties to the new project: a. Rename the project to Sitecore.Ports.Website b. Go to the project properties and set the assembly name and namespace to Sitecore.Ports.Website c. Update the project framework to “.NET Framework 4.6.2” d. Delete the folders from Project App_Data, App_Start, and Global.asax e. Go to properties “web.config” file and “/views/web.config” files, and set “Build Action” property, to “None”. By setting this property you will not publish these files with the project. 4. Add configuration files: a. Create the following folder structure in the Visual Studio under Sitecore.Ports.Website as below: /App_Config/Include/Project and /App_ConfigEnvironment/Project 5. Create a publish profile: a) Copy the”/Properties/PublishProfiles” folder from the other project. b) Paste it at the same place in the new project Sitecore.Ports.Website project. 6. Copy required assemblies from another project: a) Unload the project, edit the project file. b) Unload any other project, edit the project file. c) Compare both project files and add assemblies in the new project from another project. d) Comment target location at the end of the project file, comparing with another project. e) Reload the projects. f) Re-Build the new project, and it will add all the required assembly references now. 7. Create required folders in CMS a) Go to Sitecore CMS, enter login details and open content editor b) Create required project folder inside: i. Templates ii. Media iii. Content iv. Layout v. Rendering vi. Placeholder settings vii. Models viii. Forms 8. Check configurations and sync: a) Open Unicorn.aspx page b) Check if all configurations are done for the newly created project/module c) If not, then check for errors and resolve them one by one d) Re-serialize newly created project/module e) Sync project/module The newly created project or module is ready. If you need to create a new project for a website in multisite solution, then IIS binding and host file entry for the new website has to be done. If you need any assistance for Sitecore implementation or in the creation of a project/module our team of experts can help you.
Key features of Sitecore Experience Platform 9.1

Sitecore Experience Platform 9.1 has a lot of exciting capabilities, refinements and enhancements to the existing functionalities. It has got many innovations and values that will help customers get to the market faster. In addition to key platforms and infrastructure enhancements, Sitecore 9.1 focuses on five key areas: Sitecore Identity Sitecore Host Headless – Sitecore JavaScript Services (JSS) Sitecore Cortex Sitecore Accelerator Framework (SxA) Sitecore Identity Federated authentication service is the most exciting feature in Sitecore 9.1 version. There is a new login screen, enabling Single Sign-On (SSO) with Sitecore Experience Manager, Sitecore Commerce, and Horizon. This is the new UI released along with this version. In all the earlier versions of Sitecore, authentication of a user has always been done using form authentication in ASP.NET Membership with a simple implementation. With Sitecore 9.1, a new module has been launched which contains active directory integration. Federated authentication is widely used across the industry, and Sitecore 9.1 has finally adopted this feature which provides user authentication and authorization through a centralized federation service. This feature runs as a separate application and provides single login access. This is an in-built module which comes with Sitecore 9.1 and reduces the efforts of developers in integrating or installing different third-party modules to support different login systems. Sitecore Host The Sitecore host which is based on .Net care framework is the base for services, and it takes care of a number of concerns. Sitecore host handles those aspects of services or apps which are not directly linked like application logging, configuration management, Database access, etc. The advantages of running a service built on Sitecore Host are: The experience is consistent on all Sitecore host applications. The experience of installation is constant. Lean common runtime for Sitecore.Net core Services/Apps It is possible to configure applications on the command line, without the need for UI. It is possible to extend features using the host plugin. The behavior of the host is the same on cloud and on-premise. Headless – Sitecore JavaScript Services In Sitecore, coordination between the front end and backend developers has always been difficult. But, Sitecore 9.1 supports JavaScript Services (JSS) which provides native developer experience. Here the front-end developers can consume Sitecore content with the most common JSS frameworks like React, Angular, and Vue. In addition to JavaScript services integration, JSS provides developers access to Sitecore backend services like layouts and personalization features including xDB/xConnect capabilities. Thus, the front-end developers can begin creating components separately using JSS, and this increases the possibilities of creating single page applications, native mobile applications experiences without sacrificing on any feature of the Sitecore experience platform. Sitecore Cortex Sitecore Cortex is a machine learning program for Sitecore. This feature was already present in the earlier versions, but the new Sitecore 9.1 version brings the next level of machine learning innovations with customizable and extensible data processing engine to process data and train models accordingly. Sitecore Cortex is a combination of advanced machine learning algorithms and processing engine enabling rapid implementation of ML/AI based technology. It provides personalization recommendations and offers automatic content tagging capabilities for any product or customer. This feature helps in improving SEO results; the company can get better ROI and reduce guesswork from testing and optimization. It enables advanced search and highly-refined personalization with proper training and extension Cortex also provides plugged architecture which supports other ML which means other ML engines can also be utilized. Sitecore Accelerator Framework (SxA) Web Content Accessibility Guidelines (WCAG) are a set of web standards that enable web and related content to be accessible to users of all backgrounds. Sitecore 9.1 accelerator framework supports industry standard WCAG 2.0 accessibility guidelines. This framework will allow customers to easily build solutions using experience accelerator which complies with accessibility guidelines, thus enhancing the reach of experience accelerator to regulated industries such as public sector and healthcare. There are many other updates introduced in Sitecore 9.1 like: Enhancements in experience analytics Enhancements in email experience manager – New content for e-commerce and marketing automation Project Horizon new UI XM-only platform deployments for simpler CMS needs Support for Solr 7.2.1 All these changes in Sitecore 9.1 helps in better implementation of Sitecore solution by developers and expands the capabilities of the platform for businesses.
Sitecore 9 installation on a local development environment

From the time Sitecore 9 was released, there has been a lot of talk about the method of installation. Installing Sitecore 9 is difficult when compared to installing the previous versions, and in this version, you will be using a lot more Powershell. When I was trying to install Sitecore 9.0 in my system, I had to go through multiple website and videos to learn the method. To simplify this process, I have mentioned the steps to be followed for installation of Sitecore 9.0 on a local development environment. Sitecore Experience Marketing Demystified a. Windows 8.1, 10, Server 2012 R2 b. .NET Framework 4.6.2 c. SQL Server 2016 or greater d. IIS 8.5 or 10 e. Java Runtime Environment (JRE) f. Power Shell 5.1+ g. Web Platform Installer 5.0 h. Web deploy 3.6 i. Solr 6.6.2 j. NSSM Steps 1 1. Gather Files: a. Sitecore License file b. On-Prem XP0 Instance package: Sitecore 9.0.2 rev. 180604(download from here) Step 2 • Create install folder c:/Siteocore/install • Move license file to install folder • Extract ZIP file (Sitecore 9.0.2 rev. 180604) and move below file to install folder 1: Sitecore 9.0.2 rev. 180604 (OnPrem)_single.scwdp.zip 2: Sitecore 9.0.2 rev. 180604 (OnPrem)_xp0xconnect.scwdp.zip 3: Extract XP0 Configuration files 9.0.2 rev. 180604.zip file and move all its json file to install folder • Extract Solr 6.6.2.zip file and move to C:/Sitecore folder • Open PowerShell as administrator and move to C:Sitecoresolr-6.6.2bin directory • Run powershell command: o .Solr start -p 8983 • Open browser with URL http://localhost:8983/Solr and check solr is running properly Step 4 • Set up solr as service o Download from http://nssm.cc o Install to C:/Sitecore folder o Open Command Prompt as admin and navigate to C:Sitecorenssmwin64 o Run PS command: nssm install solr6 Under Application Tab fill values: • Path: C:Sitecoresolr-6.6.2binSolr.cmd • C:Sitecoresolr-6.6.2bin • Argument: start -f -p 8983 Under Details Tab fill values • Name: Solr6 • Description: Start/Stop Solr Service Click Install Service button o Open Service Manager to check Solr6 service is created and then start the service Step 5: Configure SSL for solr: • Download solrssl.ps1 from here • Move solrssl.ps1 file to install folder C:/Sitecore/Install • Edit the solrssl1.ps1 file o Open the file in editor o Navigate to $keytool = (Get-Command ‘keytool.exe’).Source o Set the location of keytool.exe to $keytool = (Get-Command ‘C:Program FilesJavajre1.8.0_191binkeytool.exe’).Source • Open the PowerShelland navigate to C:/Sitecore/Install and run the command .solrssl.ps1 -KeystoreFile C:Sitecoresolr-6.6.2serveretcsolr-ssl.keystore.jks o Open C:Sitecoresolr-6.6.2binsolr.in.cmd in editor and Search for this line and remove REM REM set SOLR_SSL_KEY_STORE=etc/solr-ssl.keystore.jks REM set SOLR_SSL_KEY_STORE_PASSWORD=secret REM set SOLR_SSL_KEY_STORE_TYPE=JKS REM set SOLR_SSL_TRUST_STORE=etc/solr-ssl.keystore.jks o Restart solr service o Now run solr as https https://localhost:8983/solr Step 6 Setup SQL Server User • Create a user with new User and provide Sysadmin server role • Execute below code sp_configure ‘contained database authentication’, 1; GO RECONFIGURE; GO Step 7 Install the SIF Module • Open the Powershell as administrator and run below command Register-PSRepository -Name SitecoreRepo -SourceLocation https://sitecore.myget.org/F/sc-powershell/api/v2 Install-Module SitecoreInstallFramework -RequiredVersion 1.1.0 Install-Module SitecoreFundamentals -RequiredVersion 1.1.0 Import-Module SitecoreFundamentals Import-Module SitecoreInstallFramework Step 8 Run Installation Script • Update the parameter in all the script and then run: o $prefix: name of Sitecore instance o $SqlServer: Sql server name o $SqlAdminUser, $SqlAdminPassword: User created in Step 6 Script 1: #define parameters $prefix = “xp1” $PSScriptRoot = “C:Sitecoreinstall” $XConnectCollectionService = “$prefix.xconnect” $sitecoreSiteName = “$prefix.local” $SolrUrl = “https://localhost:8983/solr” $SolrRoot = “C:Sitecoresolr-6.6.2” $SolrService = “solr6” $SqlServer = “DESKTOP-K34H1RL” $SqlAdminUser = “sc9″ $SqlAdminPassword=”pass@word1” #install client certificate for xconnect $certParams = @{ Path = “$PSScriptRootxconnect-createcert.json” CertificateName = “$prefix.xconnect_client” } Install-SitecoreConfiguration @certParams -Verbose #install solr cores for xdb $solrParams = @{ Path = “$PSScriptRootxconnect-solr.json” SolrUrl = $SolrUrl SolrRoot = $SolrRoot SolrService = $SolrService CorePrefix = $prefix } Install-SitecoreConfiguration @solrParams #install solr cores for sitecore $solrParams = @{ Path = “$PSScriptRootsitecore-solr.json” SolrUrl = $SolrUrl SolrRoot = $SolrRoot SolrService = $SolrService CorePrefix = $prefix } Install-SitecoreConfiguration @solrParams Script 2: #define parameters $prefix = “xp1” $PSScriptRoot = “C:Sitecoreinstall” $XConnectCollectionService = “$prefix.xconnect” $sitecoreSiteName = “$prefix.local” $SolrUrl = “https://localhost:8983/solr” $SolrRoot = “C: Sitecoresolr-6.6.2” $SolrService = “solr6” $SqlServer = “DESKTOP-K34H1RL” $SqlAdminUser = “sc9″ $SqlAdminPassword=”pass@word1” #install client certificate for xconnect $certParams = @{ Path = “$PSScriptRootxconnect-createcert.json” CertificateName = “$prefix.xconnect_client” } Install-SitecoreConfiguration @certParams -Verbose #deploy xconnect instance $xconnectParams = @{ Path = “$PSScriptRootxconnect-xp0.json” Package = “$PSScriptRootSitecore 9.0.2 rev. 180604 (OnPrem)_xp0xconnect.scwdp.zip” LicenseFile = “$PSScriptRootlicense.xml” Sitename = $XConnectCollectionService XConnectCert = $certParams.CertificateName SqlDbPrefix = $prefix SqlServer = $SqlServer SqlAdminUser = $SqlAdminUser SqlAdminPassword = $SqlAdminPassword SolrCorePrefix = $prefix SolrURL = $SolrUrl } Install-SitecoreConfiguration @xconnectParams Script 3: #define parameters $prefix = “xp1” $PSScriptRoot = “C:Sitecoreinstall” $XConnectCollectionService = “$prefix.xconnect” $sitecoreSiteName = “$prefix.local” $SolrUrl = “https://localhost:8983/solr” $SolrRoot = “C: Sitecoresolr-6.6.2” $SolrService = “solr6” $SqlServer = “DESKTOP-K34H1RL” $SqlAdminUser = “sc9″ $SqlAdminPassword=”pass@word1” #install client certificate for xconnect $certParams = @{ Path = “$PSScriptRootxconnect-createcert.json” CertificateName = “$prefix.xconnect_client” } Install-SitecoreConfiguration @certParams -Verbose #install sitecore instance $xconnectHostName = “$prefix.xconnect” $sitecoreParams = @{ Path = “$PSScriptRootsitecore-XP0.json” Package = “$PSScriptRoot Sitecore 9.0.2 rev. 180604 (OnPrem)_single.scwdp.zip” LicenseFile = “$PSScriptRootlicense.xml” SqlDbPrefix = $prefix SqlServer = $SqlServer SqlAdminUser = $SqlAdminUser SqlAdminPassword = $SqlAdminPassword SolrCorePrefix = $prefix SolrUrl = $SolrUrl XConnectCert = $certParams.CertificateName Sitename = $sitecoreSiteName XConnectCollectionService = “https://$XConnectCollectionService” } Install-SitecoreConfiguration @sitecoreParams After Successfully running below scripts, you can access Sitecore site using http://xp1.local URL This method can be followed for installation of Sitecore on a local development environment. You can also view Sitecore Multisite Architecture – Single Installation. In case of query, add your comments below.
5 customer experiences that can be enhanced with Chatbots

What was the last time you had a chat with a customer service agent where you might be complaining about a product you had received? There is a possibility that the agent you were speaking to was not a person but a talking bot. Chatbots have begun to revamp the customer service industry. As per Gartner predictions, by the year 2020 more than 85% of customer support will be handled by machines. Chatbots save money and effort by automating customer support. Lately, the evolution of Artificial Intelligence is at its peak, and Chatbots are a part of this huge AI wave. Today, messaging apps like Facebook Messenger, WhatsApp, Slack, etc., are used by almost everyone. With the widespread of messengers, chatbots which can converse like human beings are becoming increasingly popular. Here are some features of bots which make them hard to ignore. High response rate: A lot of messages received on a company’s website and social media channels go unanswered. But, chatbots ensure 100% response rate. Good response rates can help a company win customer trust. Better customer service support: Some people would want to ask about the status of their order after their office hours. Chatbots are available 24×7 to answer the queries of users. This eliminates the waiting time and enhances customer service of a company. Understand customer behavior: Chatbots use data and trends and adjust the responses accordingly. This can help a company get insights into its consumer behavior. The company can provide discounts on the products based on market demand. Some chatbots can assist users in finding the right products or services. Processing multiple requests: Chatbots can handle multiple queries at a time with precision. A live agent can only handle 2-3 communication at a time, while chatbots have the capacity to handle multiple queries or requests. With chatbots, volume is never an issue. Increased engagement opportunities: When we open a website, we often see a friendly greeting at the bottom corner. It is becoming important for every business to have this tool to stay in the competition. Chatbots are a cost-effective and easily adaptable tool to engage with the users. A highly engaged customer is likely to reach the bottom of sales funnel and chatbot has the potential to engage with the audience proactively. Thus, bots have gained prominence in the customer service segment. They limit the possibility of human errors and are available to address user issues 24X7. This technology might still take time in creating an ultimate seamless experience for customers, but this is the future of customer service.
Sitecore Multisite Architecture – Single Installation

Sitecore provides Multisite Architecture in which single installation of Sitecore can create multiple websites and publish them in the same Sitecore instance. This way it becomes accessible to hosts all an organizations website in a Single Sitecore Instance. In this blog, I am describing how we can quickly setup multisite in Sitecore with the single Sitecore instance. The benefits of using single Sitecore installation with multisite architecture includes: 1. Single set of user access credentials for access to all sites: Single Sitecore instance lets you use the same set of Sitecore managed users to access all your sites. 2. Easier to share content between sites: With single Sitecore instance, all content is directly accessible and addressable through Sitecore. It provides ability to share common data like templates, master pages, content items as data sources in renderings across sites. If Sitecore instances are separated, then content on the other instance is treated more as content on any external sites, and in that case, we would need to use RSS feeds, Web API or any Data Providers to provide content sharing between websites. 3. Easier tracking of visitors: All websites exists in a Sitecore instance share a single xDB database, so it becomes easy to capture web analytics information and get consolidated view across the different websites. Some key configuration points of multisite setup in Sitecore: Multiple websites are hosted in a single Sitecore installation, each site will be having its on properties and sharing common data like templates, master pages, items etc. The properties of each site are stored in the Sitecore configuration files. Each site in the Sitecore multisite structure runs with its own context created inside SiteDefinition.config file placed under “~WebsiteApp_ConfigInclude” folder. The context is defined for each site by adding a in the congif file having the site definition. Sitecore determines the site context based on the URL, hostname and the physical folder name specified in the site definition. For Ex. If two different sites are created in the content tree as below: Website 1:hostName=” website1.hostname.com”virtualFolder=”/”physicalFolder=”/”rootPath=”/sitecore/content/Website1″startItem=”/home”database=”web”domain=”extranet” allowDebug=”true” cacheHtml=”true” htmlCacheSize=”50MB” enablePreview=”true” enableWebEdit=”true” enableDebugger=”true” disableClientData=”false”/> Website 2: hostName=” website2.hostname.com” virtualFolder=”/” physicalFolder=”/” rootPath=”/sitecore/content/Website2″ startItem=”/home” database=”web” domain=”extranet” allowDebug=”true” cacheHtml=”true” htmlCacheSize=”50MB” enablePreview=”true” enableWebEdit=”true” enableDebugger=”true” disableClientData=”false”/> Binding with each hostname is then needs to be done in IIS as below: Below host entries are required to be added in the hosts file placed under “C:WindowsSystem32Driversetc” 1. 127.0.0.1 website1.hostname.com 2. 127.0.0.1 website1.hostname.com Now you can browse the websites using website1.hostname.com & website2.hostname.com. You can create more websites in the content tree and can add the site definition and host entries for them in IIS and host the file using the above steps.
Sitecore Experience Marketing Demystified
Sitecore is an enterprise-class content management system (CMS), and its Experience Marketing System (formerly known as DMS) module can advance your digital marketing practices and enhance conversions from your website. This Digital Marketing System helps bring quality leads through email, mobile, web and social channels right at your fingertips and makes information of campaign and site performance easy. Sitecore Experience Marketing System is a robust marketing solution that allows a one-stop shop for marketing data and insights for an enterprise
Sitecore Experience Analytics reports help you to categorize patterns and trends in customer interaction data, collected from websites and other data sources in the following ways:
Dashboard – provides an outline of key analytics and performance indicators
Acquisition – identifies what is driving traffic to your website, e.g., which campaign worked well and which didn’t, channel sources, target keywords, or referring site
Audience – gives you knowledge of who your visitors are, from where they landed on your website, and showcase the efficiency of your buyer persona strategies
Behavior – helps you evaluate your visitors’ actions. What pages have they visited and what have they downloaded on that page?
Conversion – gives you knowledge of what is most effective in driving customer’s attention for your product or service
Sitecore Email Experience Manager, smoothly integrates with your web platform, helps you execute targeted campaign, track performance metrics, perform marketing automation and personalize the content. Some of the exciting features are:
- It lets you customize your customer information and send email dynamically across customer segments
- It also provides information about the entire customer journey, starting with email open rate and click-through to website actions and engagement, goals and conversions
- Allows you to define an end to end campaign workflows by identifying the right actions and scheduling it to trigger at the right time
- Allows you to test every single component of a campaign to establish and improve customer engagement
Another element which makes it a hot cake is its seamless social integration by making social conversations part of the connected customer experience. There are a variety of powerful solutions to help you make the most out of your corporate social media, starting from allowing social communities on your website to connecting social data to drive most relevant and exceptional customer experiences across channels.
Sitecore Experience Marketing System has the power to take your web presence to the next level. Its advanced analytics can be very helpful to identify the visitors and thus converting them into leads. It can deliver everything from basic analytics to sophisticated email campaign management with the highest level of customizations. In this way, marketers can achieve content, analytics, testing, email, personalization, and automation in the same interface and can track all the data at a single location, thus avoiding the need for various platforms and unnecessary administrative work for your marketing team.
Add placeholder attribute in Sitecore WebForms module

When I started creating forms in Sitecore module Webforms for Marketers (WFFM), the first thing that popped up was how do I add placeholder attribute in the textbox. I am sure many of you might get stuck on this issue, so here I explain how can one add the placeholder attribute in Sitecore Web Forms for Marketers. To begin, you need to create a class that inherits from SingleLineText with an additional property “Placeholder”. public class SingleLineText : Sitecore.Form.Web.UI.Controls.SingleLineText { [VisualCategory(“Appearance”)] [VisualFieldType(typeof(TextAreaField)), Localize] [VisualProperty(“PlaceholderText:”, 100)] public string PlaceholderText { get; set; } protected override void DoRender(HtmlTextWriter writer) { this.textbox.Attributes.Add(“placeholder”, this.PlaceholderText); base.DoRender(writer); } } Further you can create a new custom field type item under /sitecore/System/Modules/Settings/Field Types/Custom. Set Assembly and the Class. Oh yes! You also need to add Count Chars and Regex Pattern validation. Finally set “Textbox with placeholder” custom field type in Form Designer and Placeholder Text. And you are done. Webforms for Marketers field type with a placeholder attribute is ready for use!