nonlinear sitecore®: the nonlinear way

nonline

nonlinear

nonlinear digital nonlinear digital

nonline digita

nonlinear enterprise nonlinear enterprise nonlinear nonlinear

nonlinear

nonlinear digital

nonlinear digital nonlinear

nonlinear digital

nonlinear

nonlinear digital

nonlinear enterprise

nonlinear digital

nonlinear enterprise

nonlinear digital

nonlinear digital

www.nonlinearcreations.com

nonlinear enterprise

Toronto | NYC | São Paulo | Ottawa | Calgary | Florianópolis

nonlinear enterprise

nonlinear

nonlinear

Sitecore :

nonlinear

®

The Nonlinear Way

nonlinear digital

nonline enterpr

nonlinear

Sitecore : ®

The Nonlinear Way

February 2015 Copyright © 2015 non-linear creations inc. All rights reserved Nonlinear Creations Toronto | New York | São Paulo | Ottawa | Calgary | Florianópolis www.nonlinearcreations.com

Table of Contents

i

Introduction

1

Chapter 1: Marketing

3

Driving return on investment (ROI) from your Sitecore deployment

7

Three warning signs to be aware of during a Sitecore implementation

9

Accessing Sitecore analytics with Microsoft BI tools

13

Eliminating cart abandonment with Big Data and the Sitecore DMS

16

Using public data to enhance DMS personalization in Sitecore

18

The Sitecore DMS rules engine: Three cool ways to use it

22

Sitecore personalization: Use Google Analytics to measure results

27

Statistical relevance of A/B tests in the Sitecore DMS

30

Four steps to extract engagement value from Google Analytics

36

When A/B tests lie: The imperative of persona analysis

40

Getting to know your visitors: A/B testing and persona analysis

45

How to recover from search traffic decline after launch—part 1

50

How to recover from search traffic decline after launch—part 2

54

Sitecore 8: The leap to a strategic marketing platform

57

Sitecore Web Forms for Marketers—tips and tricks

62

Sitecore A/B testing: A lesson in statistics

65

Sitecore A/B testing: Identifying your strongest content

68

Sitecore A/B testing: Knowing the limits

72

Understanding content versions in Sitecore

75

Sitecore 7.5 troubleshooting or: How we learned to love the Googlebot

79

Chapter 2: Technology

81

You just bought Sitecore—what’s next?

84

An introduction to Sitecore for developers

90

Our 12 laws of Sitecore development

94

Sitecore operations: Four must-have resources

96

Six tips for scaling Sitecore infrastructure

99

A new way of thinking: Continuous deployment for Sitecore

103

Why Application Lifecycle Management matters for Sitecore

106

Seven tips for automated testing in Sitecore with Selenium

109

The three things to know about a Sitecore Commerce Server integration

112

27 tips for configuring Sitecore

115

Two common Sitecore page editor challenges

117

Sitecore, Coveo and your Intranet

119

Personalization and your Sitecore intranet

121

Nine steps to a successful Sitecore website launch

125

Three considerations when building multilingual sites with Sitecore

129

Sitecore 7.5/8 has been released- should you upgrade?

136

Scaling Sitecore 7.5: xDB on-premises or in the cloud?

140

A Sitecore 8 sneak peak

144

Sitecore 8: A look at database changes

146

Sitecore 8: Introducing the Federated Experience Manager (FXM)

149

Sitecore development: 13 reasons to avoid reusing your old code

152

Integrating Sitecore with your content delivery networks

156

Anatomy of a Sitecore deployment

159

Sitecore multi-site hosting: hostName attributes

171

Three Sitecore gems to share with your content authors

174

Accessibility in Sitecore builds

183

Authors

189

About Nonlinear Digital

Introduction

Why did we write this book? The answer is simple: too often we see the greatness of Sitecore® technology undermined by misguided implementations and inexperience. Our goal with this book is to impart some of the knowledge we’ve gleaned since beginning our Sitecore journey back in 1995. The Nonlinear Digital team has run more than a 100 Sitecore projects since then and with those years come lessons learned. We want to share those lessons and help shorten the learning curve for others looking to get the most out of the customer experience platform. The Nonlinear team includes 7 Sitecore MVPs—topping the list of North American Sitecore partners—and holds all 6 of Sitecore’s coveted specialization designations. In other words, we’re a company who knows their Sitecore. Wondering what drives Sitecore’s success? This is a good place to start.

How it works This book is meant to be a living document. It’s a selection of entries from our ongoing online publication series, Nonlinear Thinking, which is printed digitally and regularly updated with new content. The easiest way to stay up to date is to follow us at one or more of the following: @nonlinear_tweet +nonlinearcreations www.linkedin.com/company/non-linear-creations-nlc

We’ve divided the book into two sections: marketing and technology •

Articles in the marketing section address issues ranging from the statistical validity of Sitecore A/B tests to recovering organic search traffic after a botched relaunch.



Technology articles provide specific advice, often in detailed how-tos based on our real world experience, for Sitecore developers

Let us know what you think We hope this book is a helpful resource for all things Sitecore. If there is something you think we’ve missed, let us know. If you’d like to know more about either Nonlinear Digital or Sitecore best practices, don’t hesitate to drop us a line. We can be reached at: [email protected] DM to: @nonlinear_tweet + 1 877 654 0328

ii  |

www.nonlinearcreations.com

Chapter 1: Marketing

Driving return on investment (ROI) from your Sitecore deployment Molly Anglin Vice President, Nonlinear Digital

One of most difficult parts of selling your decision makers on a website renewal project is proving a return on their investment. Here are five keys to ROI for a Sitecore deployment: The biggest challenge for today’s digital marketer is the ability to demonstrate how their digital tools can provide real value to a company, beyond eye catching graphics, follower counts and impressions per click. Turning those buzzwords into measurable benefits that drive business strategy decisions is key; your website’s content management system is no exception. Proving to the C-Suite that an investment in a product like Sitecore has the ability to transform your web presence and spur a marked increase in sales and conversion rates is a constant battle. Here are five points to get you started:

1. Realizing the core benefits of the content management system There are several quantifiable financial gains that can be achieved through the implementation of a content management system (CMS). These aren’t necessarily unique to Sitecore alone, but are still important factors in calculating returns and in establishing a business case for the investment. A few examples:

Driving return on investment (ROI) from your Sitecore deployment

|  3 



Labour savings when introducing new features and functionality within a modern CMS can obviously be significant when compared to the same features implemented by hand or within an aging web content management (WCM) platform.



Productivity gains are also achieved through the use of an improved WCM user interface. With a simpler interface, non-technical users may gain the freedom to complete tasks that were once the domain of a development team. As a result, the time to launch new content and the frequency with which new content can be published can be much faster.



The enforcement of best practices, like well-formed HTML and a structure that lends itself to SEO best practices can ensure better visibility and traffic—even if the contributing content author doesn’t innately understand the recipe for a wellranked piece of content.

Forester Consulting, in conjunction with Sitecore, published a useful guide to calculating the total economic impact of implementing the product in which several of these concepts are explored. Through a series of interviews with real customers, they extracted anecdotal insights into what they found to provide the greatest value post-launch. The report also illustrates a detailed model for calculating ROI of the CMS investment.

2. Keeping design and build costs in-check Looking at the cost side of the ROI equation, we see a lot of benefit in not starting projects from scratch, especially if you’ve never done a Sitecore deployment before. Nonlinear is now offering our own site accelerator and UI framework called Keystone. Since establishing our Sitecore partnership in 2006 we’ve invested in building, refining and testing this set of tools intended to maximize efficiency. With every build, Keystone saves literally weeks of design, development and testing time by incorporating extensions to the Sitecore API, utilities to other common APIs such as Google Maps, preconfigured performance settings and a slew of useful components and templates. If you’re managing an in-house team gearing up to make your first Sitecore build, this will likely put your project much farther ahead and save you from potential configuration/development missteps.

4  |

www.nonlinearcreations.com

3. Embarking on a vertical adoption strategy Industry analyst Seth Gottleib has published his thoughts on CMS adoption, focusing on the idea that while widespread adoption is often held up as a measure of success in software development projects, decentralized publishing by large groups of authors doesn’t necessarily equate to a “good” website. Instead of the methodology he refers to as “horizontal adoption,” he points out that “vertical adoption”—essentially, the increased capacity by a smaller web team to understand and make use of the higher-level marketing functions available in today’s more advanced content experience management platforms—is key to driving value from the investment. If all you’re doing is tweaking and publishing content, Sitecore is likely not the product for you. However, if you do intend to make use of the whole Sitecore solution—the content management system and digital marketing system combined—some extremely powerful, measurable financial gains can be achieved. Tracking and acting upon engagement metrics, centralizing cross-channel performance data within the product, and using this information to optimize your site(s) really works, as explored in Sitecore’s whitepaper, Marketing Gold: Connecting Integrated Multichannel Marketing with Business Growth.

Driving return on investment (ROI) from your Sitecore deployment

|  5 

4. Fostering a culture of measurement Many of the web teams I’ve met over the years have great intentions. They inherently understand the areas where the returns I’ve mentioned above are possible. Where they fall down is in cementing executive-level understanding and support. Oftentimes, the once beautiful website with the high-end CMS languishes unused post-launch for several years until there’s no choice but another rip-and-replace. A considered approach to change management, with a C-Suite level executive sponsor at the helm, is necessary in fostering this understanding and the backing to realize vertical adoption within the web team and encouraging an ongoing cycle of improvements. This isn’t an overnight change. To move towards a more analytically-astute company, I particularly like Stephane Hamel’s Web Analytics Maturity Model—a measured approach to leaning to crawl, walk, then run.

5. Embracing a continuous improvement cycle Limiting the estimation of ROI to the gains you get as a result of a big bang re-platforming effort, without considering the possible gains as a result of ongoing improvements, may be leaving out a BIG part of the equation. With the team trained to make use of higher level marketing functions and a metrics-friendly corporate culture in place, you are now poised to get down to the real tuning effort. These five considerations are a good start to begin creating a strong case for investment in a CMS solution like Sitecore. Once your organization has decided on a deployment, the next step is finding the right partner. When you come to that step, reach out to our Nonlinear Digital team and we can get you started.

6  |

www.nonlinearcreations.com

Three warning signs to be aware of during a Sitecore implementation Glen McInnis Vice President, Technology, Sitecore MVP

The last thing you want once you have committed to a Sitecore implementation is to start noticing issues midway through. Be sure to watch for these three warning signs. Finding just the right balance between an agile-inspired project that involves constant, deliberate reincarnation and a miscommunicated one that suffers from a lack of vision is a more difficult task than you might think. Undertaking a large Sitecore project is both a lengthy and costly endeavor that no one on the team wants to be the one responsible for slowing down. Having been a part of hundreds of Sitecore implementations, enhancements and, yes, rescue missions (likely as a result of one, if not all of these three consider­ations) we’ve got an insider track on which elements of your project to keep a close eye on.

1. Your business stakeholders/content authors aren’t trained Making informed decisions during a project requires some knowledge of the product. You don’t need to be an expert, but it’s unfair to ask business stake­holders to make choices when they have not been trained or had the chance to get their hands on the product. To increase the likelihood of success, consider including early training, demonstrations and hands-on time with either the product or early prototypes.

Three warning signs to be aware of during a Sitecore implementation

|  7 

2. Your non functional requirements are too vague While statements like “ease of use,” “fast page load” and “beautiful design” are commonly expressed as must haves for a CMS solution, it is critical that these elements are qualified into actionable tasks for the development team from the get go. Without narrowing in on the specifics for these non functional requirements, you will run into the trap of not knowing what they are looking for or when you’re done.

3. Your content strategy is taking a backseat to “whiz bang” Ultimately it’s content that will deliver value to your customers and visitors. Project teams that get locked into long conversations about pixel alignment and other small functional details run the risk of losing sight of the end user. If there is some concern that the functionality or design is “not quite right,” don’t get caught in the spiral of guessing how users will react. If you consider the experience to be pretty good, launch it; test it, and then decide if you need to do something to improve it. If you’re not comfortable with the release, you can always organize a facilitated usability test. These approaches will give you real feedback and will be cheaper than having a CMS developer re-code the same functionality time and again.

8  |

www.nonlinearcreations.com

Accessing Sitecore analytics with Microsoft BI tools Glen McInnis Vice President Technology, Sitecore MVP

The ability to drill down into the data collected from your Sitecore implementation is crucial in understanding your customers and making the most of your website. We teach you to do it using a familiar Microsoft product, Excel. The challenge with most data analytics packages is how to best expose the wealth of information to the marketers and owners of a site. While pre-built reports can provide an overview of user behaviour, any true insight will require a certain amount of drilling down into the data. This chapter will give you the ability to capture Sitecore DMS analytics using familiar Microsoft BI tools.

Introduction We are going to start with the most familiar Microsoft BI tool—Excel. By enabling the Power Pivot add-on for Excel, our boring spreadsheet becomes a powerful data analysis tool.

Importing data The first step is to connect Power Pivot to your analytics database. For the sake of simplicity at this stage, you will want to import all tables. The result in Power Pivot will be a tab for each table in the database. In the following screen capture you can see

Accessing Sitecore analytics with Microsoft BI tools

|  9 

the import of the pages table.

Grouping by periods of time Of note in this screen capture is the DateTime column. The pages table (and many others in the analytics database) contain date and time information that goes right down to the second—5/29/2013 8:08:46. While that level of detail might be helpful, in most cases we will need to summarize information for weeks, months, quarters, and years as opposed to by the second. Let’s assume we want to report on a month-by-month basis. To do this we can introduce a calculated column Month based on the formula =MONTH([DateTime]). This will add a column to the table that has the corresponding number of the month (January = 1, December = 12). A nice feature of the calculated column is that once introduced, the data from the database can be refreshed and the column will persist.

10  |

www.nonlinearcreations.com

To make the final experience even easier we can also introduce a lookup table called TimePeriods.

By creating a relationship between TimePeriod.MonthNumber and Pages.Month we can add another calculated column to Visits that present the friendly name of the month. This is done using the RELATED formula like so =RELATED(TimePeriods[MonthShortName]). This same pattern can be continued to tag rows with Full Month Names, Quarters or other time periods.

Graphing visits Now that we have nice clean data, a Pivot Chart with Slicer for Item Language and Country allows a user to look at visits over a set of months and segment by country of the user and the language of content accessed.

Accessing Sitecore analytics with Microsoft BI tools

|  11 

This is a simple example of how Excel and Power Pivot can be used to report on data in DMS. While powerful, the first setup of the tool does require understanding of data models and BI concepts. Once created the reports can offer a very granular level of analytics that may act as a stop-gap for your site feedback needs.

12  |

www.nonlinearcreations.com

Eliminating cart abandonment with Big Data and the Sitecore DMS Glen McInnis Vice President, Technology, Sitecore MVP

Cart abandonment is one of the worst possible outcomes for online retailers. Finding the right methodology for getting consumers back on to their site to complete the conversion is always top of mind. Two of the most popular Big Data case studies involve HP flagging high-value employees at risk of quitting and Chase identifying customers about to jump ship for another bank, which evokes justifiable excitement from companies in every industry. The catch is that most organizations lack the skilled people needed to tap into this potential. The job title of data scientist is the most recent moniker applied to these seemingly mythical creatures, but don’t despair. Instead of spending your days on a quest for a fairy tale character, build on the team you have and start small.

Making Big Data work for you Let’s start by breaking down the skills of the data scientist: part software engineer, data analyst, statistician, business analyst, marketer and corporate strategist; that’s a lot to pack into one employee. If you are working with Sitecore’s Digital Marketing System, you’re in luck! Your team will already have many of the tools they need to personalize and test your web, mobile and email channels. If you add in the data from your customer relationship manager (CRM) and whatever finance application you use, you can get a fairly well-rounded view of your customers.

Eliminating cart abandonment with Big Data and the Sitecore DMS

|  13 

Fixing the abandoned shopping cart issue Imagine this: you are looking to reduce the rate of abandonment for a conversion flow like a shopping cart. Ideally, you’ve addressed the issue of increasing conversion, and have already A/B tested the experience, exhausting all major opportunities for improvement. It’s your hope that if you can further segment the audience, you’ll be able to glean more precise insights from the data. This kind of analysis requires combining the data from three sources: the DMS, a CRM database and your finance tool (while this may sound complicated, don’t worry—we aren’t going to recommend you to go buy Hadoop!). The good news is that the technical members of your team probably already have access to the great ETL and OLAP tools in the SQL Server or Oracle database platforms that are running your Sitecore solution. Once you have that data, the analysis of it can be accomplished using traditional BI tools or in many cases, Excel with Power Pivot. Back to our example: once your data and business analysts start to segment the cart abandonment, it is discovered that one sub-group of users is largely responsible. This abandonment happens once the shipping address is entered and the total cost of the order is displayed. We know that these users fit the DMS persona of “Casual Shopper,” place an average of two orders per year, have an average order size of $100 and almost never return a purchase. When this information is presented to the business analyst, marketer or corporate strategist they make the reasonable assumption that the presentation of the final price drove the user away. Perhaps it was too expensive, or maybe they wanted to do a comparison elsewhere. Whether that assertion is true or not, is not as relevant as having a hypothesis that you can use to construct a targeted A/B test for these users like presenting shipping discounts, displaying the total price earlier, etc. If your team has the statistical knowledge, it may be possible to apply more complex algorithms to locate an actual correlation in the data, but this can be something you build up to.

14  |

www.nonlinearcreations.com

It’s easier than you think All this to say, a small team of professionals can offer the same benefit as the mythical data scientist; you just need to set aside the time for these people to create that common ground and to put in place some basic tool skills: •

Software developers will need working knowledge of the ETL, OLAP technologies embedded in SQL Server or Oracle



Data and business analysts will need working knowledge of BI tools like those found in Microsoft Excel or a suitable third-party tool;



A base level understanding of statistics across the board can be helpful, but not necessary (you will notice we did not actually talk about statistical analysis in this example)

With the right technology and employees in place, any sized business can start making Big Data work for them.

Eliminating cart abandonment with Big Data and the Sitecore DMS

|  15 

Using public data to enhance DMS personalization in Sitecore Glen McInnis Vice President, Technology, Sitecore MVP

With all of the focus on collecting data from websites and other online sources, it is easy to forget about the data is that publicly available. If used strategically, it can be a wealth of information that increases the power of your Sitecore DMS. The ability to target specific audiences with customized engagement plans is one of the best features of the Sitecore DMS. While we have examined many ways that digital marketers can gather actionable data from their own website using the DMS, there is a rich source of relevant data that, when coupled with the DMS, can help in taking your campaign from a semi-pro attempt to full-fledged personalization: public data. Let’s start by taking a look at what data is available: •

Demographics: Most government organizations release detailed information on household income, employment, average age, family size, languages spoken, etc. This data is usually available down to the city or city-ward level in North America and most of Europe.



Events: Large concerts or conferences, statutory holidays, back to school and other such events can be used to adjust pricing and timing in campaigns. There is no one unified source, but the folks at www.eventful.com are trying.

16  |

www.nonlinearcreations.com

If you combine this information with geo-targeting, numerous possibilities open up: •

Those in the hospitality industry can use large events in a particular location to promote hotel rooms and restaurants



Education and training organizations might rely on employment rates to determine if users should be presented with continuing education vs. retraining for a new job



The demographic information can help identify lifestyle and life stage --

Average income and age might lead to presentation of basic or premium products

--

Average family size/age might lead to targeting of young professionals, young families, seniors, etc.

Once you get this data into the system, creating a custom DMS rule will let the marketing team take advantage of the information. Using the Sitecore DMS rules engine, you can start experimenting with different variables and combinations. I have included a screencap of an example rules set editor for identifying lifestyle and life stage.

A word of warning: do not rely on live feeds of public data always being available. If you are permitted to take a local copy of the data—do it.

Using public data to enhance DMS personalization in Sitecore

|  17 

The Sitecore DMS rules engine: Three cool ways to use it Amanda Shiga Vice President, Digital, Sitecore MVP

Finding the optimal conditions to use in your Sitecore DMS campaigns can be a challenge. We look at three of the coolest ways to use the rules engine to personalize content for your visitors. The Sitecore rules engine is the powerhouse behind Sitecore’s personalization capability. Similar to the Outlook-style rules wizard, the rules engine lets marketers build powerful clauses to influence content display based on a variety of conditions. One of the most straightforward uses of the engine is to personalize content based on a user’s geographical location, translated from their IP address. In the example below, a promotion targeted to residents of Toronto could be shown for this condition.

18  |

www.nonlinearcreations.com

You can also personalize content on a variety of other useful characteristics and events, such as visitor profile, achievement of a goal, search term or a visit to a specific page. However, did you know that there are other cool ways the rules engine can be used for personalization within Sitecore’s Page Editor? Here are three examples to get you started. NB: The examples below all use the rules that come with Sitecore out-of-the-box.

Influencing business logic and calls to other systems One of the most interesting ways you can use the rules engine is to influence logic based on the wealth of visitor information you have at your fingertips.

When you have known, logged-in users Explicit personalization, when content is personalized based on known characteristics of users, is often implemented in code. However, tying this logic to the rules engine instead allows content authors to adjust it without needing to rely on developers or messing around with code. For example, using the conditions below, you could personalize content based on: •

Where user profile specific field compares to value (for example, targeting content to users with specific interests or from a specific member segment)



Where the current user is a member of the specific role (for example, targeting content based on a user’s security memberships)

When you are integrating with another business system or platform, such as your site’s search engine

This is a wonderful opportunity to use the rules engine without even knowing specifically who the visitor is. You can influence the underlying business logic as your anonymous visitors begin to build a behavioural profile simply by taking actions on your site. A great example is influencing calls to a search engine (via API or webservice). Some search engines allow search or ranking profiles to be specified that rank search results differently. For example, for a visitor whose behaviour places them in the “outdoor

The Sitecore DMS rules engine: Three cool ways to use it

|  19 

enthusiast” search profile for a travel website, you could boost the ranking of results with metadata related to outdoor activities. If the Sitecore control that calls to the search engine stores the search parameters within the associated item, then we can create several Sitecore items—one for each search profile—and personalize the call to the search engine. Thus, if our anonymous visitor is building an outdoor enthusiast visitor profile, we can use the rules engine to swap in the corresponding Sitecore search profile item for our call to the search engine and influence the search rankings, all in real-time.

NB: This approach will also require you to do the legwork of setting up your visitor profiles and pattern cards. As a rule of thumb, abstracting useful logic driving variables into item fields leaves flexibility for future personalization as well. This idea can also be applied to any API call or webservice call.

Temporally-based personalization Many of the rules in the rules engine refer to the context of the current visit. Unless you decide to load a visitor’s historical browsing activity into the current session (a small coding activity, but with some potential performance trade-offs), you won’t be able to personalize based on time passing or return visits. Luckily, there are some out-of-the-box rules that allow you to serve content for visitors who visit often, or who have returned after a specific amount of time (or both). An example might be offering a reward coupon to a visitor on their tenth visit.

20  |

www.nonlinearcreations.com

Some quick background: Engagement plans are a feature of Sitecore DMS that allow you to map out a visitor’s engagement journey, over time, with your online channel(s). These plans also allow you to configure automatic touchpoints with these visitors based on elapsed time or specific event triggers. Two examples: 1.

Where the current visitor is in the specific state of an engagement plan. Here, we can personalize based on a visitor’s position in an engagement plan. If you set up the transitions in your plan based on time elapsed, you can isolate whether a visitor is returning a certain amount of time after their previous visit. This is especially helpful if you are personalizing content based on visitor recency.

2.

Where the visit no. compares to number. Here, we can personalize based on how many times a visitor has returned to the site. This is helpful if you are personalizing content based on visitor frequency.

Leveraging social network information This option requires the Sitecore Social Connected module and, assuming users consent to the use of their information upon logging into a site with their social network credentials, allows personalization on a vast array of known profile fields, such as: •

gender



number of Twitter followers



skills listed on LinkedIn



birthday, relationship status or interests on Facebook

The Sitecore DMS rules engine: Three cool ways to use it

|  21 

Sitecore personalization: Use Google Analytics to measure results Eduardo Moraes, Solution Architect, Sitecore MVP

Antoine Rulliere, Project Manager

The ability to personalize content based on particular conditions or metrics is what sets the Sitecore DMS apart from its competitors. Integrating it with Google Universal Analytics makes it that much more powerful. The Sitecore DMS makes it easy to configure personalization of content based on a myriad of different variables. As long as your site has been properly configured, content authors can define different conditions for what content gets displayed. Some of the more useful (in our experience) conditions against which you can personalize are: •

Automation state: in relation to where the visitor is in a given engagement plan in Sitecore



Events: when the visitor has achieved a specific goal on the site



GeoIP: according to the geographic location of the visitor



Profiles and patterns: according to the visitor’s behaviour (content visited on the site) and pre-defined profiles and patterns



Visits: according to pages visited, campaigns triggered, visit value points accumulated, as well as number of accumulated visits



Security: defined by the security settings of the item and user access



Workflows: depending on what state of a workflow an item is in

22  |

www.nonlinearcreations.com

All of these conditions can trigger the event that will select the content to be displayed. However, it may be difficult for content owners and the marketing team to verify the real results of such personalization happening on their website. This is where Google Analytics integrated with Sitecore can change the game. According to recent reports from BuiltWith.com, Google Analytics is used in over 43% of the top 1 million sites on the web. And now, with a more powerful APIs in Google Universal Analytics, it makes it even easier to get integrated with Sitecore and provide meaningful reports that can help clients to make better decisions, on top of the customizations already configured with the DMS. Though there are a number of other methods for reporting in the Sitecore DMS, the powerful and familiar Google Analytics interface often comes out on top for ease of use and superior capabilities.

What is Google Universal Analytics? Google Universal Analytics is an extension to the well known Google Analytics. It allows seasoned users to customize the data captured as well as the reports that are generated based on that data. It relies on two key concepts: •

Custom dimensions: A dimension is a characteristic of a visitor: ex. city of visitor



Custom metrics: A metric is a value tracked for a dimension: ex. number of visits, frequency of CTR on a specific advertisement Visits (metric)

Clicks on specific ad (metric)

London

345

12

Paris

123

6

Ottawa

110

8

City (dimension)

Before you can truly harness the power of Google Analytics, you have to think through and map out the reports you want to generate, including the required dimensions and metrics. This is where you can start to see the value of integrating with the Sitecore DMS. Say you want to track metrics on a specific component with a corresponding call to action that’s being personalized by the user’s country. Your report mapping would look something like this:

Sitecore personalization: Use Google Analytics to measure results

|  23 

Country (dimension) China

Times component A was triggered (metric)

Times the user clicked on call to action displayed in component A (metric)

1,234

87

United States

894

154

Brazil

712

54

India

709

76

England

345

56

Defining custom dimensions in Google Universal Analytics The key is to define the most appropriate custom dimension based on your desired metrics. To define a custom dimension, connect to your Google Analytics account and under Admin > Property > Custom Definitions select Custom Dimensions. This page now lists your existing custom dimensions, if any. Click on the New Custom Dimension button (you are currently allowed up to 20 custom dimensions), name your custom dimension, select its scope (Hit, Session or User; scope determines which hits will be associated with your custom value), then hit Create. Once you have completed these steps, you will be presented with the code snippet you need to add to your code in order to track that new dimension. You now need to define your custom metrics. To do so, follow all of the previous steps laid out for creating Custom Dimensions but this time, select Custom Metrics. Give it a name, select a formatting type (Integer, Currency or Time), and again Google will generate the code snippet you need to use to track the metric. In our example above, you would need to create the Country dimension and the two required metrics. You would then inject the corresponding code snippets into your Sitecore code. The last step is to create a custom report. To achieve this, you need to click on Customization in the main navigation which should land you on the Custom

24  |

www.nonlinearcreations.com

Reports page. Click the New Custom Report button, give your report a name and select the custom dimensions and metrics you just created. This will give you the basic custom report proposed in our example. Voila! Be aware, you can’t delete metrics and dimensions you’ve created, you can only make them inactive.

Sitecore DMS + Google Universal Analytics: Putting the pieces together The first step to integrate the DMS with Google Universal Analytics is to understand which dimensions and metrics you want to capture. As evidenced in our example, you must first identify the moment of personalization and then determine which content is being displayed. The best way to do that in Sitecore is to work with its pipeline and overwrite its event with custom code that can add the necessary Universal Analytics snippet code to the page being rendered. Page views are captured using the snippet: ga(‘send’, ‘pageview’); For each page view we will also send the relevant dimensions and metrics related to the content we want to track. In our case, we want to track the visitor’s country as a custom dimension. As we have up to 20 dimensions in Google Analytics, for each dimension being tracked we need to provide its index (as it is configured inside Analytics’ admin interface). Assuming that country is our first dimension and component displayed is our second dimension, for a visitor from China being presented with component A, we will have: ga(‘set’, ‘dimension1’, ‘China’); ga(‘set’, ‘dimension2’, ‘A’); ga(‘send’, ‘pageview’); The values for the dimensions as well as for the metrics to be associated to each dimension can be retrieved from Sitecore DMS using its API. Also, click events on the component need to be captured so you can measure how many times the components’ personalization was displayed and also clicked.

Sitecore personalization: Use Google Analytics to measure results

|  25 

The capabilities of both Sitecore’s personalization through the DMS and Google Universal Analytics are continually evolving and are sure to present further opportunities to segment, target and track customers in the future. The ability to create a customized, measurable customer journey will allow digital marketers the freedom to market in a whole new way.

26  |

www.nonlinearcreations.com

Statistical relevance of A/B tests in the Sitecore DMS Glen McInnis Vice President, Technology, Sitecore MVP

If your A/B test has failed to meet statistical relevance, you may be working on assumptions that are untrue, or somewhat misleading. Be sure to find out before you put your Sitecore DMS A/B results into action. Many marketers tend to forget that an A/B test is only as effective as its sample size and statistical relevance. It can be tempting to run a test for a day or a week, and based on a noticeable difference in conversion, pick a winner. However, in doing this the chance that your decision will actually stand up over time is quite low. Ultimately you need to know when your test has collected enough data to be a realistic prediction of user behaviour or, in math geek parlance, the test is significant. There are volumes of academic texts filled with guidelines for determining the appropriate sample size for statistical relevance. While we don’t need to wade into those deep waters, there are two key decisions you do need to make. The first is what confidence level you want to have in your test. Analytics guru Avinash Kaushik recommends that you shoot for a 95% confidence level and who are we to disagree? The second thing to keep in mind—the smaller the change in conversion you are expecting to see, the larger the sample size you will need. This means that your first tests of the “obvious” improvements require a relatively small test size, while later micro-improvements will need a greater level of testing.

Statistical relevance of A/B tests in the Sitecore DMS

|  27 

Statistical significance in Sitecore The method for determining statistical significance varies depending on what software or program you are using to conduct your A/B tests, and as we are big fans of Sitecore, we will use their Digital Marketing System for our example. If you have worked with Sitecore in the past, its possible that you have encountered issues with this particular analysis, but never fear, we are here to help. In this screenshot from the DMS all you can see are the components and the engagement value that have been delivered. If we know the values assigned—in this case we assume a value of 1—then we know that Option B had 60 conversions and C had 20. If we assume that each of the three options was shown an equal number of times and the source page was delivered a total of 4,000 times we will see that conversions are:

Seen

Converted

Conversion

B

2,000

60

3%

C

2,000

20

1%

Using this data we can perform a one or two tail test on the experiment to determine a few different things: if you are looking to prove that C is better than B, use a one tail; if you are simply looking to confirm that C is different than B, use the two tail test.

28  |

www.nonlinearcreations.com



The pooled sample p = (20 + 60) / (2,000 + 2,000) = 2.00%



The standard error SE = 0.0044 --

Your Excel formula is =SQRT(p*(1-p)*(1/n_1+1/n_2)))

--

The value of t works to 4.5175

The t-value in this equation signifies the probability of the sample size is significantly different enough between the two conditions to be statistically significant. The value of this particular t, 4.5175, shows the experiment to be highly significant using both one and two tail t-tests.

Statistical relevance is important, but so is context A word of caution: while statistical significance is important, if used improperly it can give you and your stakeholders a false confidence in your results. For example, if you know there are seasonal variations in your user behaviours keep in mind that a statistically valid test of users in the summer months may not apply to users in the winter months; understand what sample of your population a test is reaching. As we have shown, there are many misattribution errors that can occur when conducting A/B tests. If we have piqued your interest in undertaking some A/B testing of your own, but are a little stumped by all of details, get in touch and we can help you figure out what you need to know to start seeing serious A/B testing results.

Statistical relevance of A/B tests in the Sitecore DMS

|  29 

Four steps to extract engagement value from Google Analytics Randy Woods President & co-founder, Sitecore MVP

Determining an engagement level for the visitors who come to your website is becoming increasingly important. Find one for your visitors by extracting an engagement value from your Google Analytics. A marketer’s ability to determine the value of a visit to a website is critical to effectively managing online marketing and promotions, but creating a model that accurately assigns an engagement value to specific content or actions is damnably difficult. Top down models may or may not be accurate—either way, it’s very difficult to know. The alternative—a data-driven model—requires machine learning development skills to which few marketers have access (making it an ideal addition for a marketing technology like the Sitecore DMS). At Nonlinear, we use Google Analytics data as an alternative. It’s far from perfect, but it does provide real, datadriven insight into content value and should form the starting point for anyone contemplating the creation of an engagement plan model.

30  |

www.nonlinearcreations.com

Page value as a starting point Google Analytics calculates a variable it calls “page value.” Google describes page value as: The average value for a page that a user visited before landing on the goal page or completing an ecommerce transaction (or both). This value is intended to give you an idea of which page in your site contributed more to your site’s revenue Is this the same as engagement value? No, it doesn’t cross multiple sessions and so gives limited insight into content that may be an intermediary to driving conversion on later visits, but it should be considered a starting point.

Making it work—a step by step guide Using our own Nonlinear Creations data, I will show you each step involved in using Google Analytics’ page value to help in the creation of an engagement model:

Step 1: Create goals in Google Analytics and assign them value

If you have not already done so, your first step is to enable goals in Google Analytics; that’s the easy part. Now assign a value to the goal’s outcome: if your goal is not a straightforward transaction, but a newsletter registration or whitepaper download or some other “soft” goal, you will need to invent a dollar value for each. This, alas, is not data-driven, so you’ll need to estimate the relative value of each outcome. The absolute value does not matter for the purposes of engagement value planning.

Step 2: Export “site content” for converting visitors Your objective in this step is to get the data you need into a spreadsheet where you can make it work for you: •

Select at least one quarter worth of data. In this example, we chose a six month time slice.



Select “Visits with conversions” from Advanced Segments.



Navigate to Behaviour > Site Content > All Pages. Show at least 500 rows, and then sort this data by page value.

Four steps to extract engagement value from Google Analytics

|  31 

You should get a report that looks something like this:

Export this data for use in Microsoft Excel.

Step 3: Massage the data in Excel With this step, you will drill down further into the data to create a functional datasheet with only the most relevant data: •

The resulting spreadsheet will include some data that is not relevant to your objectives; delete that, along with the time header information that Google Analytics inserts into the file and the data summary at the bottom of the page.



Filter the data to exclude any page receiving fewer than 10 page views (you may choose a higher number if your site has higher traffic volumes).



Finally, eliminate any content that is mandatory for the objective to be achieved. For example, one of the objectives for Nonlinearcreations.com is to encourage whitepaper downloads; any download automatically generates a thank you page, so these, of course, will be highly correlated with our objective. Filter the spreadsheet to eliminate these “tautological” content pages.

32  |

www.nonlinearcreations.com

Step 4: Create your engagement value

The objective of this stage is to give you a single value for key pages that you can apply using a system like Sitecore DMS. It will be based on the page value—and you could just use this figure—but we have found it easier to convert the dollars presented by Google Analytics into a number based out 100. To do this, create a formula in the column next to that labelled page value. This formula should divide the page value of that row by the largest page value in the column and multiply it by 100.

Four steps to extract engagement value from Google Analytics

|  33 

This will give you a score ranging between 0 and 100 that you can use as the basis of your engagement model. You will probably find that most of the scores make intuitive sense, but be prepared for some surprises.

Limitations This approach has limitations as a model for the value of specific content: •

It is based on conversions that happen within a single visit. As a result, content that contributes to conversions on a subsequent visit is undervalued. This is particularly important for organizations that have a long or considered sales cycle.



It represents a single slice of time and it needs to be updated frequently. Your site changes and the dynamics of those visiting change. The model you create today may not reflect the reality of tomorrow, and the differences can be dramatic, as evidenced here in some of the numbers from our site:

Page

Engagement value based on data Oct 2012–March 2013

Engagement value based on data April–Sept 2013

Executive bios

64

12

SEO and CMS

84

100

Intranet

83

96

100

5

governance CMS audit and assessment •

It’s not very subtle and creates an average score across all visit types. Visitors who originate from different sources behave very differently. Calculating engagement values using the model described here averages these different behaviours. To avoid this, it’s possible to perform this same analysis using multiple segments—new visitors vs. repeat visitors, or paid search vs. organic search, for example. Consider the following table outlining the paid vs. organic search engagement values for pieces of content on Nonlinear’s site:

34  |

www.nonlinearcreations.com

Engagement value— Paid search visits

Engagement value— Organic search visits

100

9

Visio stencils

67

26

Front end

8

43

42

89

Page Choosing ECM technologies

development is crucial Best practices for Sitecore blog post While this limitation can create issues for some specific analyses, it is not an uncommon one among marketing technology projects; they often restrict the user to one engagement value per page or action.

Four steps to extract engagement value from Google Analytics

|  35 

When A/B tests lie: The imperative of persona analysis Randy Woods President & co-founder, Sitecore MVP

Ensuring that your A/B test is measuring what you think it’s measuring and in a way that will ultimately provide good intel on visitor motivations is crucial. Make sure you know what you’re looking for. A successful A/B test can be both absolutely true and completely misleading. Marketers have been rapidly adopting A/B (and to a lesser extent) multivariate testing to both landing pages and less frequently, corporate websites, and for a very good reason—doing so provides a simple data-driven method for increasing the value of marketing dollars. And for most organizations, a simple A/B test plan will generate positive returns. But it is critical to understand that this kind of testing is a blunt instrument that coarsely measures winners and losers. By definition, an A/B test compares how a statistically significant sample of visitors reacts to two “calls to action” or some other piece of content. It measures their reaction against a single outcome. This implicitly assumes that all of the visitors in that statistically significant sample are “the same.” But we know that in almost every case, this is an over simplification.

Misleading A/B testing success: An example Consider an automotive manufacturer that has a website designed to generate leads. Their current call to action boasts a respectable 8% conversion rate meaning that

36  |

www.nonlinearcreations.com

7 out of every 100 visits to the site becomes a lead. The marketing director implements an A/B testing program to try to improve this figure. They test four new variants, each of which emphasizes a specific aspect of the vehicle: •

Test A highlights the safety record of the vehicle



Test B highlights the vehicle’s power and performance specifications



Test C focuses on the opulent interior and high-quality finishings



Test D speaks to best in class fuel economy

Each test is exposed to 50,000 different visitors. The end result is clear: Test

Conversion Rate

Conclusion

Test A: Safety

10.1%

Winner

Test B: Performance

7.2%

Loser

Test C: Opulence

3.3%

Loser

Test D: Fuel-efficiency

8.4%

Statistical tie with control

Probing deeper—personas and A/B testing When building their site, the marketing director spent a lot of time crafting personas—different “types” of visitors to the site with differing motivations, interests and emotional attachments to the brand. They derived the following personas: •

The soccer mom



The performance-oriented buyer



The economically-constrained buyer



The environmentally-engaged buyer



The luxury-buyer

Perhaps not surprisingly (as I’m creating this example and I need it to illustrate my point), these different personas responded very differently to the variants tested.

When A/B tests lie: The imperative of persona analysis

|  37 

Persona

Sample size

Conversion rate Test A: Safety

Test B: Performance

Test C: Opulence

Test D: Fuel-efficient

Soccer mom

2,390

15.0%

3.0%

2.0%

9.0%

Performance-

1,357

5.0%

17.0%

4.0%

2.0%

850

6.0%

3.0%

0.4%

17.0%

Environmentally- 113

5.0%

0.8%

0.2%

23.0%

8.0%

11.0%*

21.0%

2.0%

oriented Economicallyconstrained

engaged Luxury buyer

290

*Note: You need to be really careful with statistical validity when you start looking at sub-segments. The 11% conversion for luxury buyers viewing the “performance” test is right on the edge of statistical validity (32 of 290 visitors converted vs. 400 of 5,000 visitors for the control ~ 95% statistical certainty.) Clearly, Test A is the best option only for the largest persona group—the soccer moms. All of the other personas would convert better if presented with one of the other offerings. In fact, if the winner for each persona was implemented, the overall conversion rate would hit 16%. That’s double the control figure and 4.5% better than the nonpersona adjusted winner. Critically, the number of leads from the highly lucrative luxurybuyer persona almost triples.

38  |

www.nonlinearcreations.com

Great, but how do I get the breakdown by persona? And how can I target the call to action? I’ll be dedicating my next blog to these questions. But here is the short answer: Purchase and implement a marketing-aware content management system such as the Sitecore Customer Experience Platform. It will let you: •

Automatically categorize a visitor as a specific persona based on their behaviour



Personalize calls to action to specific behaviour profiles

When A/B tests lie: The imperative of persona analysis

|  39 

Getting to know your visitors: A/B testing and persona analysis Randy Woods President & co-founder, Sitecore MVP

While A/B testing has the capability to be a silver bullet during personalization based on personas, you must remain vigilant to ensure that your tests are giving you the information you require, as opposed to the information you desire. The previous chapter argues that it is critical to analyze A/B tests by how individual personas react to the content being tested. Determine which variation wins for each persona and then target that variant to the right visitors. I hope the logic for this is clear: not all visitors have the same motivations and relying on one “best” call to action for all personas won’t deliver the most optimal results, but actually doing this is a little tricky. It raises many questions, but most urgently these three: 1.

“How do I categorize my visitors into personas?”

2.

“How can I combine this data with A/B test information for analysis?”

3.

“Once I have a winner for a given persona, how do I show that winner to that persona and only that persona?”

40  |

www.nonlinearcreations.com

Categorizing visitors into personas Visitors provide you with many clues about their interests and motivations which can be identified by: •

The search term they use to find the site



The terms they punch into your site’s search engine



The content they view while visiting your site

If they have been in contact with you already, you may also have explicit knowledge about their job title or main interest. The non-technical challenge is to build rules that will assign a visitor to a given persona based on these “clues.” For example, a site selling software might determine that they have five personas of import: •

Technical buyers



Business buyers



Existing customers



Shareholders



Job seekers

Visitors who spend most of their time on the site reviewing job descriptions can probably be assigned to the “job seekers” persona, unless they then go on to spend a substantial amount of time reviewing last year’s financial statements, then you might declare them a “shareholder.” Determining these rules does depend on intuition and insight, but should also be informed by a deep probing of your web analytics system. It will, at the very least, tell you if the segment you’re contemplating exists. The technical challenge is translating these rules into reality. You need some mechanism for applying these persona categorization rules and it will need to operate in real-time if you intend to use it to personalize content.

A marketing-enabled content management system In the last three years, web content management software vendors have shifted their focus from publishing content to making content drive business outcomes. There are a number of players in this space, but we have found Sitecore’s Customer Experience Platform (XP) to be one of the best. A marketing-enabled CMS like Sitecore XP allows authors to specify into which persona a visitor to the page they have published should fall. Sitecore not only achieves the implementation of this concept, but succeeds at doing it subtly as well. Any visit to any page can add “points” to multiple personas. So an author publishing an overview of a software product’s features might

Getting to know your visitors: A/B testing and persona analysis

|  41 

give visitors five points each in the “technical buyer” and “business buyer” personas. When publishing the technical specs page, they might assign ten points to “technical buyer”. The key point is that application of the persona-categorization rules is: •

Marketing driven—it’s performed by those creating and publishing content



Intuitive—no coding is required

Google Analytics: A less than satisfactory fall back position

If you do not have access to—and are not likely to gain access to—a marketing-enabled content management system, then you can get some insight into how personas behave on your site using Google Analytics. Create new “segments” within the Google Analytics Advanced Segments section that map to your personas. Define the segment by the content visited. The following screen-cap shows the rules we created at Nonlinear to identify visitors who may have an interest in our digital services. We did the same for our potential enterprise client persona.

42  |

www.nonlinearcreations.com

While it does give you some insight, this approach has a number of drawbacks compared to Sitecore or a comparable system: •

You may double (or triple or quadruple) count visitors. The same visitor may be categorized into more than one persona if they meet the criteria



It can be exceedingly laborious to set up the rules within Google Analytics, particularly if your site’s information architecture does not parallel your defined personas



An analyst must update the definitions whenever new content is added or removed from the site



Perhaps most critically, you will not be able to use the segments you have defined to drive real-time delivery of personalized content meaning that this is an analysis only exercise

Combining persona data with A/B test results for analysis Unfortunately, this process is not as straight-forward as one might hope. Marketingenabled CMS products like Sitecore have placed a priority on making it easy for authors to implement personas and design and implement A/B tests. They have spent much less time focusing on how analysts can understand the results. And yet this is absolutely critical—without access to the numbers there is little point in personas, A/B testing or personalizing content delivery. Nonlinear takes the position that the majority of organizations already have a web analytics system in place. In most cases, they have personnel trained on that system and it makes little sense to ask them to learn something new. If you do elect to use the Google Analytics segmentation approach described above, you are in luck. The one significant advantage this approach provides is that analysis is easy. If you conduct A/B tests using Google Content Experiments, you can segment the results using your Advanced Segment definitions. This should be straight-forward for any intermediate Google Analytics user.

Getting to know your visitors: A/B testing and persona analysis

|  43 

Taking action by targeting calls to action to specific personas Fortunately, if you have a marketing-enabled CMS like Sitecore, this is entirely straight-forward. Once you have analyzed your A/B test results by persona and identified the relevant winners, simply use the built-in personalization capabilities to ensure the most powerful call to action for each persona is the one that gets displayed.

If you have used Google Analytics to monitor personas and conduct A/B testing, you will need to write some very clever code—and embed it throughout your site—to put the highest performing calls to action in front of each persona.

44  |

www.nonlinearcreations.com

How to recover from search traffic decline after launch—part 1 Randy Woods President & co-founder, Sitecore MVP

Launching or relaunching a website is not a task for the faint of heart. Fears about losing search traffic are very real, as we’ve discovered during client engagement. We teach you how you can identify this problem. Ever wonder what a marketer’s deepest darkest nightmare looks like? Let us lay it out for you: after months and months of time, effort and money, you relaunch your new website, and traffic from Google and other search engines plummets by 50%. Terrifying. As you all know, this isn’t supposed to happen. Nonlinear has redeveloped and relaunched hundreds of websites for our clients since 1995. We’ve developed a lengthy checklist designed to preserve and possibly improve visibility of the site in the major search engines, but from time to time it does happen, whether due to timelines, budget or the inexperience of the development team.

Sometimes nightmares do come true Unfortunately the content of this chapter is not a theoretical exercise—the approach described in this chapter and the next one in the series helped a Nonlinear client recover from a more than 50% decline in search traffic following the launch of their new site. Note: we did not build the new site.

How to recover from search traffic decline after launch—part 1

|  45 

Identifying the problem Your site can recover, but it requires rigorous analysis of data to determine the cause of the drop off in organic search traffic and patience while changes you make are indexed and influence search rankings.

Step 1: Export data from Google Webmaster Tools immediately

Google’s Webmaster Tools only provides insight into the last 90 days, therefore you need to export and store this data immediately. It will provide valuable baseline information that will help you determine what has gone wrong. Do this NOW.

Step 2: Check for the obvious

Is there any chance that you modifed robots.txt during your relaunch? Or made cross-site changes to your meta descriptions? To answer these questions, use Google Webmaster Tools by navigating to Crawl > Blocked URLs and then confirm that any URLs that are blocked are the ones that you want blocked #list specific folders robots are not allowed to index # Disallow:/Careers-to-be-deleted/ Disallow:/docs/

46  |

www.nonlinearcreations.com

Spot check pages on the site for no-index tags. This is as simple as right clicking, selecting “view page source” and then using “find” to search for the term index. If you find a problem, I would suspect that somehow a global search and replace or other broad, automated task changed tags across the site unintentionally.

Step 3: Identify which landing pages have suffered most

Usually when a site is relaunched, at least some content from the old site is replicated on the new site in some version of the same form. You need to determine if the search traffic decline occurred across the site or is concentrated on specific content. To do this, create an inventory that matches old pages with their new page counterparts. Use Google Analytics to determine search volumes for these pages both pre and post launch. Calculate the percentage decline for each page and look for patterns.

Step 4: Perform before and after segmentation of search traffic

You may also need to understand if search traffic declined for all of your audiences or only specific ones. Search engines like Google present different search results depending on the location and language of the searcher. It is quite possible—indeed it was the case in the recent Nonlinear engagement cited above—that the decline in search traffic is concentrated in one geography or language group.

Step 5: Obsess about Webmaster Tools data

The data provided by Webmaster Tools should let you quickly identify the underlying cause of the decline in your traffic. Start by looking at the following: 1.

Is Google indexing the site? --

Look to Google Index > Index Status to determine how many pages Google has indexed

--

Check Crawl > Crawl Stats to identify the number of pages indexed daily

--

Look to Crawl > Sitemaps to understand the percentage of your pages that the crawl is reaching.

2.

Identify the crawl errors If any of these reports suggests that your content is not being seen by Google then dig into Crawl > Crawl Errors. Note in particular if you have persistent server errors or a large number of “not found” errors.

How to recover from search traffic decline after launch—part 1

|  47 

3.

Do you have HTML issues? Look to Search Appearance > HTML Improvements to learn if your new site is using title tags and meta descriptions properly. Are you missing title tags? Do you have duplicate title tags? Are you missing meta descriptions?

4.

Are you showing up in the search results and no one cares? It’s possible that your site is appearing in search results, but the description provided by Google is not sufficiently compelling for prospective visitors to click through. Go to Search Traffic > Search Queries and export the data into a spreadsheet. Next, filter the data to identify high volume traffic with low click through rates (start by filtering on “above average” impressions and “below average” CTRs).

48  |

www.nonlinearcreations.com

Step 6: Capture your analysis

Completing this table will make your life easier: Is robots.txt blocking any URL? Did you find “no index” meta tags? Is the decline in search traffic concentrated on a small number of pages? Did search traffic decline primarily from one geography or one linguistic group? Is Google not indexing your site? Is Google reporting persistent server errors? Which HTML errors does Webmaster tools report? What percentage of pages with above average impressions have below average click through rates?

How to recover from search traffic decline after launch—part 1

|  49 

How to recover from search traffic decline after launch—part 2 Randy Woods President & co-founder, Sitecore MVP

We have helped you identify the roots of your search traffic decline, and now we’re back to give you some tips on how to fix your website and get it back up into the search ranking it deserves. You’ve identified that your website relaunch caused a dramatic decrease in traffic, now it’s time to fix it. Let’s go through some scenarios:

Robots and Tags Problem 1: Robots.txt is blocking URLs

The answer here is straight forward and fast—modify Robots.txt so that you allow indexing of all content. If you are not sure how to do this, delete robots.txt entirely.

Problem 2: Your site is littered with “no index” meta tags •

Is robots.txt blocking any URLs?



Did you find “no index” meta tags?



Is the decline in search traffic concentrated on a small number of pages?



Did search traffic decline primarily from one geography or one linguistic group?



Is Google not indexing your site?



Is Google reporting persistent server errors?



Which HTML errors does Webmaster tools report?



What percentage of pages with above average impressions have below average click through rates?

50  |

www.nonlinearcreations.com

Server issues, sitemap problems and 404 errors These issues should be readily addressable, although server errors may require significant investment to resolve.

Problem 3: The decline in search traffic is concentrated in one country or linguistic group

This is usually an issue faced by multilingual sites. Google is sometimes unable to effectively parse your site and deliver content in the language that searchers expect. This can be addressed by creating sitemaps (using sitemaps.org schema) that defines which content will be served to the search engines dependent on your site’s linguistic groups. While Google supports the rel-alternate-hreflan attribute, which can be added to the HTML on each page of the site, you’ll make your life easier by incorporating it into the sitemaps.

Problem 4: Google is encountering server errors

The answer here is simple—fix the server errors—but execution can be difficult. One tip is to look closely for patterns in the errors being reported. We’ve found in several cases that the “errors” being encountered are actually URL parameters being accidentally appended to URLs. These are usually transparent to visitors, but the Google indexer sees them as errors.

Problem 5: 404 errors galore

If you see more than a few 404 errors being reported, then it is most likely that you did not think through or execute a redirect strategy. To save the “link juice” associated with links that used to point to pages on your site, you need to redirect these using a 301 server redirect. Specific implementation details will vary with your server type, but we suggest one of two approaches (or possibly a combination of both): If most pages on the old site have been replicated essentially intact on the new site, then: 1.

Identify the top 500 to 1,000 404 errors reported by Google Webmaster Tools

2.

Manually map these to the new pages and implement on your server

3.

Create a catch all “fall back” rule for all other 404 errors pointing visitors to your home page

How to recover from search traffic decline after launch—part 2

|  51 

If the site architecture has changed substantially so that no one-to-one mapping of 404 errors is possible, then: 4.

Bucket the 404 errors being reported by Google Webmaster Tools into themes that do exist on the new site

5.

Create regex rules for creating 301 redirects that point all similarly themed 404 errors into a group that points to a new, comparable page

Page and structure fixes These will take some time to address and require ongoing effort. Effects of making these changes are unlikely to be immediate—so patience is required.

Problem 6: Google Webmaster Tools reports title tag errors

Title tags are generally considered the most important search ranking factor within the immediate control of the author. Duplicate, short, long or missing titles can kill your search traffic—particularly if your old site had unique, descriptive title tags. If you have a small number of pages (say less than 500), then take the time to manually craft title tags. If you have thousands or tens of thousands of pages, look into automating title tag generation. You might, for example, inject product names into the title tag, or replicate the page’s visible title (the title that is visible to visitors). In this case, you may still want to hand craft title tags for the 500 or so pages that garnered the most search traffic on the old version of the site.

Problem 7: Many of your pages have high search impressions but very low click through rates

This issue can eat at your heart—you have pages that are ranking well, but those searchers just won’t click on them. To change this you need to give them a reason to click, and this means crafting thoughtful meta descriptions. In most cases, search engines lift the “meta description” you include in your HTML as the body of the description returned in the search results:

52  |

www.nonlinearcreations.com

Doing this will take time and unfortunately, there are no short cuts. Look at the spreadsheet you made at the end of the previous chapter; pick the top 10 terms with the largest number of search impressions and low click through rates. Using incognito mode on your browser, enter the first term and click until you see your site listed, then identify the page listed. Go and write a brilliant meta description for that page and upload the page to your site. Then go to the second term, and repeat, and repeat, and well you get the idea.

Problem 8: Most of the decline in search traffic is explained by decreases in traffic to a small group of pages

It’s likely that your review of title tags or meta descriptions will explain this concentrated decrease in search traffic. But if it does not—and if these pages are not particularly subject to 404 errors—then we would encourage you to investigate how the internal linking structure on your site has changed. Did these pages benefit from large numbers of links from within your old site? And if so, has that changed? Of course, there is one other possibility: have you reduced the amount or quality of content on these pages? If you answer yes to that question, the decline in traffic may be understandable, and perhaps well deserved. You can avoid this fate by creating great content that helps potential visitors both find and appreciate the knowledge you have to offer, all while simultaneously raising your search rankings.

How to recover from search traffic decline after launch—part 2

|  53 

Sitecore 8: The leap to a strategic marketing platform Randy Woods President & co-founder, Sitecore MVP

This year’s Sitecore Symposium in Las Vegas featured a number of exciting announcements, chief among which was the introduction to Sitecore’s latest release. We take a look at Sitecore 8 and what we are looking forward to checking out. Sitecore rolled back the covers to reveal Sitecore 8 at the recent Sitecore Symposium in Las Vegas. It clearly marks Sitecore’s attempt to leap from a tactical solution to an online publisher and finally to a strategic solution to marketing needs in a connected world. Those two words—connected and strategic—appear to be core to the philosophy of the latest release. Sitecore is no longer solely interested in helping you run your website; they want to power all of the ways in which marketers influence the customer experience, and this requires connecting online and offline data sources in highly scalable ways, and then grouping that together with analytics to make sense of the data. Sitecore 8 makes progress on each of these fronts.

54  |

www.nonlinearcreations.com

Connecting data sources The experience profile, introduced in Sitecore 7.5, becomes fundamental to operating your website in Sitecore 8. It’s a single source of information about any given visitor and can be extended to include information about their activities on your website, on social networks, on third-party websites and through interactions captured in your CRM system. Sitecore 8 fully leverages the ability to selectively store client experience data in the cloud, which offers the promise of enormous scalability and a path forward for avoiding the infrastructure problems with which big data is fraught.

Finally—usable analytics Sitecore users have applauded the ease with which the system allows marketing tactics like personalization and A/B testing to be deployed, but criticized the reporting capabilities of the platform. It’s obvious that Sitecore listened to their customers and as such the analytics in Sitecore 8 mark a significant step forward. Highlights of the new release include: •

Well thought through reporting on A/B and multivariate tests that allow reporting against specific outcomes or against the overall “value” of a site visit as measured by engagement value.



Core reports that replicate much of what you can find within Google Analytics, but extend this to allow for the inclusion of custom variables—either extracted from the Sitecore experience database or appended from other systems. Importantly, it also allows you to understand how different types of visitors (personas or audiences) interact with your site.



Visual path analysis allow marketers to gain an understanding of how visitors navigate their site and which navigation paths drive profitability; it can be extended to include multichannel data.

Taking action Sitecore has offered marketers some level of ability to personalize content since the days of the online marketing suite (circa 2009). The Digital Marketing System (DMS) of recent years resolved the scalability issues of the OMS and simplified the ability of marketers to undertake A/B testing, personalization and other digital marketing tactics. Sitecore 8 represents a culmination of what Sitecore has learned from these

Sitecore 8: The leap to a strategic marketing platform

|  55 

earlier releases: Test everything, everywhere: As I suggested in a previous chapter, this philosophy faces some real world barriers, but it’s clear that Sitecore 8 has been carefully designed to allow even infrequent content authors to easily test and understand the impact of the content they create; interfaces designed specifically for optimization experts provide power user tools. Extending the reach of personalization: Sitecore introduced the Federated Experience Manager, a solution that extends the reach of Sitecore to systems not managed by the platform. It holds the promise of capturing data about a visitor from their behavior on sites not managed by Sitecore and delivering personalized experiences to the visitors on these sites. The gleaming promise of machine learning: Michael Seifert pointed to future directions during his keynote when he quickly illustrated in-lab integrations of the Sitecore DMS with Microsoft Azure Machine Learning. This offers something approaching the holy grail—automated segmentation of visitors based on cross-channel behavior and an automated presentation of the most promising marketing tactic. It’s an idea that has been around since at least 2000—the key question is whether Sitecore can make the vision a reality. Sitecore 8 is due to be released “in time for the holidays,” but we’re predicting availability in mid-Q1 of 2015. It offers marketers a whole new range of capabilities, but the learning curve will be steep, both with the new product and with the concepts in general. We look forward to helping our clients quickly drive business results from the new capabilities and are actively seeking clients to participate in our own beta program.

56  |

www.nonlinearcreations.com

Sitecore Web Forms for Marketers—tips and tricks

Amanda Shiga Vice President, Digital, Sitecore MVP

Sitecore’s Web Forms for Marketers is a powerful tool that can help your organization gain insight and generate leads. Today we look at what to consider prior to beginning your WFFM activities. Web Forms for Marketers (WFFM) is Sitecore’s free module that allows marketers to create and publish simple forms, usually without a developer’s help. It provides an easy wizard interface to define form fields with pre-set types, validation rules and save actions that determine what happens on form submission. It installs in a few steps as a Sitecore package (zip file). This module can be a wonderful tool to enable marketers to create and publish their own forms; however, there are specific pros and cons to its use.

Sitecore Web Forms for Marketers—tips and tricks

|  57 

Pros •

Cons Content authors and marketers



Forms do not go through work-

enabled to add forms anywhere

flow; they are not subject to

on the website where allowed

approval processes that are likely set up for content (this has



A large list of Save Actions are

been registered as an issue with

available out-of-the-box, includ-

Sitecore.)

ing saving form information to a database, sending an email or

Workarounds include:

kicking off an engagement plan

1.

Limit access to the WFFM module with web forms



Forms automatically adopt the

security roles

global site styles, yet can be





2.

tent tree where forms are

CSS classes if needed

located

Content authors have control



Minimal ability for dynamic field

of form fields, validation and

logic, or adjusting fields on-the-

configuration

fly based on data entered

Integrated analytics and form



reports (limited) •

Limit access in the con-

styled individually with preset

Some personalization of form display is possible

Reporting and analytics are still on the improvement road map



Not well-suited out-of-the-box to sensitive data capture or encryption requirements; customization would be needed

Scenarios well-suited to WFFM Given these pros and cons, in our experience, there are two scenarios that are very well suited to this module. Please note that both of these scenarios assume non-sensitive data capture.

58  |

www.nonlinearcreations.com

1. Simple forms using an out-of-the-box Save Action •

A request for information or resource download form that captures basic information such as name, email and question, and then sends one or multiple emails on submission



A simple form that kicks off a drip marketing campaign on submission, using Sitecore’s Engagement Plans—for example, sending interval-based follow-up emails once information has been requested

2. Simple forms that save data to another system / lead generation •

Sitecore offers a free connector to Microsoft Dynamics CRM. This connector provides additional Save Actions that allow form data to be saved directly into the CRM



A third-party connector to Salesforce is also available from FuseIT



For other third-party systems, custom Save Actions can also be developed and made available in the selection drop-down for use by marketers and content authors

The following section describes a few additional tips and tricks we’ve learned from using the module:

Using Page Editor mode The Page Editor interface provides the best experience to create and manage forms. It is possible to create and manage forms from Content Editor, but this involves an additional number of configuration steps and is simply not as easy or intuitive to manage. That said, publishing a form requires the publication of not only the parent content item but also the form itself under the modules subfolder.

DMS is not a prerequisite If you’re not yet running the Digital Marketing System (and we recommend you eventually do), you can still take advantage of WFFM. You’d lose the analytics capabilities that are built-in to help trouble-shoot and optimize the forms, but would retain the end-to-end capability of creating and publishing functional forms.

Sitecore Web Forms for Marketers—tips and tricks

|  59 

Styling WFFM WFFM forms will automatically adopt the global site styles. WFFM fields can be styled individually with pre-set CSS classes created by a front end developer. Once the CSS file is updated with a particular class, a Sitecore administrator can add it to the dropdown list by creating a new “Extended List Item” item under /Sitecore/System/Modules/Web Forms for Marketers/Settings/Meta Data/Css Classes.

Dynamic field logic Web Forms for Marketers fields act independently. That is, there is no configuration you can make to show/hide/change other parts of the form based on a user-selected value in a given field. However, the module does come with a rules engine for each field that allows you to influence that particular field based on conditions evaluating to true. For example, you could hide a particular field in the form if the visitor is from a certain geographical region, or you could pre-fill a form field with a value from the user’s profile.

Security and privacy standards Out of the box, Sitecore does not encrypt the information it captures from forms in the Web Forms for Marketers database. As such, if you choose to have WFFM save form information locally, the base solution will not meet PCI and HIPAA compliance. If you choose to have WFFM pass the information to a third party system, there will still be a question of secure and possibly encrypted transmission of data. As such, if your organization is considering the module for sensitive transactions, we recommend an evaluation of the trade-offs required to introduce the necessary encryption, secure transmission tunnels and infrastructure adjustments.

Deploying WFFM to production environment If you have a multi-server environment, there is a specific way WFFM must be deployed. The process to be followed can be found in the WFFM documentation Reference Guide, Section 2.11.1 on page 35.

60  |

www.nonlinearcreations.com

Most importantly, there is an option for having the Save Action execute inside the content author environment such that any logic and connectivity to the storage database can happen inside the firewall. This requires the configuration of the WFFM web service (“remoteWfmService”) to have access from the content delivery environment back to the content author environment. Alternatively, the CD environments must have a reference to the Master Sitecore database. This configuration is an important discussion and planning point prior to deploying WFFM in production.

Curious to Try Web Forms for Marketers? We recommend installing the module in a sandbox environment initially, and carefully considering your usage scenarios and governance implications. We also highly recommend creating a thorough test and deployment plan that maps out your production configuration and storage of form data.

Sitecore Web Forms for Marketers—tips and tricks

|  61 

Sitecore A/B testing: A lesson in statistics

Randy Woods President & co-founder, Sitecore MVP

Content optimization using Sitecore A/B testing is a crucial tool in a marketer’s toolbox, but only if you know how to use it. This series will provide you with the knowledge to maximize tests and see results. Many marketers know that the Sitecore Customer Experience Platform empowers them to make content testing a consistent step in the content creation process. This is good news as we here at Nonlinear believe that A/B testing is the most underusefd online marketing tactic. The corollary is that for most marketers, content testing holds the greatest potential for improving marketing results, but there are limits. When selecting Sitecore marketing tactics to deploy you must understand where testing can be helpful—and where it can be dangerous.

You need reliable numbers You cannot rely on content tests that are not statistically valid. This is the single most frequent mistake that we see when marketers are experimenting with A/B testing. Results obtained from a small sample size aren’t just uncertain; they are very often misleading. Consider the following figure that illustrates the percentage of times a flipped coin comes up heads over the course of 500 coin flips.

62  |

www.nonlinearcreations.com

Penn State University—online course in probability



After about 40 flips, it appears that the coin is weighted towards tails—heads only appears to win 40% of the time



After 100 flips, it is clear that the coin is weighted towards heads—it is “winning” about 57% of the time



Of course, it eventually becomes clear that the coin is balanced and neither option wins, but if you drew conclusions too early, you would have over invested in one outcome.

So how long must you wait? This, of course, raises the question of how many tests you need to run for the results of a test to be reliable. The answer depends upon: •

Your current conversion rate (the “control”)



The amount of lift you achieve from the content being tested



The level of certainty you need (we would love a 95% confidence level, but 85% is a pragmatic number for most marketing purposes)

Consider the following case: A marketer wants to test a new promotion on one of their website’s product pages. The page has modest traffic—about 500 page views per day—as might be typical of a mid-sized B2B manufacturing site. The current

Sitecore A/B testing: A lesson in statistics

|  63 

conversion rate is 3% and they are hoping that the new promotion will improve that by 10% (to 3.3%). For the test to reach statistical validity, they need about 14,500 page views. It would take 29 days to complete the test, which is just on the edge of a practical length of time. In our experience, any test that can reach statistical validity in less than 30 days is worth attempting. A test that lasts more than 30 days, on the other hand, is not (too many external factors change that make the test less reliable—and marketers can’t afford that level of patience).

Implications for Sitecore users The Sitecore Customer Experience Platform provides marketers with a large palette of marketing tactics. A/B testing is often the most promising, but it will not be useful on every page on your site. Many, perhaps most, pages on your site will not have enough traffic for A/B testing to be useful. In the following chapters, I describe how you can proactively identify pages where A/B testing promises results—and what you can do with lower trafficked pages most effectively.

64  |

www.nonlinearcreations.com

Sitecore A/B testing: Identifying your strongest content Randy Woods President & co-founder, Sitecore MVP

Determining the strength your Sitecore website content will help you to identify the best candidates for A/B testing. We provide you with a tested methodology and A/B testing duration spreadsheet. The Sitecore Customer Experience Platform opens up a new world for online marketers—putting enormous power in their hands and making practical tactics that previously required significant IT resources to execute. One of the most promising of these tactics is A/B testing, but as I suggested in previous chapters, A/B testing is only useful on pages that have sufficient traffic for the tests to be statistically valid in a reasonable length of time.

Which pages should be targets for Sitecore content optimization? When creating your Sitecore customer experience road map, your first step should be understanding where content optimization might be useful. Fortunately, visitor data help us to identify the pages where A/B testing is a realistic option and those where other tactics should be applied. You can gain this insight in four steps: 1.

Determine the average number of page views per day for each page on your site

2.

Enter that date in this spreadsheet

3.

Adjust the spreadsheet based on your current conversion rate and anticipated increase

4.

Review the results

Sitecore A/B testing: Identifying your strongest content

|  65 

Step 1: Find average page views per day If you’re quite familiar with Sitecore, you’ll be able to extract this data directly from Sitecore, though we suspect that most making use of this spreadsheet will not have sufficient data within Sitecore quite yet. If that’s the case, and you’re running Google Analytics, navigate to Sitecore Content > All Pages and select show 1000 rows. Select a one month date range and then export this content in CSV format and open in Excel.

Step 2: Enter the data in this spreadsheet Visit the blog post on our website to download your copy of the spreadsheet.

Open this sheet and click on the Excel tab Insert Data from your site. Replace the sample data with actual data on page views that you exported from Google Analytics or extracted from Sitecore.

Step 3: Enter data on your conversion rates On the Excel tab Answer Questions on Conversion you need to answer two questions: 1.

What is the current conversion rate on your site? We use a default figure of 2.5%—you can modify this if you believe your average site conversion is higher or lower.

2.

How much do you believe a test might improve this conversion rate? We use a default figure of 20% and find it to be a useful starting point. As a general rule, the higher your current conversion rate, the less a test is likely to improve upon it. If you are uncertain, we recommend using the 20 percent figure. One note— this figure is relative. It means that you expect a 20% improvement in your current conversion rate (from 2.5% to 3%) not a leap from 2.5% to 20%.

66  |

www.nonlinearcreations.com

Step 4: Review the results Select the Excel tab Pages where AB Testing Works. The first column will contain the pages you pasted into the spreadsheet; the second column provides an indication of how long it would take for an A/B test on that page to reach statistical validity.

The sheet automatically colour codes GREEN any test that will take less than 30 days to complete and tests taking longer than 30 days RED. We have found 30 day duration to be the outside limit for a practical A/B testing program, but feel free to launch tests that last longer if you feel they are particularly promising. At least you will have a sense how long you will need to wait for results.

What comes next? The data in the spreadsheet is a rough estimate, but we expect that for most organizations it will reveal that content testing activities should be focused on a relatively small proportion of the pages on their site. Given that reality, what tactics can a marketer employ the remaining, lower trafficked pages? I’ll address that question in the last chapter in this series.

Sitecore A/B testing: Identifying your strongest content

|  67 

Sitecore A/B testing: Knowing the limits

Randy Woods President & co-founder, Sitecore MVP

The final chapter in a three part series on Sitecore A/B testing provides insight into the limitations of running such tests and gives a methodology for overcoming them. The Sitecore Customer Experience Platform grants marketers a whole range of new capabilities for deepening their relationship with their customers. Content optimization is one critical capability enabled by Sitecore, but it is not universally applicable: •

In the first chapter in this series, I argued that Sitecore-powered content optimization is critical but is not effective on pages with inadequate traffic volumes.



The second chapter gives you the tools to identify those pages on your site where you should focus your Sitecore CEP content testing activities.

This, the last chapter in the series, answers the question—“What do I do with those pages that do not have enough traffic for content optimization to be valuable?”

The waterfall approach Commonly, within any section of a site, or selection of database-driven content, there will be a small number of pages that attract a high percentage of all page views. It is these pages where A/B testing is likely to be most valuable. The waterfall approach sees you flowing the lessons you learn by testing on the most popular pages down to the many similar, but lower trafficked pages.

68  |

www.nonlinearcreations.com

An example: A for-profit institute of higher education offers more than 390 different courses. The website presents each of these courses in an identical template with the only element varied being text content. Pareto’s law applies: the top 10 courses offered by the college receive 50% of all page views, and it is on these 10 course pages where content testing is practical— they have sufficient volumes of traffic that A/B tests reach statistical validity within 30 days. The waterfall approach makes the assumption that what works on these highlytrafficked pages will probably work on the lower trafficked pages as well. This may not be true, but it is a reasonable hypothesis. Once you’ve determined that to be true, your next actions should be as follows: •

Run A/B tests on the top 10 most popular courses



Find out what works (perhaps an optimal call to action)



Apply this optimal element to the other 380 course pages



Watch the collective conversion rate for all pages in that group

1. Iterate A/B tests on the most popular pages Winner

2. Apply the winning design to low volume pages with the same template 3. Compare colletive performance of all pages before and after the change Sitecore A/B testing: Knowing the limits

|  69 

2. Apply the winning design to low volume pages with the same template

conversion rate

3. Compare colletive performance of all pages before and after the change

application of winner

This last bullet point is important: while there isn’t adequate traffic to test on these pages individually, you can reasonably evaluate them as a group. If you make a change to all 390 course pages and subsequently conversion rates improve, you can reasonably conclude that the change you made works even on lower-trafficked pages.

Look to personalization In another common scenario, important content targets an important audience or persona, but this group visits infrequently. Nonlinear was recently engaged in a project where this situation was faced, while working the SickKids Foundation in Toronto. Their most highly trafficked pages included pages on which individual donations might be made. These tended to be more relatively modest amounts—or at least modest in contrast to those made by major donors and corporations. Content targeted at these later groups did not receive sufficient traffic for A/B testing to be practical, but the visits that did take place were critical—these groups had the capacity to make single donations that dwarfed the sum total of individual donations.

Sitecore personalization and A/B testing Sitecore supports implicit personalization—it allows marketers to target content to visitors based on their site behaviour. This tactic is a perfect fit for these infrequent, but critically important visitor groups. It allows the marketer to build rules that shortens the path for these visitors to find the information that may influence them. For example, a visitor who spends time in the corporate donation section of the site may find that the home page hero image, navigation and testimonials change to reflect the considerations that a corporate donor would have.

70  |

www.nonlinearcreations.com

In the end These are certainly not your only options. Sitecore provides marketers with a broad spectrum of tactics for more deeply engaging visitors online (and increasingly across online and offline channels).

Sitecore A/B testing: Knowing the limits

|  71 

Understanding content versions in Sitecore

Grant Bartlett Solution Architect

The tracking of content changes in Sitecore deviates significantly from the norm. Learn the ins and outs of versioning and workflows in Sitecore, the product’s answer to traditional publishing tools. In the publication world, tracking content changes in real-time is common, likely due to the prevalence of Microsoft Word’s own tracking functionality. Traditionally, a document is versioned and passed from one individual to the next for approval and edits, with each edit being tracked and identifying the content author who made the change. In Sitecore, versions are not nearly as in-depth as the process outlined above. Versions do exist and you can compare one version of an item to another, but the level of change tracking typically seen in the publication world, does not exist in Sitecore. This is not necessarily a bad thing, but it should be communicated to your content authors in order to maintain the expectations of using Sitecore’s workflow and versions. In Sitecore, versions are intimately tied to workflow. Together, they ensure content is never live before it has been approved. Let’s walk through an example using a simple workflow with three states: a Create/Edit state, an Approve state and a Published state.

72  |

www.nonlinearcreations.com

Create/Edit state Version 1 •

Bob creates a new page ContentPageA



Bob adds his content and moves the page to the Approve state

Approve state Version 1 •

Sue sees ContentPageA in the Approve state and begins reviewing the content



Sue sees some minor spelling mistakes which she updates



Sue sees a major issue with the text and sends the updated page (with spelling mistakes fixed) back to the Create/Edit state for rework



Bob updates the text and sends it back to the Approve state

Published state Version 1 •

Sue reviews the update, confirms the content, and moves the item to the Published state. This is the end of life for version 1 (ie: version 1 is now live)

Once that process has been completed, only one version of the page will exist. All the changes made by Bob and Sue are to the same version of the page. Although Sitecore does track who last edited the content, it does not identify what the individual changed. Now, let’s walk through an edit of the item we just created and published. Like before, the initial workflow state is the Create/Edit state.

Create/Edit state Version 2: Version 2 gets created, but version 1 is still the site’s live version •

Bob now has an update for the content in ContentPageA. He moves ContentPageA from the Published state to the Create/Edit state

Understanding content versions in Sitecore

|  73 

Approve state Version 2: Version 2 is being edited, but version 1 is still the site’s live version •

Bob makes his changes and moves the content to the Approve state



Sue reviews ContentPageA and makes a minor grammatical update

Publish state- Version 2 is now live •

Sue moves the item to the Published state

In these steps, you’ll notice that while Bob and Sue are updating the content on the page in Version 2, Version 1 remains live. This is how Sitecore ensures content can be edited in the background (Version 2) while not affecting the live version (Version 1) of the content. If you use Sitecore’s version comparison tool, it will show all of the differences that exist in the content between versions 1 and 2, however, it will not show who made the individual changes.

74  |

www.nonlinearcreations.com

Sitecore 7.5 troubleshooting, or: How we learned to love the Googlebot Grant Bartlett Solution Architect

A step-by-step look at how we troubleshot a recent Sitecore 7.5 issue, featuring a Google 500 error. This is a true stotry based on the real-life experiences of the Nonlinear website team. The Nonlinear website team recently had the unfortunate experience of finding out that, while crawling our site, Google was getting a consistent 500 error, despite the site appearing normal. We first noticed the issue when our organic search result impressions began to free-fall, as you can see from our search query analytics:

To set the stage, a few things to know about recent changes in our environment 1.

We had upgraded to a new version of Sitecore although our code base had remained mostly untouched as a result. At least, it was mostly untouched from the previous code base that did not have this issue.

Sitecore 7.5 troubleshooting, or: How we learned to love the Googlebot

|  75 

2.

Although our code base remained the same, we had rolled out new IIS rewrite rules and the new instance of Sitecore was hosted as a different IIS application, but on the same virtual machine as our previous site.

3.

We had rolled out a new firewall

As you can see, there were enough significant changes to the environment that it was hard to easily pinpoint the root cause.

Google Webmaster Tools Our first step was to use Google Webmaster Tools to determine what issues it was finding with the site. We highly recommend enabling this tool on your own website, as it provides you with an incredible amount of valuable information. Once we were able to confirm that we were falling in search rankings, even for our own company name, and after employing the “Fetch as Google” function in the Webmaster Tools, we were able to confirm Google was getting a 500 error when attempting to reach our site. The problem with troubleshooting a 500 error is that it’s generic and therefore doesn’t provide a way to identify the underlying issue.

Internal issues Our first troubleshooting step was to see if we were seeing the error anywhere on our side. We loaded the website directly from each of our content delivery nodes internally, as well as externally, and could not seem to reproduce the issue. As any developer can attest, troubleshooting an error that you can’t reproduce is tedious at best. Additionally, we ran a Fiddler trace over the page load of our content delivery servers, and were not able to identify any issues or differences between servers. This confirmed that both delivery nodes were in sync, meaning this was not a case of one bad content delivery node causing an issue. We did look through our Sitecore and IIS logs, but our logging level was set such that there was very little information to be gleaned from them.

Extended functionality Our attention then turned to extended functionality, such as the commenting tool Disqus which we were using across our site. We were able to easily disable the commenting tool through our site’s configuration. Although we suspected these tools

76  |

www.nonlinearcreations.com

likely had no part in the error, ruling them out was an easy step to take. After doing so, we did not see any changes and the issue persisted. I should add that at this point our attention shifted to our firewall. It was a good candidate as the source of the problem as well, since we had just upgraded it, but before we got too far down that road, we found and installed the User Agent Switcher FireFox add-on.

Finding a solution Immediately, we were able to reproduce the issue locally and were quickly able to identify it. It turns out, it was a specific issue with Sitecore 7.5. We are still in the process of working through identifying the underlying cause, but once the error was revealed, we were able to quickly patch it and resubmit our site to Google. Sitecore is currently investigating to ensure that this issue gets resolved before Sitecore 7.5 is broadly adopted. So, lesson learned. While we had always gathered insights from Google’s Webmaster Tools, it wasn’t a regular element of our smoke testing, but has certainly become one since experiencing this issue.

Sitecore 7.5 troubleshooting, or: How we learned to love the Googlebot

|  77 

Chapter 2: Technology

You just bought Sitecore— what’s next?

Glen McInnis Vice President, Technology, Sitecore MVP

Purchasing a Sitecore license is only the first step in optimizing the content management system for future use. We provide you with a list of the extras you’ll need to build a strong Sitecore environment. You’ve done the research, heard the pitches and have signed on the dotted line; you’re a full-fledged Sitecore owner. Congratulations—you’ve taken the first step to creating an impressive web presence. But what happens now? Before you can get started, either with a partner or with your own in-house development team, you’re going to need to add a few more items to your shopping list:

MongoDB MongoDB is the nosql database that collects information for the Experience Platform (Sitecore 7.5/8+). It would be installed on each content delivery server. You’ve got 3 options: •

Buy the xDB Cloud service from Sitecore and just point your Sitecore instance to the end point provided, no need to install, or maintain MongoDB



Buy support



Buy the commercial version (at the time of writing the cost is $10,000 USD per server)

You just bought Sitecore—what’s next?

|  81 

Maxmind The MaxMind service performs geo-location resolution for Sitecore. You sign up directly with MaxMind.

Team Development for Sitecore This is a tool for developers working with Sitecore. It allows developers to source control and deploy Sitecore assets and has proved to be incredibly valuable to our team here at Nonlinear.

MTA the Email Experience Manager The Email Experience Manager can help you to leverage service to send emails. This prevents your own SMTP servers from being blacklisted. This service is bought through the Sitecore App Center once and is only required if you plan to use the email tool. Of course you will need to procure underlying licensing for the core requirements of Sitecore: Windows Server and Microsoft SQL Server; how many will depend on your deployment architecture. We would recommend that production content management have 8 cores and 16 GB of RAM and production content delivery have at least 4 cores and 8 GB of RAM. The following diagram shows a typical starting point for the production environment.

82  |

www.nonlinearcreations.com

You just bought Sitecore—what’s next?

|  83 

An introduction to Sitecore for developers

Rodrigo Peplau Sitecore Developer

Examining Sitecore from the developer’s perspective by laying out each of the most common elements and explaining how they work together to create the pages that are created. In this article we’ll talk about the main development concepts of Sitecore, describing how data is organized and how each page is presented

Data structures In Sitecore, data is hierarchically organized in a tree. This type of organization, shown below, is similar to how files appear in an operating system.

Item •

Each node in a Sitecore tree is called an Item, similar to an object in ObjectOriented Programming. Items are organized in a big unified tree of content which represents Sitecore’s database

84  |

www.nonlinearcreations.com



With the exception of the “Sitecore” item, at the top of the content tree, all other items have a Parent node



Every item may have one or more Children



Some items in the content tree represent site pages which can be accessed by visitors, others are not directly accessed and have their data used for other purposes (for instance, to fill the options in a dropdown)

Template

In an analogy with Object Oriented Programming, a template would be similar to a class. Every Sitecore item has a template counterpart. Like everything else in Sitecore, Templates also have their own content tree:

In the image above we have a “Richtext Page” template, created to represent a simple page with a title and a block of text.

Field

Classes have attributes while templates have fields. Just as attributes can be of different types (e.g., string, integer, datetime), in Sitecore fields can also have specific types. In the image below we have the definition of the “Richtext Page” template, with its two fields:

An introduction to Sitecore for developers

|  85 

Sitecore automatically provides an interface for content editing based on the types of fields present. For example, when editing a “Richtext Page” item, this is the interface we’ll see:

Sitecore vs object oriented programming

A short comparison of entities in Sitecore and in object oriented programming: Object oriented programming

Sitecore

Object

Item

Class

Template

Attribute

Field

Language

Sitecore natively supports multiple languages. Each item on the content tree may have versions in different languages, with English as the main language, but new languages can be easily added and become available for immediate editing.

86  |

www.nonlinearcreations.com

Database

Every Sitecore installation has at least three databases that are stored separately and have a predefined basic structure and individual content trees. The three main databases are: 1.

Core — Contains the data needed for running Sitecore and the .NET membership provider tables

2.

Master — Database used for content authoring, that contains all versions of all items

3.

Web — Used for the public website and is accessible to visitors. Contains only the last version of each published item. It is a subset of the “master” database, optimized for faster performance and smaller size. Whenever content is published, the latest version is copied from “master” to “web”

Sitecore API

The following class diagram illustrates the entities relationships within Sitecore from the point of view of items. These classes can be easily turned into code.

An introduction to Sitecore for developers

|  87 

Usage examples (C#) var contextItem = Sitecore.Context.Item; // Gets the Item for our current page var name = contextItem.Name; // Name of the Item var itemLanguage = contextItem.Language; // Language of the Item var title = contextItem.Fields[“Title”].value; // Value from field “Title”

Presentation Programmers have full control over the presentation layer in Sitecore. Below we describe the concepts related to the presentation layer.

Device

Devices are a way for Sitecore to categorize requests and allow for content to be rendered in different ways across different media, including web, print material and mobile phones.

Layout

Layouts define the general structure of how a page is presented. If you were to compare this idea to .NET concepts, a layout would be the equivalent of a master page. It is possible to define static portions, dynamic blocks modified in the code behind, as well as placeholders which will be filled with content at a later time. Every layout in Sitecore points to an .aspx file where all the usual programming is done using .NET.

Sublayout

Sublayouts define the appearance of parts of a page and are used along with a layout. Each sublayout will be rendered within its placeholders to present the final layout of a page. Comparing this to .NET concepts yet again, a sublayout is similar to a user control and points to a .ascx file.

88  |

www.nonlinearcreations.com

Rendering

Renderings are sublayouts programmed in XSLT instead of .NET. They don’t need to be compiled, but because they are interpreted, they are slower and can raise a lot the total rendering time of a page.

Placeholder

Placeholders are ASP.NET controls which, when used in layouts and sublayouts, allow content blocks to be added in predefined positions.

Example

The image below shows how layouts, sublayouts and placeholders are used to render a page.

An introduction to Sitecore for developers

|  89 

Our 12 laws of Sitecore development

Saulo Venancio Sitecore Developer

Dwayne Gockel Solution Architect

Each developer has their own preferences for achieving the best results during Sitecore development. The developers here at Nonlinear consider these twelve the most important. Whether you are a Sitecore pro or just getting your feet wet with the customer experience platform, there are a few tried and true rules to getting the most out of the product. Technology is only as effective as the people that implement it, so making sure you’re at the top of your Sitecore development game will be beneficial for your entire organization.

1. Use Page Editor friendly controls Content author experience is something we talk about often here at Nonlinear. Ensuring that your content authors have the capabilities to create and modify content in real time using “what you see is what you get” or WYSIWYG editing is crucial. By incorporating these controls into your development, your content authors will avoid having to delve into the Sitecore content tree to find the matching fields.

90  |

www.nonlinearcreations.com

2. Don’t bind a repeater unless the situation calls for one The control allows a list of items to be bound to it and causes the specified HTML (and possible code) to be executed for each item. In a basic repeater pattern, there is often a header and footer section that contains HTML that does not repeat. Binding an empty list to a repeater will cause any header and footer HTML that is in the repeater to show up even though no items are repeated. This may be what a user wants, but often that is not the case and by not binding a repeater, you’ll be ensuring that none of the HTML in the repeater will show up on a page.

3. Ensure proper null checks before accessing an object To do this, the first thing you should check, with any variable or method, is to determine if the resulting object is null. As a rule, if an object is not initialized, it will be set to the “null” value. Many methods will also return a “null” value if certain conditions are not met. Trying to use an object which has been set null generally results in a run time exception that will cause your website to crash (sometimes gracefully, sometimes not), so ensuring that you are aware of the characteristics of your variables is paramount to good development.

4. Be cautious about HTML generated in backend code Generally, .ascx files contain HTML that dictates the physical layout of the page, while the .ascx.cs files contain code that populates the layout. Though the general rule is to make sure not to include any HTML in the backend code, there are situations where this method can solve certain issues. The biggest thing with this law is to be aware of what’s being used where to ensure that you have an understanding where the results are coming from, either HTML or backend code.

5. Don’t code after return statement Though this one definitely depends on both the situation and your own preference (some people prefer conditions do that have a single, standalone return statement at the end of the method), not coding after the return statement is common. If you are trying to simplify multiple bracketing, this is a good option.

Our 12 laws of Sitecore development

|  91 

6. Before deploying, check commands to ensure a successful Page Editor user experience: •

Add a component to a page without a data source



Add a component to a page and point to an existing data source item



Add a component to a page and create a new datasource item for it to use



Remove the component from the page



Remove/add child items from the component if it is a container component

7. Ensure that all Sitecore fields that require a datasource are properly set If you have any fields that point to a list of items in Sitecore (or part of the Sitecore content tree) for which you require population from a datasource, ensure that you have correctly configured the datasource to allow a content item to have “valid” values to choose from when accessing that information.

8. Use the Sitecore debugger to find performance issues Though its use may depend on the type of contract you have with a client, if budget and time allow, testing out a variety of scenarios, both positive and negative, will help in delivering a thoroughly tested, and ultimately superior, end product.

9. Choose icons that correspond to your content types This one goes back to creating a positive user experience for the content author. By choosing unique and logical icons or icon groups for related items (news, news folder, news listing etc.) you will give them a visual indicator for what type of page or component they are looking for. Sitecore has a number if built in icons. To select one for a page, simply double click on its associated icon in the content editor.

92  |

www.nonlinearcreations.com

10. Use default standard values (most of the time) Using standard values to populate certain fields can be a way to make life easier for your content authors, but make sure to thoroughly consider the choice before deciding that’s the way to go. Sometimes there will be cases where the process requires a content author to select a value with a possible required validation rule. In those cases, if instead a standard value has been chosen, the content authors will be less likely to reexamine and fill in the value correctly, since it will already appear to be full (with the standard value which may not be what they wanted in the first place).

11. Provide field-level help for your content authors For each field of a template in Sitecore, a line of text can be added to give a content author more information about what the field should contain and how it should be used. While this can be a pain for developers to fill in and become redundant once a content author is experienced in content creation, it’s still a good practice to help new content authors, or for fields where the content or use of the field is not intuitive.

12. Include real-world content into testing to make sure everything is working as it should Depending on budget and the type of contract, including some real-world content into your testing should be standard across all projects. Having an ample amount among your pages will help in analyzing the performance of the site, while also testing pagination and ensuring that specific features like sorting function correctly. Other suggested site content includes: image sizing and language variants to ensure that the layout of the pages remain viable.

Our 12 laws of Sitecore development

|  93 

Sitecore operations: Four must-have resources

Glen McInnis Vice President, Technology, Sitecore MVP

If you are considering a Sitecore implementation or have recently launched an instance of Sitecore, you’ll want to be sure to address each of these four key Sitecore operations resources. During the planning stages of Sitecore implementations, we are often asked about which IT resources are most crucial for the continued success of the deployment. As you can imagine, each project requires a customized answer, depending on the specifics, but there are a few that carry through with the majority of our implementations.

1. Managing servers/infrastructure The effort here should be minimal, as this is largely routine tasks for patches, backup verification and the sort that can be mostly automated. If you decide to have your Sitecore partner provide managed hosting, this work could be offloaded to them. This work will require about one day per month for verification once the process is established. If you do decide to keep the servers and infrastructure management in house, you’ll typically assign the responsibility to the IT department.

2. Sitecore application monitoring The ongoing monitoring of the Sitecore application itself requires roughly one day per month to review logs, cache settings and fine tune the operational settings. This

94  |

www.nonlinearcreations.com

work could be offloaded to a partner under a maintenance agreement. There is no hard and fast rule on where this person would report if part of the client team, but we see a slight bias towards this person residing inside the IT organization.

3. Managing complex content layouts/ simple front-end (HTML/CSS) development The promise of a content management system is a set of robust templates that can accommodate any future need. The reality is that there will be special circumstances (campaigns, landing pages, etc.) that require a bit more knowledge of HTML/CSS and possibly JavaScript. The power user with this skill is often found in the Marketing team and can take on this work as part of their normal duties. They also tend to be the lead users from which others ask for assistance. The level of effort for this skill is hard to predict and is entirely dependent on the frequency with which new templates may be required. If an existing member of the Marketing team does not fit this description, we would suggest one day per week as an average level of need.

4. Ongoing improvements (new templates, workflows, etc.) The development of new features requires UX/design, Sitecore/.NET development and HTML/CSS/JavaScript skills. Based on the size of the web properties and what will be a phased launch, most of Nonlinear’s clients have three to four people available part time to take on this work. Their actual allocation would equate to 1 to 1.5 full time equivalents or FTEs. Once all phases of the re-build and migration are complete this should drop to 0.75–1 FTEs.

Sitecore operations: Four must-have resources

|  95 

Six tips for scaling Sitecore infrastructure

Glen McInnis Vice President, Technology, Sitecore MVP

Ensuring a sufficient amount of power behind your Sitecore implementation requires consideration into your infrastructure set up. Without the right structure in place, you risk launching a site that cannot stand up to the required activity. Sitecore can scale both vertically and horizontally. In this chapter we examine the ways in which you can scale your Sitecore solution using both approaches and present a few tips to control your total cost of ownership.

Vertical scaling This is usually the easiest method of scaling Sitecore, but at some point you will reach a physical limitation of your hardware or limits in your virtualization technology. That said in an N + 1 solution you will want N to be the smallest number possible to minimize complexity and infrastructure footprint.

Add memory to content delivery

Content delivery servers can use memory to great benefit. Use the cache.aspx page in /sitecore/admin to assess the level of HTML cache being used on your site. If your site is routinely using 60%+ of the cache, increase the cache size. On 64-bit systems with enough memory you can effectively remove the limit.

96  |

www.nonlinearcreations.com

If your solution is doing heavy processing, CPU increases may be warranted, but a 4-8 core CPU is usually enough. 8GB of RAM or more would be a good starting point.

Add compute power to content authoring

Content authoring servers can take advantage of caching to some extent, but it does not have the same impact on scale and performance as the HTML cache in content delivery. Most of the workload in the authoring server comes from CPU heavier actions like publication, dynamic page assembly, reporting and the sort.

Don’t forget the database cluster

Many times I’ve seen complaints about Sitecore performance when in reality it’s the database cluster that is overloaded. If you suspect the database is the issue you can do a quick check with the database test script.

Horizontal Scaling Once the individual nodes have been maximized we start to add other nodes. There are several options that can be explored.

Add content delivery nodes behind a load balancer

Sitecore easily supports multiple content delivery servers. Install your solution, make sure scalability settings are enabled and with the help of a load balancer you now have two servers handling the load of the published website. You might also want to explore the Sitecore Azure module for this purpose.

Add content authoring nodes behind a load balancer

Just like content delivery, authoring servers can also be setup to work in a load balancer pool. For sites with heavy and large publication needs, one of the nodes can be designated as a dedicated publishing instance.

Purpose built database clustersv

The four standard Sitecore databases (web, master, core, analytics) all have very different I/O patterns and it can be difficult for a DBA to find a balance in those needs. The analytics database is the most frequent database to reside on a dedicated cluster. Organizations that collect large data sets may also have separate clusters for collection and reporting.

Six tips for scaling Sitecore infrastructure

|  97 

Reference deployment

Since a picture is worth a thousand words, here is a diagram depicting one of the most common patterns for moderate volume sites. Two content delivery servers, a single content authoring server backed by a SQL cluster.

98  |

www.nonlinearcreations.com

A new way of thinking: Continuous deployment for Sitecore Jason St-Cyr Solution Architect, Sitecore MVP

The idea of continuous deployment for your Sitecore website may seem daunting, but we’re here to tell you that not only can you do it, it will improve your deployment and streamline your processes. My favourite topic these days is trying to get folks to move over to a continuous deployment model where each code check-in goes straight to production. Mike Brittain, from Etsy, got me hooked back when I attended the 2013 ALM Summit and he did his presentation on “The Dirty Details” of continuous deployment. Essentially, he broke my brain by explaining that they didn’t have a test environment.

WHAAAAT? Yes. They deploy straight to production, multiple times per day and many multiples of times. The risk-aversion side of my brain was freaking out. How can you do this? What about the bugs? Guess what? If you can fix a bug in 15 minutes and have it back in production 15 minutes after that, it doesn’t really matter. You’ve got 30 minutes between the time somebody notices an issue to when it’s resolved. Imagine your current process to get a fix to production, does it even come close?

A new way of thinking: Continuous deployment for Sitecore

|  99 

There’s no way that would work for me Let me be frank: you’re probably wrong. Unless you are running a website where somebody will have serious financial, legal, or health consequences from a bug, you are not running critical software. The site may be critical to your business, but your uptime requirements are probably in the realm of allowing an hour or so of downtime each month, therefore you can likely afford a bug here and there. What you probably can’t afford is to spend a large portion of your marketing or IT budget and not get anything for it. Continuous deployment solves that problem by putting what you are paying for directly into your revenue stream. Realistically, you will probably still hide a lot of it until the work is finished, or a package of features are available together, but at that point the power is in your hands to make it available to your users.

If it’s not tested, it’s not done I agree, completely. In fact, I usually enforce that a review of any user story work be a part of the definition of done. Automated testing is your friend here, and you can invest in it on an ongoing basis to build up the amount of checks you do before code lands on the production server. Unit testing will build your base, then build on that with automated UI flows, integration tests, and regression tests. By the time all these tests run, there’s very little that hasn’t been checked.

100  |

www.nonlinearcreations.com

To be safe, you can hide stuff in production so that only testers can see it until you are sure.

How will I know if something is wrong? This is where things start getting difficult. With this model, it’s inevitable that something will slip through, and because it is in production you’ll need to resolve immediately; monitoring becomes incredibly important. We need to be able to have monitors telling us if layouts are broken, if Sitecore is throwing unexpected errors, if indexes are not rebuilding, or if the job queue is getting backed up. There may also be transactional portions of the site that we need to monitor to ensure that traffic and activity has not drastically dropped off due to some unknown issue in the business logic. Planning for these monitors is really important, and needs to be done before getting rid of all our staging environments.

What about database changes? Yup, you’re right. This one sucks. At this point, we have no more testing environments, and the developers are changing templates, adding fields, adding new sublayouts, and all kinds of things to the database. We can use tools to directly deploy these changes to production, but how will this affect the production content of the site? There is no easy solution here. For each case, there is a different approach. I’ve recently blogged about how you can handle templates and sublayouts for continuous deployment, but even there you have no fool-proof solution. At some point, we have to accept that something might just break. And then we’ll fix it.

This sounds risky How many times has a deployment gone incorrectly? How many times have you found out somebody “missed” something pushing from one environment to another one? Mistakes happen. However, when those mistakes happen you are usually pushing 3-6 months of work at once, and losing the benefit of all of it when you have to roll back or fix it on the fly.

A new way of thinking: Continuous deployment for Sitecore

|  101 

If you are deploying one single change directly to production, you are getting faster feedback from all of your testers, including your users. If it all goes well, you are also gaining the benefits of the change immediately. If we start building our software more incrementally, and doing it faster and better, doesn’t everybody benefit? Also, don’t underestimate the power of removing the test environment from the equation to suddenly make developers check their code a little bit more before checking it in.

102  |

www.nonlinearcreations.com

Why Application Lifecycle Management matters for Sitecore Jason St-Cyr Solution Architect, Sitecore MVP

We look at how you can start small by incorporating Application Lifecycle Management into your Sitecore implementations. Application Lifecycle Management (ALM) is a streamlined review of processes and tools resulting in a continuous cycle of idea generation, product building, measurement and data collection and adjustment based on findings, ultimately resulting in improved resources and an iterative project. Sounds like the kind of concept we should all be trying to implement, wouldn’t you say? We get it. Even though folks have been talking about the importance of ALM to organizations for years, the majority aren’t planning for it, nor do they have a vision of how to get their team to where they need to be. Proper ALM strategy and implementation isn’t something that happens overnight; its success depends on employees across the board: portfolio and program management, architects, designers, testers, developers, and of course, operations staff. In a large organization, putting together a solid plan for ALM within the enterprise can be quite daunting. All that to say that, while full implementation will be a challenge, small changes are a great way to get started. Your Sitecore implementation gives you an excellent opportunity to start introducing processes that you may not already have in place. Next comes the inevitable question: What about the bottom line?

Why Application Lifecycle Management matters for Sitecore

|  103 

Benefits of ALM •

We’re happy to tell you that, generally speaking, the benefits of ALM outweigh the cost



Increased ROI by delivering more often enabling you to start getting business value from your investment faster



Better traceability by using tooling to tie together all stages of the application lifecycle



More efficient delivery by planning for smaller batches and involving more members of the team



Improved quality through automated testing and regression, and tester involvement earlier in the process



Increased flexibility through task automation and early failure



Enhanced collaboration by bringing teams together throughout the lifecycle

Applying ALM to Sitecore For Sitecore implementations specifically, this means you are likely targeting the following improvements in your process: Requirements tracking: Ensuring requirements for your build are available to the team is crucial to making sure your implementation is done efficiently. Task planning: Team members should be able to tie the tasks they need to accomplish with the requirements that have been defined, as well as track and report on progress for the implementation. Don’t forget the dashboard for management! Source control strategy: We beg of you, please put your code in source control. “It works on my machine” does not make for a successful and repeatable implementation. Automated builds: If you have multiple team members working on the implementation, you should be considering continuous builds and continuous integration to verify checkins made by the team. Or you could just hope it all compiles together… (we don’t recommend this approach!)

104  |

www.nonlinearcreations.com

Automated deployments: You will try to deploy your solution manually for a while, but when you want to be delivering often, it becomes very annoying to be constantly creating builds and packages and installing them by hand. Look at tools like TeamCity or TFS to get your build processes flowing, and then tie into release management tools like OctoDeploy or InRelease to push it out. If you can leverage tools like Team Development for Sitecore (TDS) you can push your content as well!

Why Application Lifecycle Management matters for Sitecore

|  105 

Seven tips for automated testing in Sitecore with Selenium Mauro Madeira Quality Assurance Analyst

Quality assurance testing is an important part of any technology implementation. Good testing will ensure that your live product will work exactly as you’ve envisioned it. Wondering about the best way to test your Sitecore instance? Looking for something that goes above and beyond automated unit testing? We recommend the inclusion of browser automation tools like Microsoft Coded UI or Selenium WebDriver into your testing regimen to ensure that you are fully testing the complexities of your Sitecore solution. While unit tests certainly have their place, the benefit of employing a browser driver is in its ability to mimic the behaviour of a real life user. In our experience, we’ve found Selenium WebDriver to be one of the best tools for creating and implementing these types of tests. No matter which approach you follow, any test should follow the three R’s: Repeatable, Reliable and Resilient

106  |

www.nonlinearcreations.com

Why should you being using Selenium? •

It’s independent of the developing tool brand and version. Therefore, test code written for Visual Studio 2010 will work in Visual Studio 2012 (Microsoft Coded UI is not).



The API can be called and scripts written in many different languages, retaining the way the elements in an HTML page act, and are found and verified.

Developing Selenium scripts 1.

Since code changes also lead to refactoring tests, try to create sample data that can be used for regression. One of our approaches in testing Sitecore development is to create pages with a few related components that can be easily tested, so that when a page with more components is created, we’ll know that the independent parts are still working and which patterns we should use.

2.

Try to group together common steps in your method that can be easily used and reused. For example, logging into Sitecore and selecting Content Editor can be included in all tests involving login and use of content editor. Since creating and tests will be done below /sitecore/Content, the particular test script can start from that folder.

Seven tips for automated testing in Sitecore with Selenium

|  107 

3.

When writing tests that involve Sitecore authoring, you’ll want to rely on the most generic way to find an element in Content Editor and Page Editor modes. Try to avoid dynamically generated ids that can change from content item to content item (many elements in Sitecore embed the GUID in the markup).

4.

Avoid using linked text and content dependent values in your test pages. In this case, developers should always include ids that will later be attached to the end of the those dynamically generated by .NET/Sitecore. In this case, XPath is the solution.

5.

Trying to understand why a test failed can be time consuming. Writing a method that includes the element being searched and logging the method used to find it can be very helpful when debugging the test.

6.

It’s great to get in the habit of taking a screenshot, even when a test is successful. Keeping a folder for every test case with screenshots and a log file can help you quickly spot where a test may have failed.

7.

Many times being thorough can be impossible or not cost effective. One approach to combat that problem is to write a basic test and take a screenshot at the end of each basic interaction in a page. This way, the visual inspection can confirm what has been tested and expand the verification process.

108  |

www.nonlinearcreations.com

The three things to know about a Sitecore Commerce Server integration Glen McInnis Vice President, Technology, Sitecore MVP

With the announcement of their acquisition of Commerce Server, Sitecore has bounded into the world of a full blown customer experience management platform. As one of the largest Sitecore partners in North America, we were pretty excited to wake up to news that Sitecore has acquired Commerce Server, solidifying their reputation as the leader in customer experience management. Nonlinear has gleaned first hand experience in integrating the two solutions, completing one of the first Sitecore Commerce Server integrations back in 2011. The client had 500 unique sites requiring Sitecore customization and ecommerce capability through Commerce Server.

The three things to know about a Sitecore Commerce Server integration

|  109 

Breaking it down Considering the extensive number and varying levels of expertise of content authors, we developed a two tiered personalization approach: one that allowed for daily maintenance of the sites and another for the more robust administrative tasks like adding additional items to their particular site’s catalog. The barometer for a successful end-user experience required the implementation of a shopping cart interface with shipping, payment, order system, member profile and catalog management. Though it is still early days for Commerce Server’s integration into the Sitecore platform, we have put together a list of three things we learned while working on our implementation that can help in ensuring your own successful adoption of the two platforms:

1. Understand the desired functionality before development Sitecore supports multiple sites, while Commerce Server supports multiple catalogs. In order to simplify the management of commerce content for content authors, we developed an integration framework that allows Sitecore sublayouts to bind to a particular catalog.

110  |

www.nonlinearcreations.com

2. Consider the language capabilities of both platforms Sitecore and Commerce Server can treat multilingual capabilities in a different way. Multilingual property definitions in Commerce Server have a similar effect as Sitecore languages have on items, but you will need to ensure your approach to multilingual in both systems align.

3. Determine the home of the product catalog before getting started Sitecore is great at storing web content, where as Commerce Server’s strength is core catalogue content. Deciding which system will hold the product content is key. It is almost always a mixed situation where core product information and pricing resides in Commerce Server and Sitecore retains the web specific content. You also need to consider how content ownership will impact the Sitecore DMS. We look forward to the future of Commerce Server under the Sitecore umbrella, and if our successful implementation is any indication, Sitecore users are in for a treat.

The three things to know about a Sitecore Commerce Server integration

|  111 

27 tips for configuring Sitecore

Glen McInnis Vice President, Technology, Sitecore MVP

Have you decided on the Sitecore content management system to deploy your company website? Great choice! As a .NET architecture, there are a few things your developers should keep in mind when it comes to performance, scalability and security. Sitecore’s robust .NET based architecture is a huge advantage to teams deploying the product. The speed of development and the configurability of the platform allows for amazing results in a very short time. Conversely, the ever expanding scope of the platform has led to a plethora of settings and configurations that may need adjustment for production environments to ensure scalability, security and performance. Drawn from Nonlinear’s project experience and a host of Sitecore documentation we have assembled this list to help guide you in those steps.

Getting Started—Sitecore and IIS If you use the executable to install Sitecore, many of these settings are adjusted automatically. However, that can change from release to release and on some occasions, specific policies on the server may prevent the installer from modifying the configuration.

112  |

www.nonlinearcreations.com

1.

Set permissions on /website and /data

2.

Ensure the data and indexes folders are outside of the web root and update the web.config to point to the data folder

3.

In IIS ensure that Maximum Worker Processes for the Application Pool is set to 1 (under advanced settings)

4.

In IIS ensure that Load User Profile settings of the Application Pool is set to “true” (under advanced settings)

5.

In IIS ensure anonymous access is denied for:

/App_Config

/sitecore/admin /sitecore/debug /sitecore/webservice 6.

In IIS Enable HTTP keep alive

7.

In IIS enable static content compression

8.

In IIS on the CMS server, enable dynamic content compression

9.

In IIS disable execute permissions on the upload folder

10. In IIS enable content expiration using HTTP response headers, especially for the /sitecore folder (optional)

Sitecore configuration changes 11. Ensure the /data and /indexes folders are outside of the web root and update the dataFolder setting to point to the data folder. 12. Include the path to static media files (header images, css files, JavaScript files) in the IgnoreURLPrefixes settings to prevent Sitecore from intercepting the requests. 13. Disable unused search indexes by setting Indexing.UpdateInterval to 00:00:00. 14. Update the standard cache sizes for prefetch, data, item and item as recommended (see the scaling guide), and then test for further adjustments. 15. Ensure presentation components that are candidates for caching are set to cacheable. 16. For 64-bit systems with the available memory, disable cache size limits using Caching.DisableCacheSizeLimits. 17. Disable performance counters using Counters.Enabled as they add overhead. 18. Disable WebDav by removing the references in: . 19. Disable memory monitor by removing the hook from .

27 tips for configuring Sitecore

|  113 

20. Restrict access to .XML, .XSLT and .MRT files using the section. 21. Disable the upload watcher by removing it from the —Sitecore.Resources.Media.UploadWatcher. 22. Optionally disable client RSS feeds by removing the Sitecore.Shell.Feeds. FeedRequestHandler. 23. Remove unneeded headers from the responses. For example X-Aspnet-Version, X-Powered-By, X-AspNetMVC-Version.

Sitecore databases 24. Some simple adjustments to the configuration of SQL Server can greatly improve the performance of the database environment. Keep in mind that some of these settings may impact the backup approach you employ for MS SQL. 25. Set the compatibility level to SQL Server 2008 (100) to take advantage of the latest optimizations. 26. Ensure the auto close property is set to false. This ensures that a page will only make one connection. 27. Ensure the auto shrink property is set to false to avoid costly dynamic resizing. 28. Ensure the recovery model is set to simple to avoid the high overhead of transaction logs.

114  |

www.nonlinearcreations.com

Two common Sitecore page editor challenges

Grant Bartlett Solution Architect

Sitecore’s Page Editor is a useful way to improve the content authoring experience, but has its limitations. We address two of those limitations and provide solutions to overcome them. The key to an effective Sitecore website is the ability to update and edit in realtime and a concentrated effort to make it an accessible, shared project between the Marketing and IT departments. We are big fans of using Sitecore because it covers off both of those requirements, while offering impressive visuals and unique personalization capabilities with the DMS.

The ease of being a content author in Sitecore Editing content in Sitecore is made easy using the Page Editor mode and its inline editing capabilities. A content author simply needs to navigate the site, find the content to be updated and input the changes directly in the page. While Sitecore has made great inroads to ensuring this process is as simple and intuitive as possible, there are still challenges that simple planning and a little extra code can address.

Two common Sitecore page editor challenges

|  115 

There are two common challenges with editing content from Page Editor mode: 1.

Content authors may find themselves in a situation where they wish to edit a particular piece of content that is in a field that doesn’t exist on the page in the Page Editor mode. They may come across a field that contains content they want to update, but are unable to access the field due to it not being exposed on the page.

2.

The incorporation of dynamic elements are a great way to add visual interest to your site, but can lead to some problems for your content authors. For example, an element like a slider, which automatically transitions and hides all but the current slide, are problematic to update in Page Editor mode because of these features.

Bringing a developer into the mix Addressing the first issue is quite straightforward and is supported by Sitecore’s native functionality. Sitecore allows developers to add custom buttons to the Page Editor interface to support fields that aren’t exposed by the presentation. These custom buttons are stored in the core database at: /sitecore/content/Applications/WebEdit/ Custom Experience Buttons. From here, there are a couple of different types of buttons. In our case, creation of a new button based on the field editor button template gives us the ability to expose fields that are not otherwise available. Once a button has been created, it can be added to the sublayout (and subsequently your page) via the Page Editor buttons field on the sublayout. Alleviating the dynamic element issue is a little more complicated and involves using a two-step process that requires code/CSS updates: 1.

The first thing to consider is the automatic transition of slides; it will need to be disabled in Page Editor mode. In the code, a simple check of Sitecore.Context. PageMode.IsPageEditor will help you identify which mode you are in, and from there it’s just a matter of writing the code to disable the transition.

2.

The second problem occurs after your slider transition has been disabled. How can the content author edit the second, third, fourth, etc. slide if they are not displayed on the page? Again you will need to enlist your developers to solve this issue using code and CSS: when in Page Editor mode, stack the slides vertically so each one is visible and available to be edited.

While Sitecore continues to improve the content author experience, in house developers will have a role to play in creating a seamless experience for the active maintenance of a company website.

116  |

www.nonlinearcreations.com

Sitecore, Coveo and your Intranet

Allison Simpkins President, Nonlinear Digital

Despite its traditional role as a front facing website platform, Sitecore has shown itself to be worthy in the intranet sphere as well. As with any intranet, search is key. We look at how Coveo’s search product can power your Sitecore intranet. We’ve talked a lot about what should and shouldn’t be done to inspire employees to embrace your company intranet, and as we all know, user adoption is crucial. Ensuring that your organization has a living, breathing intranet is a tough job for even the most dedicated of web steering committees. The bottom line when it comes to intranets is that for it to be beneficial to your employees, it must make them more efficient. One of the biggest culprits in dissuading intranet use? Irrelevant content. Your employees are not going to go out of their way to find things, so if you are hosting intranet content that is not relevant, compelling or necessary, get rid of it. Having a well developed content strategy will keep your intranet moving in the right direction, but equally important is ensuring that your employees are able to find what they’re looking for.

Allow them to access the content they need Your employees are coming to your intranet to find something. Unfortunately, in most cases they spend more time looking than finding. Searching for a cost effective

Sitecore, Coveo and your Intranet

|  117 

way of increasing productivity and encouraging happier employees? Time to look at optimizing your search. If your employees are starved of the critical information they need to work better and smarter, your company will suffer.

Enter Coveo for intranets Coveo Enterprise Search (CES) combined with the Coveo G2B for Intranets connects people to information from every nook, cranny and corner of your corporate knowledge base—no matter what form or format the information is in. Video rich intranet? It’s got you covered. Lots of audio files? Covered there too! Most organizations have millions, perhaps billions of documents and structured data stored in file systems, email servers, intranets, enterprise applications, databases and websites. The magic of Coveo is that employees can access all of this across all platforms within a split-second.

Provide smart content recommendations and relevancy Site search has always been a rapidly evolving technology, and more so now in today’s climate of the ever expanding Big Data and demands from site visitors to have personalized online experiences; we have found that Coveo can help address this need. To truly engage each visitor, you need to present them with content from all sources and ensure the content is relevant. Coveo blends content located inside Sitecore with sources outside such as customer communities, blogs, extranets, portals, CRM’s and more, the possibilities are endless. This ensures that more relevant information and products are surfaced to the visitor faster, resulting in higher conversion rates, improved self-service, and greater visitor satisfaction. Employees are able to work more efficiently by allowing them to access critical company information more easily and quicker than ever before through a simple search user interface. The enterprise world is changing. As we continue to demand better consumer experiences on websites, so too must we demand the same of company intranets.

118  |

www.nonlinearcreations.com

Personalization and your Sitecore intranet

Glen McInnis Vice President, Technology, Sitecore MVP

In our experience, we have found that Sitecore has impressive capabilities as an intranet platform. We look at two ways that you can start using explicit personalization on your Sitecore intranet. One the biggest challenges when designing and developing a company intranet is striking a balance between the inclusion of corporate materials and allowing employees the freedom to setup personalized views. You want important corporate news and information to be available and visible to all employees, while also creating the most efficient way to track task completion. We’ve identified that Sitecore, a platform generally used for front facing websites, has impressive capabilities on which to build intranets that strike the balance between corporate needs and employee personalization.

Personal page The Sitecore web part framework provides a solid foundation on which to build a personalized page for employees. By publishing a catalog of web parts with corporate content, application feeds and more generic RSS feed readers, users can construct their own view of the content they need, while giving corporate communications the ability to take over an area of the page when necessary.

Personalization and your Sitecore intranet

|  119 

One of the best things about using the Sitecore web part framework for an intranet is that the definition for each web part gets created in the system as an item. This allows you to define which web parts should be available to certain groups and gives you the ability to restrict those who aren’t intended to have access. This functionality can be especially helpful when the widgets are connected to a secure line of business applications like a finance system.

Active Directory profile When Sitecore is connected to Active Directory (AD), the profile in AD can be used to drive personalization. Commonly found information in Active Directory would include: •

Location: If you know an employee’s physical location or building, targeting facilities updates like fire alarm notices and other geographic content becomes possible



Org Chart: An employee’s manager or home team is often in Active Directory; this allows executives in charge of that division to target messages to their staff.



Security Groups: This information varies from organization to organization, but we have seen some common uses: --

Project Teams: Project based organizations will often create an AD role to which all project members belong to, allowing for the targeting of material to that group.

--

Role: The role of function someone plays in an organization is also often implied by their AD membership. The most recent example of using this role to enforce personalization I’ve seen is one where all project managers in the company had membership in an AD group, which allowed the PMO to share best practices across divisions.

The major challenge with an Active Directory driven personalization is the quality of the data. Many organizations struggle with keeping this information up to date. If you are able to find an efficient way to overcome the data challenge, you will be well on your way to incorporating explicit personalization into your Sitecore intranet.

120  |

www.nonlinearcreations.com

Nine steps to a successful Sitecore website launch

Jason St-Cyr Solution Architect, Sitecore MVP

Are you preparing to launch a Sitecore website? Make sure you’ve checked and rechecked our nine item checklist to ensure its smooth sailing. Anybody who has ever done a production launch of an application knows three things: 1.

There are a lot of variables at play

2.

Inevitably the law of averages catches up to you

3.

Something pretty much always goes wrong

Whether you are launching something internally or externally, these three things will apply; a Sitecore launch is no exception. If you are about to start your cutover planning, here are nine things to keep in mind for your run up to launch day and your post-launch plan:

1. New “must-haves” During cutover testing, new end-users or business groups may be brought in to review the site prior to launch. These individuals may not have had input into the project until now and may have business needs that have not been met. Suddenly, new “must-have” features or bugs are identified on launch day. Don’t worry, you’re reading this before launch day! (Right?) Sound familiar? If so, you have two options: either bring these folks into the project earlier or set their expectations for a “quick turnaround” post go-live to address their concerns.

Nine steps to a successful Sitecore website launch

|  121 

2. Task estimates are wrong Task estimates are just that, estimates. The preliminary projections for cutover tasks are usually incorrect, and as a result, dependent tasks can begin to slide throughout the day. This can become compounded, especially if multiple teams are trying to co-ordinate. When reserving your resources for launch day, ensure some flex time for the end of the day so that these resources are still available to continue launch activities beyond the estimated time frame.

3. Domain name transitioning issues This is easier to fix when launching an intranet, as standard worldwide DNSpropagation time won’t apply. It’s possible that there may be issues ensuring that users are being sent to the new site as opposed to the old domain, and also issues with sites that are supposed to be linked to the production environment. These issues can both be mitigated by resolving the DNS in advance to a load-balancer inside the network that can be pointed at the old site, and then swapped over to the new site. This allows for advance propagation of the change in DNS/IP mappings without serving up the new site until launch day.

4. Content issues Once the full version of the website has been launched, there are usually multiple users who begin reviewing the site and its contents. Typos, grammar errors, layout problems, synchronization with publishing issues, etc. are often discovered as visitors explore the end-user site for the first time. While this can be avoided by establishing a proper Sitecore governance structure, it’s possible that prior to cutover, many users will be focused on content migration and viewing content in the authoring environment and less concerned with the end-user. This is to be expected but thanks to Sitecore’s easy CMS interface the changes can be made directly in production and published without needing to do another deployment. A note of caution: make sure you have a tracking system to track all the issues that are identified during this process!

5. Go/no-go time frame needs to be flexible Project teams will usually have the initial go/no-go meeting and look at remaining issues to determine if the team should be given more time to resolve them followed

122  |

www.nonlinearcreations.com

by another go/no-go meeting to reassess. These meetings often reveal obstacles to a successful launch that might include incorrect estimates, newly discovered bugs or other barrier issues. Be prepared to change the time of the go/no-go decision to reflect the extra effort that will be required to address the new issues.

6. Sitecore performance Performance testing should cover finding most of these issues but when the actual load of users begin using certain features new issues may be identified. Your team needs to be ready to disable these features for further investigation or real-time capability to address the performance issues. Integration points are the most common cause of this, so make sure these are included in your performance tests prior to launch.

7. Browser compatibility While QA has been doing browser verification, it is inevitable that slight differences in end-user browser/OS/hardware may find previously unknown compatibility problems. If your organization is launching an intranet, you may have control over the hardware and software installed on company-issued workstations, however users with various mobile devices or working from home may encounter unforeseen problems. When launching to the Internet, make sure the focus on browser testing is based on your historical analytics data to know where to focus your testing/development efforts, smaller groups can then be scheduled in based on business priority and desired markets.

8. Handling influx of support Due to the new user experience, and possible remaining issues in the system, there are usually a lot of questions that will come in via email, phone, forums, or your Twitter account. Resources need to be prepped for this increased load and there will be many prioritization decisions that need to be made to ensure tickets are handled efficiently. During the first few days only critical issues should be addressed and everything else should be prioritized into the backlog.

Nine steps to a successful Sitecore website launch

|  123 

9. Schedule for post-launch deployments After the initial cutover, there needs to be an agreed upon deployment plan for pushing out priority fixes for issues found during cutover or on the first few business days after cutover. Expect that the first day will likely be handling the influx of questions and prioritizing the issues, so starting on the second day you will likely need a scheduled deployment of priority fixes. If you follow these steps, you’re sure to feel a whole lot better on launch day.

124  |

www.nonlinearcreations.com

Three considerations when building multilingual sites with Sitecore Eduardo Moraes Solution Architect, Sitecore MVP

If your organization requires a CMS with the capability of creating multilingual sites, Sitecore is for you. Remember to keep these three considerations in mind when building your new sites. Nonlinear has developed extensive experience in building sites prepared to work with multilingual content. Based on this experience, we have learned that there are several things that projects employing the Sitecore CMS need to take into consideration to ensure proper implementation that allows for the reuse of content templates and replicated branding for localized content. These include, but are not limited to: •

design of the content tree



shared (or not) information architecture



how to deal with fallback content when translation is not available



use of dictionaries for common labels and other dynamic or static elements of pages



how to proceed with workflows for content that needs to be necessarily translated to multiple sites in different languages



how the media library should be organized to ensure reuse of media assets where applicable

Three considerations when building multilingual sites with Sitecore

|  125 

Language variants The first thing to do is to ensure you have the language variants configured in your system. By default, English will be there. Next, you need to add the other languages your website will need. In the screenshot below we have the Portuguese Brazil settings being added to our site.

Content tree design The way you architect your content tree in Sitecore should be determined by a series of inputs and variables. It starts with the information architecture for your new website, which is created to ensure a proper navigation for both site visitors on the published site and content authors working on Sitecore’s desktop interface. Let’s take the example below using an excerpt of an information architecture (IA) diagram prepared for one of our clients:

126  |

www.nonlinearcreations.com

In Sitecore it would be configured as follows:

The approach taken above seems an obvious one when we think of it only from the IA diagram’s perspective. However, what if you want URLs to be localized to different

languages? You will need to consider having the display names of these items also defined in Sitecore on the language version of each item you want a translated URL. Same content tree with display names in Portuguese:

Three considerations when building multilingual sites with Sitecore

|  127 

Also, to avoid blank spaces showing up in your navigation menu on your site, you want to make sure that the presentation logic will not display items that don’t exist (don’t have a comparable different language version) in a given language variant. Let’s say for example that the item \Empresa\Missao e Valores\Observancia (equivalent to \Company\Mission and Values\Compliance) doesn’t yet have a Portuguese version. It could have a field called “Include in Navigation” checked to false. The presentation logic for the menu would verify the content of this field and display or not display the item on the website’s menu. If your navigation is too different in a given language variant then you may consider creating a separate node in the content tree for the localized items instead of using the out-of-the-box language variants feature; the same goes for media items. Files that are common to both sites should be shared, while localized files should be placed in a separate folder created specifically to hold media items for that language.

Workflows The use of workflows can help to ensure that content is translated to a given language after it is created in its primary version. Let’s say that items are first created in English and after that they need to be translated to another language before being published. A workflow could be configured as follows and applied to the appropriate content templates:

.

128  |

www.nonlinearcreations.com

Sitecore 7.5/8 has been released- should you upgrade? Amanda Shiga Vice President, Digital, Sitecore MVP

With the releases of Sitecore 7.5 and 8, Sitecore owners have a decision to make on how best to plan their upgrade road map. We look at what questions need to be answered before making those decisions. Notes: •

Sitecore has released a knowledge base article on the Product Support Lifecycle, outlining the expected support coverage for each active version. If you are on Version 6.x, Mainstream Support is scheduled to end in 2015, so it’s important to consider this in your upgrade plans.

Sitecore 8—Thoughts on the upgrade Sitecore 7.5 and 8 were released in quick succession in Q4 2014.

Version 8 basics

Sitecore 8 was released in December 2014. With the new release, software and documentation documents have moved. We’ve got a list of the essentials here: •

Download the Sitecore 8 software at http://dev.sitecore.net



Find the Sitecore 8 documentation at http://doc.sitecore.net



Please note: Sitecore 7.5 documentation, particularly related to the xDB, is still highly relevant, until Sitecore converts and migrates it fully to the new location

Sitecore 7.5/8 has been released- should you upgrade?

|  129 

Check your infrastructure

If you’re still on Sitecore 6.x, you’ll want to double check that your current infrastructure can support the upgrade, as some prerequisites have changed. For the core product, you’ll need a minimum of: •

IIS 7.0



.NET Framework 4.5



Windows Server 2008+ or Windows Vista+



Visual Studio 2012



MongoDB: The xDB deployed on Mongo and associated configurations for session management and aggregation are not covered in this chapter.

Upgrade in-place or into new infrastructure?

The default approach is to perform the incremental upgrades in place per Sitecore’s directives. Upgrading from 6.6 to 8, for example, will require a series of intermediate steps of installing packages, updating configuration files and running update scripts on the databases. This approach also provides the opportunity to check against documented major changes at each step to better troubleshoot any issues encountered. We advise taking the approach of a local dress rehearsal that generates an Upgrade Book documenting all necessary steps and tweaks. However, if you do need to upgrade or migrate your infrastructure, you may choose to do a base install of Sitecore 8 on a new instance and import your existing solution and content tree. This is a good opportunity to upgrade to latest versions of Windows, SQL Server, etc. Be aware that you will still need to generate a Sitecore export package that is compatible with version 8, and at least an equivalent amount of effort will be needed to do so and perform the necessary testing.

As with any new major release, expect patches and updates

Sitecore 8 introduces an entirely new set of functionality, APIs and a brand-new SPEAK-based interface across the product. In the known issues for Sitecore 8, there are a few minor “gotchas” that we expect will be resolved in upcoming updates. These are good to have on the radar if you are considering an immediate upgrade. A couple of examples: •

If you’re using Web Forms for Marketers, you can’t yet add a Form from the new Experience Editor interface

130  |

www.nonlinearcreations.com



If you’re using IE10 or IE11 for administration, there are some limitations still to be addressed with the interface



The Sitecore Analytics assembly contains some ToDo and NotImplementedExceptions that will be implemented in a later update

A note on modules

If you are using any Sitecore modules such as Email Campaign Manager, Web Forms for Marketers, or the CRM connector, be aware that each module has its own upgrade path and compatibility timeline. The core Sitecore version may upgrade faster than the modules you are using. Sitecore has published a handy chart to check which modules are compatible with which version, and whether you’ll have to upgrade modules as well or wait for a new module version to be released (if it is critical to your business functions).

Check your Sitecore license

All Sitecore customers should check with their Sitecore sales rep to ensure that an upgrade to version 7.5 or 8 is fully supported by their current Sitecore license.

Sitecore 8 goodies And finally a refresher on some of the most exciting features awaiting us in Sitecore 8: •

A shared session across devices and channels that can be linked with a unique identifier: If a user browses from their phone, and then their laptop, we can associate both visits with that user to help build a complete picture of their activity. Nice!



A “helping hand” for marketers: Among other things, Sitecore will suggest which content tests should be run, and the Path Analyzer will suggest areas to investigate and optimize.



A brand-new sophisticated analytics interface: 50+ out-of-the-box reports, including segmentation by behavioural patterns.



The power of the xDB and Customer Card as an aggregation engine: allows us to pull in not just analytics data but also to supplement with external data from CRMs, other databases and even public data sources.

Sitecore 7.5/8 has been released- should you upgrade?

|  131 



Content testing built into the content authoring interface and workflow: targeted to both beginners and optimization experts, who can now tweak things like traffic allocation and confidence level.



Content testing results: measured by engagement value or conversions, and Sitecore will calculate how long the test should run for statistical significance.

Upgrading to Sitecore 7.5 Last week Sitecore released the latest version of the Customer Experience Platform, version 7.5, amidst all the recent fanfare surrounding Sitecore 8. The release marks the next stepping stone for users and comes with a series of upgrading questions. We’ll take a look at what you need know before making the decision to upgrade to 7.5, but first, here is a quick refresher on the most significant enhancements for each recent release: •

Version 6.5 and 6.6 — Major upgrades to Page Editor and DMS functionality



Version 7.0 and 7.2 — Massive content scalability with the addition of buckets, developer goodies and publication efficiency improvements



Version 7.5 — Massive analytics and customer experience scalability with the new analytics collection database (xDB) moving from SQL Server to MongoDB



Version 8 — Next-generation DMS with all-new analytics, reporting, testing and “one view of the customer” full experience management. This version clearly marks Sitecore’s huge leap from a tactical solution to an online publisher and finally to a strategic solution to marketing needs in a connected world.

Sitecore 7.5—What do I need to know? The biggest feature of version 7.5 is that it introduces the Experience Database and Profile, which is an important puzzle piece that will support and set the stage for the vision of Sitecore 8. Along with the new release comes a new list of terms to understand: •

The Experience Database (xDB) is the new massively scalable version of Sitecore’s analytics database that collects all customer interactions to present a unified view of an individual customer. This database is built on MongoDB instead of SQL Server and is available as an on-premise or cloud-based solution.

132  |

www.nonlinearcreations.com



The Experience Profile (xFile) gives marketers complete visibility into every customer interaction and can pull in interactions from all channels and all points of interaction. This unified information gives marketers the power to create a deep understanding of what visitors want and how to react to opportunities in real-time.

Once upgraded to Sitecore 7.5, you don’t need to start using the Experience Database immediately, but it is advantageous to begin to understand both its infrastructure implications and marketing potential as Sitecore 8 approaches.

Preparing for the Experience Database The new xDB uses MongoDB for collection and SQL Server for reporting. Your most important decision will hinge on whether you want to host MongoDB within your on-premise infrastructure or take advantage of Sitecore’s xDB cloud offering. Due to the sheer volume of data the Experience Database collects, many organizations welcome the opportunity for cloud storage; however, some organizations may have policies that require on-premise deployments. Either way, the introduction of MongoDB is a significant infrastructure consideration and the proper preparation should be done well in advance of planned usage. For more information, you can refer to our chapter on using xDB on-premises vs. in the cloud, as well as Sitecore’s documentation on xDB architecture, xDB configuration and xDB cloud deployment.

Migrating your current DMS analytics database If you are already using the current DMS analytics database to collect and report on visitor behavior, you may want to consider preserving the data you’ve collected thus far for historical insight. If so, Sitecore does provide a Sitecore Analytics Conversion Tool to migrate your analytics data into the new xDB and you’ll want to consider this as part of the upgrade effort.

Sitecore 7.5/8 has been released- should you upgrade?

|  133 

Upgrade now, or wait for Sitecore 8? If you’re currently on version 6.x–7.2, we strongly recommend upgrading now. Why?

Gain immediate momentum

If you’re eager to start leveraging the marketing power of Sitecore 8 and the Experience Profile, upgrading to Sitecore 7.5 now will allow your team to start getting familiar with the new platform. You can invest now in infrastructure readiness, solution readiness and team/training readiness to pave a smooth road towards fully leveraging Sitecore 8 and a better sense of your digital roadmap. It’s important to note that Sitecore 8 does represent a significant leap to an incredibly powerful strategic marketing platform. It is best not to underestimate the runway you’ll want to prepare your team and your organization to fully leverage its features.

Don’t fall too far behind on the upgrade path

Postponing upgrades means more costs later when you have to perform a significant upgrade between major releases and especially when your solution is optimized to an older version. Keeping as current as possible means you’ll both be saving on overall upgrade costs and also ensuring your team has a chance to leverage the latest features as soon as possible. Sitecore has also just released an official support schedule for all active versions, outlining the timeframes of support phases for each version. If you are on version 6.x, be aware that Mainstream Support will end in the 2015 calendar year.

Take advantage of 7.x goodies

If you’re currently on version 6.5 or lower, you’re missing out on a few great modules and add-ons that are compatible with newer versions. Even if you’re not quite ready to use the Experience Profile, with version 7 a whole new world opens up. Here are a few examples: •

Federated Experience Manager — allows tracking of visitor interactions external to Sitecore



Sitecore Commerce — a comprehensive and fully integrated set of commerce capabilities

134  |

www.nonlinearcreations.com



Experience Explorer — enables simulation of visits to a DMS enabled website with different visitor personas (presets) and preset modes



Sitecore Item Buckets — a new content structure offering massive content scalability

The counter argument As always, there are certain cases where it may make more sense to postpone your upgrade. It may make sense to consider waiting if: •

You are already on version 7.1 or 7.2 and do not have the capacity to immediately leverage the Experience Profile or to train your team more than once on new DMS functionality



Your budget is extremely limited and you can only fit in one upgrade deployment with regression testing and quality assurance (that said, laying the groundwork with a 7.5 upgrade should minimize the upgrade efforts to 8)



You are risk-averse and prefer to upgrade to a major release when it has been battle-tested in the market for a decent amount of time

With Sitecore’s rapid release cycle, we’re always supporting our clients in assessing the right time and right approach to upgrading. Whatever your upgrade roadmap, we’re happy to help.

Sitecore 7.5/8 has been released- should you upgrade?

|  135 

Scaling Sitecore 7.5: xDB on-premises or in the cloud? Glen McInnis Vice President, Technology, Sitecore MVP

Sitecore 7.5’s xDB provides a scalable and robust architecture to collect behavior data from your customers and drive decision making for your online presence. With the introduction of Sitecore 7.5, there is now the option to place this component of the Sitecore solution in a Sitecore managed cloud service (backed by Microsoft Azure). While many organizations will choose to host the entire Sitecore solution in their own data center, there can be great benefits to hybrid and cloud approaches. The xDB cloud service is just one of many emerging cloud services that make hybrid deployments of Sitecore easy and attractive. In this chapter I discuss not only considerations for xDB in the cloud, but the broader considerations of the traditional Sitecore CMS components as well. The xDB service provided by Sitecore is an end-point in the Azure cloud that your Sitecore installation uses to collect (MongoDB), aggregate and report on visitor behavior. Behind the scenes, Sitecore provides high availability, elastic scaling and disaster recovery—an attractive package to say the least. With that background in mind, let’s break it down into a few key points of consideration:

136  |

www.nonlinearcreations.com

Scaling As stated previously, Sitecore’s xDB service provides for scaling—nothing for you to worry about there. Traditional Sitecore components (content delivery, content management) can scale both horizontally and vertically. Most major public and private cloud providers come with the ability to add processing and memory resources to existing infrastructure and provision new virtual machines on demand. This can allow for cost effective operation in low seasons and an easy means to scale up in peak seasons. When evaluating providers you should clarify if adding resources to a virtual machine takes it offline, and if so what the turn-around time is to complete the operation. Auto-scaling based on set conditions is very useful for hands-off management. Given that the cloud xDB service is in the Azure cloud, this would make for a compelling argument to consider placing traditional Sitecore components—particularly content delivery—in the Azure cloud.

Security Hosting your website within your own data center opens the center and the network—to some extent—to attacks. I have worked with a number of high profile customers that chose to host elsewhere to reduce the overall public footprint of their data centers. If your site is highly visible and a regular target for attack/protest this can be a major benefit for your security team. This would again be an argument to place content delivery in the cloud as well.

Geography and disaster recovery Getting your choice of data center location can provide better performance for global brands by getting closer to end customers. Widely dispersed data centers also provide greater assurance that regional disasters do not impact all environments.

Connection to on-premise Invariably, a cloud solution will require a secure connection to on premise applications. Understanding how this is accomplished (often VPN) and how bandwidth and performance of that link is managed is another critical component. In Azure, the new Express Route feature is very attractive for high performance linkages to on premise applications.

Scaling Sitecore 7.5: xDB on-premises or in the cloud?

|  137 

If choosing to leverage Sitecore xDB service, it would be wise to test the connection reliability between your on-premise components and the xDB service.

Privacy Each jurisdiction has differing laws on privacy and the government’s right to access data stored/transiting country. Choosing a cloud provider with data centers in specific jurisdictions gives you some flexibility in navigating these complicated waters. Given that xDB houses all of your customer data, it should be clear what implications it has for your business to host that data in the Azure cloud.

Development environments During large scale development projects, using on-demand lightly reserved can be a fast and effective way to scale up development, QA and CI servers. When working with a worldwide team 24x7 the self-service tools of the cloud providers ensures developers are not waiting for assistance from the help desk to provision virtual machines and the like. There is no “right” answer when it comes to choosing the cloud over on premise. Regardless of which approach you choose, give yourself the time to test the proposed deployment architecture and understand the maintenance requirements. As a final thought, xDB is not the only cloud service for Sitecore. When considering xDB’s residency keep in mind the following other services:

MaxMind GeoIP

MaxMind provides a web service that Sitecore can use for GeoIP lookups. MaxMind manages the central database of IP’s ensuring the most up to date information. MaxMind can be purchased from the MaxMind website.

ECM Mail Transport

A managed mail transport service is also available to manage blacklist, queues and all of the other details of mailing lists. The mail transport service is also available from the Sitecore App Center.

138  |

www.nonlinearcreations.com

Azure PaaS

As you are no doubt aware Sitecore has a pre-build deployment method for the Azure PaaS. The Azure PaaS model offers a lower level of complexity and cost over traditional VM’s. The gory details are on SDN. Regardless of your final choice, there is a lot of flexibility inherent in Sitecore. For many of the reasons noted previously you may elect to host certain components like Content Management on premise and Content Delivery and xDB in the cloud.

Scaling Sitecore 7.5: xDB on-premises or in the cloud?

|  139 

A Sitecore 8 sneak peak

Glen McInnis Vice President, Technology, Sitecore MVP

Since the wrap up of Symposium, the Sitecore community has been buzzing to get their hands on the newly announced Sitecore 8. In the first of a series, we look at the changes made to the platform’s UI. Please note: This chapter is based on the Sitecore 8 Technical Preview provided to our 7 Nonlinear Sitecore MVPs. Once it lands in the hands of users, some details may have been changed. For all the latest Sitecore news, please consult SDN, or get in touch with our Nonlinear Digital team. Now that we’ve gotten the housekeeping out of the way, let’s take a look at the incredible visual transformation that Sitecore has gone through. You may remember that Sitecore once looked a little something like this:

140  |

www.nonlinearcreations.com

Well prepare yourself because Sitecore 8 is most certainly new and improved:

A Sitecore 8 sneak peak

|  141 

The default page upon logging in is now the Launch Pad, which gives you easy access to all of the applications and interfaces of Sitecore, some of which you’ll noticed have been renamed:

Sitecore 8 has reimagined a few modules, with new names and new icons including: •

Email Experience Manager = Sitecore 6/7 Email Campaign Manager (ECM)



Experience Editor = Sitecore 6/7 Page Editor

Federated Experience Manager, Experience Analytics and Path Analyzer are all new additions, but we’ll save those for another, more in-depth look at Sitecore’s newest offerings.

142  |

www.nonlinearcreations.com

Wondering about the desktop? That’s seen a revamp as well:

And one of the features I’m most excited about: at any time, you can jump back to the launch pad using the omnipresent button in the toolbar (a real benefit to those of us who are jumping back a forth a lot):

Sitecore has done a really nice job with this updated UI, which has also been made more compatible for mobile devices. While not fully responsive, many screens do resize/scale in a more mobile friendly version than past Sitecore editions. I also found the UI to be more responsive than past Sitecore versions.

A Sitecore 8 sneak peak

|  143 

Sitecore 8: A look at database changes

Glen McInnis Vice President, Technology, Sitecore MVP

Sitecore 8 brings with it a number of new features, but for the most part, databases have been kept fairly similar. Upgrading from 7.5, as opposed to starting net new will require answering two key questions: If you’ve worked with Sitecore 7.5 the changes to databases are minimal, but for those that will be upgrading from a pre-7.5 release Sitecore 8 has introduced some changes to the database structure of the product. The common databases—Master/ Web/Core/Analytics—are all still there, but Sitecore has added more to the mix: sessions and Mongo collection databases, which were introduced in 7.5. What was previously referred to as the Analytics SQL database has now been labelled Reporting. Conversely, the new Analytics database now references a MongoDB for collection. It is not shown in this config file, but there is also the option to connect another SQL database as a state server (there is an option to use Mongo as well).

144  |

www.nonlinearcreations.com

If you’re doing a fresh 7.5 or 8 installation the planning should be straight forward. Upgrading from a pre-7.5 release may require some additional hardware or adjustments to support your high availability, disaster recovery and performance objectives, but overall you’ll need figure out the answer to two key questions: 1.

Do you move from a cookie session to a database based session store?

2.

Do you put the Mongo collection db in the cloud? (Sitecore sells this as a service and you may recall that we wrote a chapter on the subject not too long ago exploring the options of scaling on premises or in the cloud)

Sitecore 8: A look at database changes

|  145 

Sitecore 8: Introducing the Federated Experience Manager (FXM) Glen McInnis Vice President, Technology, Sitecore MVP

One of the most exciting things to come out of the Sitecore 8 announcement was the introduction of the Federated Experience Manager, or in new Sitecore naming practices, the FXM. In the final chapter of our introduction to Sitecore 8 series, we present the feature that had marketers and developers alike salivating: the Federated Experience Manager or FXM. This new addition introduces the Sitecore DMS and its personalization capabilities to a whole new market by allowing users of Sitecore to take advantage of the Sitecore Experience Platform on non-Sitecore powered websites. By registering an external site in the FXM, you’ll be given a JavaScript beacon to place on your non-Sitecore site which injects all the functionality you need to track and personalize that site. Without further ado, we’re going to how you how simple it is to enable the Federated Experience Manager on your non-Sitecore website in 3 easy steps:

146  |

www.nonlinearcreations.com

1. Register for the site

2. Save and Publish the setup

Copy the JavaSCript beacon into every page on the site to track:

Sitecore 8: Introducing the Federated Experience Manager (FXM)

|  147 

3. Open the page(s) in Experience Editor

You’re now ready to start personalizing your website to increase conversions and turn casual visitors into loyal customers. The FXM not only enables the use of the DMS’ personalization capabilities, but also its analytics, allowing your team to start making data driven decisions.

148  |

www.nonlinearcreations.com

Sitecore development: 13 reasons to avoid reusing your old code Grant Bartlett Solution Architect

Saving time and money are easy draws when considering a new website, and one of the easiest ways to do both is to reuse an existing code base. Here are 13 reasons to avoid it in your next Sitecore build: Planning a new Sitecore website is an enormous undertaking; from user stories and planning to development and design, it’s common to have stakeholders asking for recommendations on elements that can be brought over from a previous website as a way of saving time and/or money. Being asked to reuse code base that was written for an original website is one that we have run into often. It’s an understandable request, as code reuse has certain potential advantages: •

Less code to write means less time to production which results in money saved



The business logic is already written, so it doesn’t need to be reproduced



Due to aggressive timelines reusing existing code can act as an interim step and upgraded later

On the surface, those are all excellent observations, but don’t necessarily illustrate the full picture. I’ve put together a list of 13 things to consider when talking code reuse:

Sitecore development: 13 reasons to avoid reusing your old code

|  149 

1. Potential for new HTML If the code being reused has HTML, it will likely not be compatible with the new site’s HTML. The picture becomes even more muddy if JavaScript/JQuery functionality is part of the picture. Clashes between existing JavaScript/Jquery and the new build is typical and expected.

2. Reusing a sublayout or web control If the code being reused is a Sitecore sublayout/webcontrol, remember that this control will be included in a layout that will be part of a completely different code base and will likely lose some if not all of the original functionality.

3. Field placement If your controls are dependent on fields in Sitecore or their relative placement in the organization of your Sitecore content tree, it is likely one or both of these things will change.

4. Global configuration settings The global configuration settings of the new build will likely be different from your existing build. For example, web.config entries will likely change and these settings are global and impact code execution.

5. .NET framework considerations Upgrading your site may also mean jumping a version of the .NET framework, potentially impacting your code execution.

6. Upgrading your Sitecore instance Rarely is a new build rolled out without upgrading your Sitecore version which itself can introduce unforeseen issues. Starting to consider an upgrade to Sitecore 7.5? Whether you’re ready to start using the xDB or hoping to be well-prepared for Sitecore 8, there are a few things to consider.

150  |

www.nonlinearcreations.com

7. Code functionality Do you know what your current code actually does? Most fix bugs get reported due to the rigorous QA of a new build. Oftentimes, these issues were present on the previous site, but went unnoticed.

8. Technical improvements With new technology comes new functionality that your existing controls may not support. Take the Sitecore Digital Marketing System for example- its functionality is constantly being changed and improved and it’s entirely likely that your old code won’t be able to support it accordingly.

9. Changes in agreed upon best practices As technology evolves, so do best practices. Your code may have been built with best practices in mind at the time, but now those are likely out-dated.

10. Code complexity Be aware of underestimating the complexity of your existing code base. Can your code be easily extracted from your existing code base? Are there dependencies that need to be accounted for and pre-work that needs to be done to extract the code?

11. Architecture decisions Do you need to make architecture decisions in your new build to accommodate your existing controls?

12. In-house development skills Oftentimes, the original developers behind the code have moved on. Should there be a need to dig into the code base, do you have the expertise to facilitate it?

13. New performance metrics Does your existing code meet the performance metrics of your new site?

Sitecore development: 13 reasons to avoid reusing your old code

|  151 

Integrating Sitecore with your content delivery networks Eduardo Moraes Solution Architect, Sitecore MVP

Enabling your Sitecore website to effectively store and use digital assets, can prove somewhat challenging. We offer solutions to a few common issues when dealing with content delivery networks: As the trend for websites skews to bigger, better imagery and a strong multimedia presence, developers require elegant solutions for storing and presenting a large number of digital assets. Our own Sitecore developers are often required to integrate digital assets that are manged within the Sitecore Media Library with a content delivery network. The main advantage of using content delivery networks is to remove highly consuming payloads from a website’s server. Lazy loaded CDNs like Akamai or AWS offer better performance and caching mechanisms. In Sitecore, we can achieve this with the setup of different domains that will redirect the request for a Sitecore image to the actual content server (your CDN).

Sitecore digital asset management with CDN Since Sitecore version 6.4, we’ve had out-of-the-box configuration to define the URL prefix for items coming from the Media Library. The entry for the web.config looks like this:

152  |

www.nonlinearcreations.com

You’ll notice in the comment section that it mentions that this is typically used “when your solutions is configured to store Sitecore media on a content delivery network.” Unfortunately there are a few problems with this approach: firstly, media items will always be delivered using the defined URL prefix, regardless of whether you’re authoring content and on preview mode or actually browsing the published site. To avoid this issue, you could separate your environments and make sure each one has its own Media.MediaLinkServerUrl configured accordingly. Secondly, the URL generated for a given file doesn’t provide information about its version or published date/time. For example, if you have an image item called logo, its URL might be something like http://cdnhosturl/~media/images/logo.ashx.

If the logo image was updated, as the URLs remains the same, the CDN would not know if its cached should be cleared or not. To avoid this issue, solutions such as the Sitecore CDN Connector append URL parameters to ensure the CDN is aware of the version of the file. In our example, the logo file would be delivered as something like http://cdnhosturl/~media/images/logo.ashx?vs=1&d=20142910T120000.

The module provides its own set of configuration settings to be appended to the web.config file and a more granular custom URL rewriting logic where, through the appropriate parameters, specific file extensions can be defined to be included or excluded for rewriting.

Integrating Sitecore with your content delivery networks

|  153 

Multiple CDN URL prefixes Another issue you may run into with existing solutions is one where they may only accommodate a single URL prefix for CDN. In some cases, clients may have different URL prefixes for different types of media. For example, one CDN for images and another for videos. To implement that, the methods that return the CDN host of the Sitecore CDN Connector need to be modified to receive the type of media as a parameter:

As well, the method that actually does the replacement of URLs (ReplaceMediaURL method inside CDNProvider.cs) also needs to be modified to accommodate the selection of different hostnames based on the media type: cdnHostname = GetCDNHostName(GetMediaType(mediaItem));url. HostName = cdnHostname;

Finally, the GetMediaType method needs to be implemented to return the appropriate types that will have different CDN host names. For example, we could have the following types in the config file:

154  |

www.nonlinearcreations.com

The bottom line Most of the hard work around making Sitecore render digital media assets to be properly cached and then delivered by a CDN was already done and is available on the Sitecore Marketplace. Extending it and making it also rewrite URLs for multiple host names serving different types of media assets in a same Sitecore site can be achieved using the proposed solution in this chapter.

Integrating Sitecore with your content delivery networks

|  155 

Anatomy of a Sitecore deployment

Jason St-Cyr Solution Architect, Sitecore MVP

Preparing to deploy your Sitecore instance? Following along with these four phases will help you to develop a plan and put you on a path to successful deployment. Here is a brief overview of how an automated deployment for Sitecore comes together. This should help you get started with planning out your deployment strategy.

1. The ‘compile’ phase During the first stage of an automated deployment, standard MSBUILD technology is used to perform a compilation of the .NET solution stored in source control. This will generate the following: •

A website folder that can be deployed to environments



DLLs placed in the bin folder for each .NET project or referenced third-party DLL



Assets (CSS, JS, ASCX) used by the website for presentation



Configuration files (App_Config) that contain the solution configuration for the Sitecore instance

2. The ‘content’ phase In addition to standard .NET projects, Sitecore projects also have content that needs to be deployed. Nonlinear makes use of Team Development for Sitecore (TDS) projects to source control content that is critical to the operation of the solution. These

156  |

www.nonlinearcreations.com

elements will include Sitecore data templates, Sitecore presentation details, system configurations, customized rules, and other elements which are stored in the Sitecore database but are not business-authored content for the website. A very simple example would be the field definitions for which fields are available for an author when editing the titles (browser/navigation/page title) on a web page. The MSBUILD step is also used to build or deploy content packages using these TDS projects. During this phase the build server will trigger the following: 1.

The Build server installs necessary TDS web service if missing

2.

The Build server opens a connection to the TDS web service on the configured endpoint

3.

The Build server begins transmitting serialized versions of these items to the target Sitecore instance

4.

The Sitecore instance then saves these to the Sitecore database

If you are using a tool like Octopus Deploy, this phase may be broken into separate steps of building packages and then said packages.

3. The ‘file’ phase After the code has been compiled into a package and the content has been transmitted, the build server can begin deploying the compiled fileset package to the target servers. This usually involves multiple steps: 1.

Clean-up of any files on the destination server that should be removed prior to deployment—this is usually contained to the Sitecore App_Config\Include folder, and only files with certain naming conventions that identify them as part of the Nonlinear solution will be removed.

2.

Deployment of all files to the destination server(s).

3.

Renaming of configuration files—this ensures that any environment-specific files are installed and activated. By default, these files are set as ‘.disabled’ or ‘.example’, and must be activated based on the requirements of the instance.

4. The ‘publish’ phase After the release has been deployed, it is necessary to ensure that the content in the Master database is pushed to the delivery databases. This requires remotely triggering a publish in the Sitecore instance. Anatomy of a Sitecore deployment

|  157 

It is useful to use an HTTP API for this phase, which the build server will trigger in order to begin the publishing phase. Depending on the performance of the environment, it may be necessary to trigger a ‘wake-up’ of the instance prior to publishing in order to ensure Sitecore is ready to receive the publishing request.

The ‘optional’ steps In some cases, not all required deployment components can be automated. In these cases, specific manual steps are provided which must be executed during the deployment to ensure a functioning site. For example, it is against most security best practices to automate the deployment of users from one environment to another. You will likely wish to remove as many of these manual steps as possible to ensure a smoother and more repeatable process.

158  |

www.nonlinearcreations.com

Sitecore multi-site hosting: hostName attributes

Grant Bartlett Solution Architect

This chapter describes how to properly configure your hostName attributes to ensure cross-site links work properly when hosting multiple sites in Sitecore. The secret of Sitecore’s ability to resolve multiple websites via different URLs is within the configuration of the web.config. This is where each site’s URL is defined and which subsequently determines how internal links between sites are resolved. When I refer to internal links, I mean links to other pages within Sitecore using the internal link dialogue wizard. When such a link exists, Sitecore’s link manager runs and transforms the links into relative links based on the settings in the node of your web.config. When Sitecore runs a published site, it attempts to match the hostname used to resolve the site with a configured “hostName” attribute in one of the sites configured under the node. It does this by: 1.

Evaluating the sites listed under the node from top to bottom (yes, order is important)

2.

It loads the first site configuration where it finds a hostname match or the first site that does not have a hostname configured (you’ll see this behavior in Test 2 below)

Sitecore multi-site hosting: hostName attributes

|  159 

3.

If it does not find a match, the “website” site is used. By default, it does not have a hostname configured. In other words, the “website” configuration is ultimately the default/fallback site configuration. This also means that any sites you configure below the “website” entry will effectively be ignored since the “website” node will always be used.

To see this in action, let’s walk through an example. Our end goal is to ensure crosssite links reflect the URL for the respective site. Here is the setup in Sitecore:

Site 1:

Home page: /sitecore/content/Site1 Child page: /siteocre/content/Site1/AboutSite1 URL: http://site1.url

Site 2:

Home page: /sitecore/content/Site2 Child page: /sitecore/content/Site2/ContactSite2 URL: http://site2.url For our example, we will test each site URL(as defined above), confirm that the URL resolves the correct home page, and then look at the links in the home page to see how Sitecore resolves them. Here are the links I’ve supplied on the home pages for both sites:

160  |

www.nonlinearcreations.com

Site 1 home page links

Site 2 home page links

AboutSite1

AboutSite1

Site2

Site1

ContactSite2

ContactSite2

We will make Site1 our default/main site. That is to say, the “website” site configuration will be configured to return Site1.

TEST 1 To begin, we will not create a site configuration for Site2 and we will not add a hostName attribute to the “website” configuration. So what do those links look like when we do?

A. Do the site URLs Work? Input URL

Desired Page

Content Item Resolved

Test Successful?

http://site1.url

Site 1 Home

/sitecore/content/Site1

ü

http://site2.url

Site 2 Home

/sitecore/content/Site1

Ñ

B. Are the on-page links generating the correct URLs? Test Location: Site 1 Home Page (http://site1.url) Link Clicked

AboutSite1

Desired URL

http://site1.url/AboutSite1.aspx

Actual URL

http://site1.url/AboutSite1.aspx

ü

Content Item Resolved

/sitecore/content/Site1/AboutSite1

ü

Test Successful?

ü

Sitecore multi-site hosting: hostName attributes

|  161 

Link Clicked

Site2

Desired URL

http://site2.url/

Actual URL

http://site1.url/Site2.aspx

Ñ

Content Item Resolved

/sitecore/content/Site2

ü

Test Successful?

Ñ

Link Clicked

ContactSite2

Desired URL

http://site2.url/ContactSite2.aspxv

Actual URL

http://site1.url/Site2/ContactSite2.aspx

Ñ

Content Item Resolved

/sitecore/content/Site2/ContactSite2

ü

Test Successful?

Ñ

Test Location: Site 2 Home Page (http://site2.url) Since the wrong home page was loaded – we cannot test the links on the site 2 home page

Observations Site URLs •

Since a unique site configuration for Site2 hasn’t been configured, Sitecore loads the default “website” site configuration when the http://site2.url is used which results in the Site1 home page being loaded.

On-Page Links •

Links to Site1 are as expected



Links to Site 2—Sitecore is able to create links to these pages, even though the Site2 pages are not inside the Site1 node. However, the URLs are incorrect

162  |

www.nonlinearcreations.com

Conclusion

All URLs will resolve the default “website” site configuration if other sites are not configured.

TEST 2 Let’s add a site configuration for Site2 above the website configuration but for now, we won’t configure the hostName attribute for our new site. What do the links do now?

A. Do the site URLs Work? Input URL

Desired Page

Content Item Resolved

Test Successful?

http://site1.url

Site 1 Home

/sitecore/content/Site2

Ñ

http://site2.url

Site 2 Home

/sitecore/content/Site1

ü

B. Are the on-page links generating the correct URLs? Test Location: Site 1 Home Page (http://site1.url) Since the wrong home page was loaded – we cannot test the links on the site 1 home page Test Location: Site 2 Home Page (http://site2.url) Link Clicked

AboutSite1

Desired URL

http://site1.url/AboutSite1.aspx

Actual URL

http://site2.url/AboutSite1.aspx

Ñ

Content Item Resolved

/sitecore/content/Site1/AboutSite1

ü

Test Successful?

Ñ

Sitecore multi-site hosting: hostName attributes

|  163 

Link Clicked

Site1

Desired URL

http://site1.url/

Actual URL

http://site2.url/Site1.aspx

Ñ

Content Item Resolved

/sitecore/content/Site1

ü

Test Successful?

Ñ

Link Clicked

ContactSite2

Desired URL

http:// site2.url/ContactSite2.aspx

Actual URL

http://site2.url/Site2/ContactSite2.aspx

ü

Content Item Resolved

/sitecore/content/Site2/ContactSite2

ü

Test Successful?

ü

Observations •

As I described earlier, Sitecore evaluates the site nodes for the first match. Without a hostname attribute in place, Site2 becomes the first to match and is loaded. This means both http://site1.url and http://site2.url load the Site2 home page.

Conclusion:

Our Site2 configuration is now the default configuration.

164  |

www.nonlinearcreations.com

TEST 3 Let’s add the hostName attribute to our new site: hostName=”site2.url”

A. Do the site URLs Work? Input URL

Desired Page

Content Item Resolved

Test Successful?

http://site1.url

Site 1 Home

/sitecore/content/Site1

ü

http://site2.url

Site 2 Home

/sitecore/content/Site2

ü

B. Are the on-page links generating the correct URLs? Test Location: Site 1 Home Page (http://site1.url) Link Clicked

AboutSite1

Desired URL

http://site1.url/AboutSite1.aspx

Actual URL

http://site1.url/AboutSite1.aspx

ü

Content Item Resolved

/sitecore/content/Site1/AboutSite1

ü

Test Successful?

ü

Link Clicked

Site2

Desired URL

http://site2.url/

Actual URL

http://site2.url/

ü

Content Item Resolved

/sitecore/content/Site2

ü

Test Successful?

ü

Sitecore multi-site hosting: hostName attributes

|  165 

Link Clicked

ContactSite2

Desired URL

http://site2.url/ContactSite2.aspx

Actual URL

http://site2.url/ContactSite2.aspx

ü

Content Item Resolved

/sitecore/content/Site2/ContactSite2

ü

Test Successful?

ü

Test Location: Site 2 Home Pge (http://site2.url) Link Clicked

AboutSite1

Desired URL

http://site1.url/AboutSite1.aspx

Actual URL

http://site2.url/AboutSite1.aspx

Ñ

Content Item Resolved

/sitecore/content/Site1/AboutSite1

ü

Test Successful?

Ñ

Link Clicked

Site1

Desired URL

http://site1.url/

Actual URL

http://site2.url/Site1.aspx

Ñ

Content Item Resolved

/sitecore/content/Site1

ü

Test Successful?

Ñ

166  |

www.nonlinearcreations.com

Link Clicked

ContactSite2

Desired URL

http:// site2.url/ContactSite2.aspx

ü

Actual URL

http://site2.url/Site2/ContactSite2.aspx

ü

Content Item

/sitecore/content/Site2/ContactSite2

Resolved Test Successful?

ü

Observations •

We finally have 2 unique urls loading different sites in Sitecore. http://site1.url resolves the Site1 home page and http://site2.url resolves the Site2 home page.



Site1 is aware of the the “site2.url” hostname, and appropriately applies it to urls linked to pages in Site2



Site2 is not aware of the “site1.url” hostname. Links still reference links to Site1 pages via the “site2.url” hostname

Conclusion:

Sitecore understands that pages belonging to Site2 should be linked using the “site2.url” hostname

TEST 4 We will now add the hostName attribute to the “website” site configuration: hostName=”site1.url”

A. Do the site URLs Work? Input URL

Desired Page

Content Item Resolved

Test Successful?

http://site1.url

Site 1 Home

/sitecore/content/Site1

ü

http://site2.url

Site 2 Home

/sitecore/content/Site2

ü

Sitecore multi-site hosting: hostName attributes

|  167 

B. Are the on-page links generating the correct URLs? Test Location: Site 1 Home Page (http://site1.url) Link Clicked

AboutSite1

Desired URL

http://site1.url/AboutSite1.aspx

Actual URL

http://site1.url/AboutSite1.aspx

ü

Content Item Resolved

/sitecore/content/Site1/AboutSite1

ü

Test Successful?

ü

Link Clicked

Site2

Desired URL

http://site2.url/

Actual URL

http://site2.url/

ü

Content Item Resolved

/sitecore/content/Site2

ü

Test Successful?

ü

Link Clicked

ContactSite2

Desired URL

http:// site2.url/ContactSite2.aspx

Actual URL

http://site2.url/ContactSite2.aspx

ü

Content Item Resolved

/sitecore/content/Site2/ContactSite2

ü

Test Successful?

ü

168  |

www.nonlinearcreations.com

Test Location: Site 2 Home Page (http://site2.url) Link Clicked

AboutSite1

Desired URL

http://site1.url/AboutSite1.aspx

Actual URL

http://site1.url/AboutSite1.aspx

ü

Content Item Resolved

/sitecore/content/Site1/AboutSite1

ü

Test Successful?

ü

Link Clicked

Site1

Desired URL

http://site1.url/

Actual URL

http://site1.url/

ü

Content Item Resolved

/sitecore/content/Site2

ü

Test Successful?

ü

Link Clicked

ContactSite2

Desired URL

http:// site2.url/ContactSite2.aspx

Actual URL

http:// site2.url/ContactSite2.aspx

ü

Content Item Resolved

/sitecore/content/Site2/ContactSite2

ü

Test Successful?

ü

Sitecore multi-site hosting: hostName attributes

|  169 

Observations •

Cross-site links are now accurately reflecting the hostName attributes for both sites.

Conclusion

The hostName attribute is very important and required to properly resolve cross-site links hosted in Sitecore.

170  |

www.nonlinearcreations.com

Three Sitecore gems to share with your content authors Grant Bartlett Solution Architect

While technical documentation on Sitecore is plentiful, content authors are often overlooked. We provide them with three gems that help to simplify the content author experience. Over my time working with Sitecore, it has become quite obvious that content authors are not always well represented during the architecture stage of a project. As part of my client engagements here at Nonlinear, I’ve often presented demos and hosted sessions to show content authors the ropes of using Sitecore. After a recent conversation with one of our Nonlinear website content authors, I wanted to write a quick chapter outlining three pieces of functionality that content authors don’t typically use, but will certainly find useful.

1. Sitecore links If you’ve ever been in a position where you want to understand what pages or items in Sitecore link to your current page, or which items in Sitecore your current page references, the links button in the Navigate ribbon is for you.

Three Sitecore gems to share with your content authors

|  171 

2. Sitecore favourites Another helpful button found in the Navigate ribbon, Sitecore Favourites, can help you avoid navigating through your content tree and works much like the favourite functionality in your browser. If you’ve got a particular node that is buried deep that you visit continuously, this one will be a valuable time saver.

3. Sitecore application options Did you know you can turn different parts of the interface on and off in Sitecore? Welcome to the Application Options wizard, accessible by clicking the Sitecore logo in the top left corner of the content editor.

172  |

www.nonlinearcreations.com

Sitecore has done an excellent job documenting the different options and what they do Of these, I tend to use the “Quick Action Bar” the most. Once enabled, you can right click in the left gutter of content editor and have different pieces of information reported to you via icons in the gutter. It’s a quick way to get information that is not always easily accessible. As you can see from the screenshot below, the 2 options I use the most are “Locked Items” and “Workflow State”. Depending on your build, the others may be useful for you.

Three Sitecore gems to share with your content authors

|  173 

Accessibility in Sitecore builds

Amanda Shiga Vice President, Digital, Sitecore MVP

Ensuring that your website is accessible to everyone is a challenge often overlooked by developers and designers alike. Luckily a Sitecore build gives you all the tools you need to succeed. Many non-profit, government and crown corporations are required to meet online accessibility requirements for people with physical disabilities, including vision loss, blindness, hearing loss and who may have difficulty accessing web content the way the general public can. The standards and legislation vary from region to region and typically align to the Web Content Accessibility Guidelines 2.0 (WCAG). Examples include: •

Rehabilitation Act – Section 508 (United States)



Standard on Web Accessibility (Canada)



Accessibility for Ontarians with Disabilities Act (Ontario)

Many of these legislations offer a rolling timeframe for compliance; for example, public sector and organizations with 50+ employees in Ontario must confirm to WCAG 2.0 Level “A” by January 2014 and to Level “AA” by January 2021. For organizations with this requirement, Sitecore can make it easy to enforce many accessibility standards. Please note that many requirements are content-specific and

174  |

www.nonlinearcreations.com

design-specific and cannot be enforced by a CMS tool or automatically verified; as such, a combination of tool validation and training for content authors and designers is required for continued compliance.

WCAG 2.0 Level A – Supporting the requirements The following table breaks down several key WCAG requirements and how your Sitecore build can address them (and how we do it at Nonlinear). The WCAG requirements and remedies are quite in-depth and are not fully covered by this table.

Accessibility Audit

If you’re already a Nonlinear Digital or Keystone customer, you’ve got an excellent head start towards accessibility compliance. We offer a very cost-effective Accessibility Audit that will cross-check your build, design and content against the WCAG requirements and deliver a roadmap and estimate to full compliance; if you’re interested, drop us a line.

Accessibility check as part of workflow

With Sitecore being the wonderfully extensible platform it is, there is also an opportunity to build an automated validation into the workflow at both the field level with a Custom Field Validation or at the workflow level with an API call to a third-party audit service. This way, your content authors will be able to continually validate new content as it is added.

Sitecore & Nonlinear build accessibility Guideline 1.1.1

Description

Nonlinear Digital Sitecore build

Provide text for all non-text

For all images in the Media

content

Library the “alt” tag value is mandatory and published with the image

Accessibility in Sitecore builds

|  175 

1.1.1

Provide text alternatives that

For all videos in the Video

identify the non-text content

Library a video description

with a descriptive text label

field is mandatory and should be published with the video

1.3

Ensure that information

All Nonlinear builds use front-

and structure can be sep-

end markup best practices

arated from presenta-

including the use of CSS for

tion. Information, structure,

layout structure and styl-

and relationships conveyed

ing and avoiding the use of

through presentation can be

embedding important text

programmatically determined

within images

or are available in text The builds also make use of HTML headings to organize content, using properly nested H tags (H1, H2, etc) to allow user agents and assistive technologies to identify section headings and navigational structure Mandatory form fields are clearly marked with an asterisk at the end of the label, with instructions indicating so 2.1.1

All functionality of the content

Website content is operable

is operable in a non-time-de-

through a keyboard interface

pendent manner through a

without requiring specific tim-

keyboard interface, except

ings for individual keystroke

where the task requires analog, time-dependent input 2.2.1

Allows users to control time

Moving elements, such as

limits on their reading or

homepage slides, can be con-

interaction

figured to permit pausing of slides

176  |

www.nonlinearcreations.com

2.4.1

Web pages have titles that

The Sitecore build provides

describe topic or purpose

several title fields for navigation, page title and breadcrumb. Content authors must ensure they are sufficiently descriptive of page content

2.4.1

If a web page can be navi-

The front-end code is struc-

gated sequentially and

tured such that tabbing fol-

the navigation sequen-

lows a logical order of top

ces affect meaning or oper-

navigation, left navigation

ation, focusable components

and main content

receive focus in an order that preserves meaning and operability 2.5.1

If an input error is detected,

Input errors are highlighted

the error is identified and

on submit and described in

described to the user in text

red text adjacent to the form field where they occurred

3.1.1

The primary natural language

The website is published with

or languages of the web

the default human language

unit can be programatically

identified in the HTML ele-

determined

ment within the lang attribute (“en”)

3.2.1

When any component

The build does not include

receives focus, it does not

components that trigger con-

cause a change of context

text-changing events (such as form submissions or new windows launched) when receiving focus

Accessibility in Sitecore builds

|  177 

3.2.2

Changing the setting of any

Forms are built such that

form control or field does not

entering data or selecting a

automatically cause a change

form control has predictable

of context (beyond moving

effects

to the next field in tab order), unless the authored unit contains instructions before the control that describe the behaviour 3.3.2

Labels or instructions are pro-

All pages with forms provide

vided when content requires

a field for instructions and

user input

descriptive text. Labels are mandatory for form fields

Content and design specific guidelines The following table outlines a selections of additional WCAG 2.0 Level A requirements that cannot be verified as easily by a tool, and require human judgement of both design and content elements. The recommendations column includes how these requirements can be addressed. Guideline

Description

Recommendation

1.2

Captions are provided for

Ensure all videos have a

all prerecorded audio con-

Closed Caption option

tent in synchronized media, except when the media is a media alternative for text and clearly labelled as such 1.3

Any information that is con-

Review of main website

veyed by colour is also vis-

imagery and whether any

ually evident without colour

images convey colourdependent information

178  |

www.nonlinearcreations.com

1.3

Instructions provided for

Review of content to ensure

understanding and operat-

users can access instructions

ing content do not rely solely

for using content without

on sensory characteristics of

knowledge of share or pos-

components such as shape,

ition of objects (ie: “button

size, visual location, orienta-

to the right”). References

tion or sound

to “Above” and “Below” are generally accepted

2.3.1

Content does not violate

Review all video content

general flash threshold or the

to ensure web pages do

red flash threshold

not contain anything that flashes more than three times in any one second period, or the flash is below the general flash and red flash thresholds

2.4.1

The purpose of each link can

Review all links to ensure

be determined from the link

link text is meaningful and

text alone or from the link

coveys purpose

text together with its programatically determined link context, except where the purposes of the link would be ambiguous to users in general If you are still wrapping your head around how best to follow the guidelines, reach out and we can discuss how best to get your website in line with the current regulations.

Accessibility in Sitecore builds

|  179 

Authors

Authors

Molly Anglin A data driven strategist and information architect, Molly has been part of the Nonlinear team since 2001. In her role as Vice President of Nonlinear Digital, Molly is involved in projects at various stages, from planning to development and post launch optimization, many of which are based on the Sitecore platform.

Grant Bartlett Since joining Nonlinear in 2009, Grant has become one of the most senior developers on the Nonlinear Sitecore team. In his role as Team Lead in our Ottawa office, he is one of our resident experts in optimizing Sitecore for the content author experience. His thought leadership combines technical skill and user friendly formatting to provide guided instruction on customizing Sitecore.

Joe Boughner As the Director of Marketing for Nonlinear, Joe has been involved with Sitecore, both as a corporate partnership representative and as a content author for our own website. These experiences give him a unique position among our Sitecore experts. Joe joined the team in 2010 and has contributed greatly to the thought leader at Nonlinear.

Authors

|  183 

Dwayne Gockel Dwayne is a Solution Architect who joined the Nonlinear Ottawa team in 2011. His experience in Sitecore has involved both front and back end development. Dwayne’s focus is transforming existing websites into new, responsive, user driven and easy to maintain sites through modern design and development practices.

Mauro Madeira Mauro acts as a Quality Assurance Analyst out of our Ottawa office, and has done so since he joined the team in 2011. A dedicated problem solver, Mauro’s work focuses on improving the automated testing process post site launch for optimal performance. His innovative automated testing techniques are crucial to Sitecore projects at Nonlinear.

Glen McInnis Glen has been a vice president at Nonlinear since 2006. He has both strategic and tactical experience with leading CMS vendors including Sitecore, Microsoft SharePoint, Adobe CQ5, Ektron and OpenText/ RedDot and has been named a Sitecore MVP every year since 2009. Glen has overseen teams responsible for more than 120 content management deployments and complements this real-world experience with substantive formal education.

Eduardo Moraes Eduardo joined the Nonlinear team in 2007. Relying on his Sitecore expertise, both architectural and technical, he has been a part of countless deployments over the years. Eduardo’s work has contributed to a variety of solutions including content migrations, multi-language sites, intranet, extranets and front facing websites.

Rodrigo Peplau Rodrigo is a developer working out of our Florianopolis office in Brazil. Since joining Nonlinear in 2010, he has been a part of countless Sitecore implementations. While development is his primary focus, Rodrigo has begun to branch out into other elements of the Sitecore platform including the Digital Marketing System and Web Forms for Marketers.

184  |

www.nonlinearcreations.com

Antoine Rulliere Antoine has been a key part of the Nonlinear delivery team since 2009, bringing strong project management skills to countless Sitecore projects. His role involves applying Nonlinear’s Agile inspired development framework to manage projects across all disciplines including design, strategy, development and testing. His work has contributed to a number of successfully launched projects and happy clients.

Amanda Shiga Amanda is Nonlinear Digital’s Vice President and Sitecore MVP who has been part of the Nonlinear team since 2006. She brings more than 13 years’ experience in designing and building effective content management and web-based solutions within a variety of industries. Amanda leads the Nonlinear Digital team in delivering digital marketing solutions and contributes significantly to business development and thought leadership.

Allison Simpkins Allison acts as the President of Nonlinear Digital out of our Toronto office. She helps clients understand not just how to create meaningful experiences for customers and visitors online but also how to glean insights from analytics to drive truly engaging multi-channel marketing campaigns. With more than 14 years at Nonlinear, Allison has been involved with countless Sitecore projects, primarily in account and project management roles.

Jason St-Cyr Jason is a Sitecore MVP who has been working out of our Ottawa office since 2011. In his role as a Solution Architect, he’s tasked with planning, developing and implementing Sitecore solutions. His current focus lies in Application Lifecycle Management (ALM), working to optimizing a team’s ability to transition from idea to delivery and beyond to the end of life of the service.

Authors

|  185 

Saulo Venancio Saulo works out of our Florianopolis office in Brazil as a Nonlinear Digital consultant. His experience spans across a number of technology platforms including Sitecore and Adobe Experience Manager. Saulo’s key Sitecore focus lies in content author component and template development, as well as system administration tasks.

Randy Woods As Nonlinear Creations’ co-founder and President, Randy has been helping clients achieve their online goals since 1995. He has two decades of leadership experience in the development of online marketing strategies and implementation plans, applying a combination of business acumen, technical knowledge and marketing insight to the challenges faced by his clients. His extensive experience using the Sitecore platform for digital marketing has earned him the title of the Digital Sitecore MVP.

186  |

www.nonlinearcreations.com

About Nonlinear Digital

Contact Us [email protected]

987A Wellington St.

twitter @nonlinear_tweet

Suite 201

nonlinear creations

Ottawa, ON

+nonlinearcreations

K1Y 2Y1

www.nonlinearcreations.com

+1 613 241 2067

nonlinear sitecore®: the nonlinear way

nonline

nonlinear

nonlinear digital nonlinear digital

nonline digita

nonlinear enterprise nonlinear enterprise nonlinear nonlinear

nonlinear

nonlinear digital

nonlinear digital nonlinear

nonlinear digital

nonlinear

nonlinear digital

nonlinear enterprise

nonlinear digital

nonlinear enterprise

nonlinear digital

nonlinear digital

www.nonlinearcreations.com

nonlinear enterprise

Toronto | NYC | São Paulo | Ottawa | Calgary | Florianópolis

nonlinear enterprise

nonlinear

nonlinear

Sitecore :

nonlinear

®

The Nonlinear Way

nonlinear digital

nonline enterpr