Automating Sitecore Azure SQL Database Maintenance

For a long time Sitecore have recommended that you run SQL Maintenance regularly and rebuild the indexes. However you can’t run maintenance plans like this (as you would in an On-Prem environment) in Azure.

So I did some research and it seems that Sitecore set these up for you if you using Managed Cloud. but I couldn’t find much further info on this.

However I did come across this SSE post with a very useful answer from Richard Hauer on using Azure Runbooks and PowerShell to run database maintenance.
There was unfortunately not a lot of detail on how to set it up or use it, I’d only really used Azure Runbooks once before for monitoring and re-starting Solr – so I am certainly no expert on this.

So having done this recently I thought I’d write this post to help others who need to do this, follow the steps below.

Step 1 – Create a new automation account

If you don’t have an existing Azure Automation Account you will need one so go to the Automation Accounts section in Azure Portal and create one.

If you have an existing Automation Account you can move on to Step 2.

Step 2 – Create Runbook & Add Script

Note: These need to be migrated to Extension Based Hybrid workers by August 2024. However Microsoft provide a simple approach to do this. I haven’t used these yet as I don’t have VMs available to run the workers but we will do this soon, so please bear this in mind.

Under Runbooks in the Automation account click ‘Create a runbook’:

Then and name it something like ‘Sitecore-DB-Maintenance-Plan-Workflow-RB’. Ensure you choose ‘Powershell Workflow’ as the Runbook Type – otherwise the script doesn’t work correctly:

Click on the Runbook you just created and choose ‘Edit in portal’:

Then paste in the script (see below):

This is the script to copy and paste. It’s modified version of the one Richard shared on SSE.
It includes more logging and comments. Note some of the additional logging shows up in the ‘All Logs’ section as is Verbose:

You can test this if you like in the test pane but once you are happy with it publish it.

Step 3 – Create Credentials

Now we need to add our SQL Admin user username and password as Azure Credentials. If you don’t have an existing SQL Admin user you can use then create one which has the access required to rebuild indexes.

Next add an new Credentials under the automation account by clicking ‘Add a credential’:

Add the credentials details like so called ‘DatabaseCred’:

Step 4 – Create Schedules

Now we need to create a schedule for each Sitecore database that we want to Re-Index. This will run the Runbook Workflow script on a schedule.

Under the automation account click ‘Add a schedule’:

Then add the Schedule details. For example the below is for the Master Database.

Sitecore recommend Indexing is done weekly and In my case we want to run it out of hours (3am) and not over a weekend of near a Monday (as that is the busiest day for this client). This may vary for you so adjust accordingly:

Repeat this for each Database you want to Re-Index. I setup schedules for the main databases: Master, Core and Web:

Step 5 – Link Schedules & Set Parameters

Now we need to link the existing Schedules to the Runbook. Go to the ‘Sitecore-DB-Maintenance-Plan-Workflow-RB‘ Runbook and click ‘Link to schedule’:

Then select the Runbook Schedule by clicking ‘Link a schedule to your runbook’:

And select a schedule from those you setup previously at Step 4.

Then click ‘Configure Parameters and run settings’:

Set the parameters like so for the SQLServer, Database and CredentialsName like so. Use the Credentials you setup at step 3:

Step 6 – Set up Logging & Alerts

Under the runbook ‘Logging and tracing’ turn on ‘Log verbose records’ like so:

You can setup alerts if you would like to for errors under the automation account by creating an alert rule and filtering on the Runbook logs:

Step 7 – Test and check Logs

Once the Runbook schedule has run you can check the output under the ‘Jobs’ section of the runbook:

Check the ‘All logs’ section too and you should see more information such as how fragmented the tables were and the number of fragmented tables found:

That’s it, you should now have a working Runbook Workflow that automates the re-indexing and prevents your databases from becoming slow. Hopefully this is useful for others too.

Here are some other useful links that I found to help with this:

https://gist.github.com/ivanbuzyka/70db190d540e34300dab5015f21d00bf

https://github.com/yochananrachamim/AzureSQL/blob/master/AzureSQLMaintenance.txt

https://segovoni.medium.com/automating-azure-sql-database-maintenance-tasks-overview-bdbadcb312bf

https://learnsitecorebasics.wordpress.com/2023/04/30/sitecore-commerce-user-creation-takes-too-long-or-turns-into-timeout-error/

https://devjef.wordpress.com/2017/08/28/running-database-maintenance-on-azure-sql-db-with-azure-automation/

https://learn.microsoft.com/en-us/azure/automation/automation-runbook-output-and-messages

https://learn.microsoft.com/en-us/azure/automation/learn/automation-tutorial-runbook-textual

Fixing Solr Azure App Service Core Locking Issues

solr-core-locking-error

We have had intermittent issues with our Sitecore Solr instance in Production which runs in an Azure App Service. Every so often it crashes and we see Core Initialisation errors like so:

sitecore_web_index: org.apache.solr.common.SolrException:org.apache.solr.common.SolrException: Index dir 'D:\home\site\wwwroot\server\solr\sitecore_web_index\data\index/' of core 'sitecore_web_index' is already locked. 
The most likely cause is another Solr server (or another solr core in this server) also configured to use this directory; 
other possible causes may be specific to lockType: native

Doing some research into this it seems that the consensus is that Azure App Services shouldn’t really be used for Solr:  https://sitecore.stackexchange.com/questions/23466/solr-cores-locking-v-9-0-2

However I couldn’t actually find any official Sitecore documentation that says that Azure App Services are not supported / recommended for Solr and there are plenty of blog posts out there about setting up Solr for Sitecore in Azure App Services.

We could have switched it to an VM but we’d rather not do that as it’s easier to manage and maintain an Azure App Service than an VM and Microsoft will also handle all the security patches too etc.

So I opened a support ticket with Sitecore to confirm if App Services can be used for Solr and they suggested that I try the following:

1. Make sure the Azure Web App is not scaled out (instance count should be set to 1).
2. Make sure the environment variable WEBSITE_DISABLE_OVERLAPPED_RECYCLING is set to 1

We already have our App Service scaled to just one instance but when checking the configuration settings we didn’t have the WEBSITE_DISABLE_OVERLAPPED_RECYCLING setting set.
So we added this config and set the value to 1:

solr-recycling-config
Setting this to 1 stops new instances of the app being started before the current instance is shut down – which can cause locking.

Since making this change we’ve not had any issues with it intermittently locking.

Update: I still had issues with cores locking occasionally and started on a solution for it using PowerShell in a Runbook a while ago and I have now completed this and shared it here: https://www.flux-digital.com/blog/auto-re-starting-solr-indexes-get-locked-azure-app-service/

Hope this helps someone else who’s having this issue too.

The Business Case & Considerations for a Sitecore 9.2 Upgrade

smoke-2551073_1920
I don’t often write Sitecore blog posts from a business perspective but I today I thought I would as I think some Sitecore customers are still on 8.x or 9.0 and are considering an upgrade to Sitecore 9.2.

With Sitecore 9.3 likely to be released later this year and mainstream support for 8.2 and below running out in December now is a good time to consider upgrading.

In this post I’m going to outline what the benefits of moving to 9.2 are and also the considerations you should make before embarking on an upgrade.

What are Benefits / Features of Sitecore 9.2?

This is usually one of the first questions that will be asked. I’m not going to keep this fairly high-level as there are many in-depth blog posts out there on Sitecore 9.1 & 9.2 features but the following should provide a succinct summary.

Sitecore 9.1 & 9.2 bring a lot of new features and there has been a big focus on splitting features and functionality out from the previous large monolithic architecture to a smaller modern micro-service based architecture:

  • Sitecore Cortex – Sitecore’s new Machine Learning Brain which can Suggested Personalisation and process and leverage customer data
  • Sitecore Identity – Single Sign On and Federated Authentication (using IdentityServer)
  • Sitecore Universal Tracker – Provides an central Analytics API to track  interactions from any device (e.g mobile apps, IoT, AR and VR)
  • Sitecore JavaScript Services (JSS) – allows development of apps using front-end frameworks such as Angular, React and Vue, using Sitecore as the source for the data (including SXA & Sitecore Forms support in 9.2).
  • Sitecore Accelerator Framework (SXA) Accessibility Improvements – SXA has been around for a couple of years and is a package or pre-built components for Sitecore allowing you to get sites up and running quicker.
  • Sitecore Host – A lean common runtime for .NET Core applications (Powers: Horizon, Universal Tracker, Sitecore Identity)
  • Helix Configuration – 9.1 shipped with some Helix configuration already setup. Helix is Sitecore’s recommended approach to building Sitecore Sites it sets out an number of overall design principles and conventions to follow.
  • Sitecore Installer Assistant (SIA) – 9.2 provides a new GUI for easily installing Sitecore in a few clicks
  • SSL offloading – 9.2 provides an SSL offloading config to Improve security and performance by shifting SSL Processing onto separate processors
  • Active Personalization Dashboard – 9.2 has a new new dashboard which provides an overview of all personalization actively occurring, providing visibility of poorly/well performing tactics to act upon.
  • Many other improvements including: Search, Content Delivery, xDB and Analytics, Sitecore Forms, EXM, SIF(2), YAML Item Serialization, Bug Fixes and performance Improvements

But We’re on Sitecore 8.2 or below, what else do I get?

Mainstream Support

If you are yet to upgrade to Sitecore 9 then you need to consider this soon as Mainstream support for 8.2 and below expires in December 2019. https://kb.sitecore.net/articles/641167
This means that whilst Sitecore will still provide security updates and fixes and endeavour to assist with product incidents they may not provide support for the following:

  • Assistance with errors or unexpected behaviour during installation or development
  • Addressing product defects as hot-fixes or patches
  • Compatibility fixes for supported technology platforms.

Therefore if you are on 8.2 or below after December this year then you may need to upgrade to resolve certain issues (depending on what the issues are).

Sitecore 9.0 Features

If you are on 8.2 or below you will also benefit from all the features released in 9.0, here are the key ones:

  • xConnect – Provides an unified API that centralises data access
  • Headless CMS support and JSS – Allows web apps to be built with React, Angular, Vue using Sitecore data
  • Rules based configuration – Configuration is now much simpler as it can be set based on the server role (e.g Content Delivery, Content Authoring)
  • Sitecore Install Framework (SIF) – SIF is a framework for installing Sitecore using automated scripts. This is how Sitecore 9 and above is now installed and it means deployments can be automated easier.
  • Sitecore Accelerator Framework (SXA) – SXA is a pre-built set of components to allow pages to be developed quicker with less development effort
  • Sitecore Forms – Sitecore 9.0 has newly designed forms to replace WFFM. These are built in a modern way and are easier to configure and customise.

Upgrade Considerations

sitecore-logo
So there are clearly some significant benefits to carrying out an upgrade to Sitecore 9.2, especially if you are on 8.2 still, as some customers are.
There are some additional requirements and considerations when moving to Sitecore 9.2 and standard upgrade considerations which need to be planned for:

  • Additional Servers / Roles – Due to changes to the architecture to split out elements of Sitecore into smaller services Sitecore 9, 9.1 and 9.2 require some additional Servers and roles. These are for xConnect, Identity Server, Cortex and processing. When you are planning resources for your upgrade this should be considered, particularly on Azure as there are quite a few additional services required.
  • Module Upgrades – Most Sitecore sites will make use of a number of Modules to extend the out of the box functionality. Some popular modules are: Web Forms for Marketers (WFFM), Url Rewrite and Sitecore Powershell Extensions (SPE). It is important to ensure that each module you are using is supported in Sitecore 9.2 and to consider time for upgrading each module as part of the upgrade process.
  • Updated Licence – Most customers will require a new licence generating when upgrading to Sitecore 9 and above. Therefore ensure you request this from your account manager in advance and that you have all features/modules you require included on your licence.
  • Active Directory module – Sitecore 9.1 & 9.2 or later does not support the Active Directory module. Sitecore uses Identity server to handle logins instead of legacy methods such as AD. Therefore if you are upgrading to 9.1 or above and use the AD module you will need to implement an integration with Active Directory from Identity Server.
  • Search – Sitecore 9 and above no longer supports Lucene so you must use SOLR or Azure Search. Lucene did not work well in distributed search scenarios so moving to SOLR or Azure Search has been recommended for a while. SSL is also required for SOLR in 9.0.
  • Code & Configuration Updates – Sitecore try and reduce breaking changes where possible but sometimes they are unavoidable, so as with all Sitecore upgrades some custom code and configuration will need to be updated to be compatible with Sitecore 9.2.
    To assist with this process Sitecore does provide an Express Migration Tool (to get to 9.0) and an Update Installation Wizard to update to 9.2. However these tools will likely only get you so far for highly customised Sitecore implementations and will likely need some manual upgrading too. Any code that needs upgrading will not be auto-upgraded by the tool. If you are on 8.2 then there are quite a few changes for analytics with xConnect. All references in Visual Studio will need updating to 9.2 also.
  • Support Patches & Hotfixes – You will likely have some hotfixes or support patches that have been applied to your solution over time. These will need analysing as part of the upgrade to understand if they are still required or not in 9.2. Many of these may have been rolled into 9.2 already.
  • Analytics Data upgrade – Part of the upgrade process involves migrating xDB data in the 8.x format to Sitecore 9.2 format. Sitecore have a tool for this: https://dev.sitecore.net/Downloads/Sitecore_xDB_Data_Migration_Tool/3x/xDB_Data_Migration_Tool_300.aspx
  • Implementation Quality – Best practice Sitecore implementations do not customise any out of the box Sitecore files and instead use patch files and extensions to customise configuration and other Sitecore functionality. Ideally the base platform should be installed ‘as is’ and the customisations layered on top to assist with upgradability. Depending on how well your implementation has been carried out will impact how easy it is to upgrade. If your implementation is not best practice then your team should take the time during the upgrade to correct this and take advantage of some of the newer and better ways of doing this.

A Note on Upgrading WFFM

sitecore-formsOften one of the key stumbling blocks for upgrading Sitecore to 9.1 or 9.2 is Web Forms For Marketers, this is because it was deprecated in Sitecore 9.1 and is also not supported in Sitecore 9.2. Sitecore 9.0.2 is the last release where WFFM can be used. Sitecore Forms has replaced it.  If customers have many forms this can be a bit daunting.

So you could just upgrade to Sitecore 9.0.2 and stop there, but you would be missing out on a lot of features and you will need to upgrade again in the near future. Thankfully there is another option, there is now a community built tool to help automate this for you and convert WFFM forms and data to Sitecore Experience Forms: https://github.com/afaniuolo/WFFM-Conversion-Tool. I have yet to use this but have heard good things about it and it is regularly updated.

 

I’ve tried to cover the key features of 9.2 and considerations for upgrading here. As you can probably see the longer you leave an upgrade the more complex it becomes as there are more changes to consider. Frequent upgrades of Sitecore should be the aim as this will reduce the time and investment needed to carry them out. Hopefully you’ll find this post useful for planning an upgrade to Sitecore 9.2 and leverage the investment you have made in the platform.

Azure Switch On Rebuild Bug – Index name not always updating on CD Servers

azure-searchI have recently been assisting a client with moving their Sitecore 8.2 update 7 Site to Azure. As part of this we decided to use Azure search for our custom search indexes – available in 8.2 u7 and 9.0.2 and later . We ran into an issue when we enabled Switch On Rebuild as we found that on rebuild the index would sometimes return no results. This resulted in missing data on the pages powered by these custom indexes.

TL;DR

This is a bug with Azure Switch On Rebuild, you can request SC Hotfix-294596 from Sitecore Support.

Why did this happen?

I didn’t previously know this until I started investigating this further and asked on SSE but if you have Switch On Rebuild enabled then on rebuild of the index Sitecore creates a new index with a -secondary suffix and switches to that once the index has been rebuilt. It stores a reference to the Primary index name (the one in use) in the properties table of the Core database.

e.g Sitecore should change the name from ‘my-custom-index’ to ‘ my-custom-index-secondary’ and back again each time it is rebuilt.

Sitecore uses the index Id from your config along with the server name and url of the site to create a key in the core database to store the Primary and Secondary index names like so (sensitive information blurred):

core-db-primary-index

From further testing we were seeing that the value of the Primary index in the Core database is only updated on the CA server and not the CD Servers so after some further investigation and head-scratching I implemented a short term work-around with an custom admin page to allow us to manually update the index names in the with code similar to below:

var database = Sitecore.Configuration.Factory.GetDatabase(“core”);

var indexName = “my-custom-index”‘;
SwitchPrimaryIndex(indexName, “cd1-server”, true);

Following this I raised this issue with Sitecore Support for investigation.

Resolving the Issue Properly

After some further investigation Sitecore Support confirmed this is an bug with Sitecore XP 8.2 rev. 180406 (Update-7) – bug report #254072 and provide a hotfix: SC Hotfix-294596.

This is also an issue in 9.0.2 and likely any version below 9.1, this is resolved in Sitecore 9.1 Initial release.

The only file included in the hotfix is an updated version of the Sitecore.ContentSearch.Azure.dll, there have been a number of changes here.

The Hotfix addresses this issue by changing how the Primary and Secondary index names are stored. Instead of being stored in the properties table of the Core database these values are now stored in their own Azure Index called index-catalog. Here is a screenshot of how this looks in the Azure Portal:

index-catalog-new

In addition to this the Hotfix also renames the index using an random number instead of -secondary.  If you also have this issue you can request the Hotfix from support.

Thanks for Gert Gullentops for his help with this on SSE and Slack. Hopefully this will help others too.

Sitecore Symposium 2018 – Thoughts and Takeaways

I’ve just arrived back from Symposium 2018 in Orlando, Florida and thought I would share some of what I learnt with those who couldn’t make it this year.

5274I’ve been to a previous Symposium in New Orleans but as I missed it last year due to moving house I was keen to attend again this year. This time around it is also my first as an MVP and is a great opportunity to learn more about the latest release of Sitecore and what’s planned for the future.
I would be joining over 3000 attendees with 3 days of sessions on all things Sitecore. I arrived early evening for registration the day before and caught up with a couple of Sitecorians. The conference would start proper the following day.

Day 1

Opening Keynote

5899
This year Symposium kicked off with an opening keynote by Paige O’Neill & Mark Frost. The theme this year is ‘elevate the experience’ and  there were some welcome announcements from Sitecore:
  • JSS finally in general release – I’ve experimented with JSS and seen it go through quite a few changes and improvements over the 4 technical previews but it wasn’t officially supported. With the 9.1 release it will be generally available and officially supported. This is great to see and there were many talks on JSS throughout Symposium that made my want to try and get using it on future projects where possible.
  • Stylelabs acquired by Sitecore – Stylelabs has been acquired by Sitecore to provide true DAM capabilities for assets in Sitecore. The integration isn’t there yet but it’s certainly an interesting announcement and from demonstrations of the products abilities it looks like it could add some real benefits and powerful asset management features to Sitecore.
  • Sitecore Cortex TM – Cortex is part of the new Micro services architecture that is present in 9.1. It is Sitecore’s Machine Learning brain which provides Content tagging, automated personalization recommendations (with preview). It also supports flexible integration with 3rd party systems and other Machine Learning engines and platforms. Again there were quite a few sessions on this at Sym, more on this later.
  • Deeper Salesforce Integration – with 9.1 it is now possible to see behavioural data integrated into Sitecore.
5906
Following this keynote there were Talks by:
Volvo – who showed off their Car as a service offering (CaaS) where customers can swap their car every 12 months or in future even for a weekend trip with the family. An interesting concept that could be the future of Car usage.
Cannondale – who used IoT devices to pass data to the Website about customers bike usage which then used Machine learning to recommend bikes for them based on how they ride and check stock based on their location. They had also built augmented reality into their app to assist customers with setup and maintenance of their Bike. Pretty cool stuff.
Sickkids – this is a charity that raises money for Kids who are not well. They used to have fairly average charity branding but re-branded from a needy charity to create strong engagement with potential donors. The videos that were shown were very hard-hitting and I think there were are few people in the room that got a bit emotional :-). They have so far raised $628 million in 6 months and are halfway to raising over 1 billion dollars which will be the most ever raised by a charity in a year. During the event Sitecore donated $25 for every 3 minutes ridden on a bike for Sickkids (which I and about half of the attendees did) which raised $50,000 for Sickkids.
5913
NotImpossible – Last and not least Mick Ebeling from NotImpossible talked about how his company have created tech for the greater good to help: create special glasses to allow an artist he was introduced to not only speak again but to draw art with his eyes. Create a wristband that uses vibrations to allow deaf people to feel music and which also was ‘potentially’ a cure for Parkinson’s. And lastly how he setup a 3D printing lab in Africa to print a boy who lost his arms two new arms and then taught the locals how to use the machines to print arms for $100 which would usually cost $15,000!. This guy was truly inspirational and a brilliant story teller. He also came up with the best phrase of the conference:
‘Commit. Then figure it out’
Hopefully more companies will take inspiration from this and look to do more to help others, as Mick said it’s good for shareholder value and good for the world.
After this is what time to have lunch and head to our first break-out sessions, I decided to start with a Session on Headless.

Headless CMS and the Great Uncoupling – Deane Barker

5922
This talk was interesting and made a number of points about the current state of the headless CMS vendor market and where the likes of Contentful sit compared to Sitecore. The key takeaways from this were:
  • Contentful and others Headless CMS’s are currently not the same as Sitecore, they only offer part of the picture – content repository, they don’t offer preview, drag and drop etc.
  • The market has turned from a blue market where they were disruptive and new to a red one where it has matured and it is now more crowded.
  • Headless vendors are selling to IT again now instead of Marketing. However Marketing will start to ask how they view, personalise or track things with a headless CMS and therefore vendors will start to add these features. Some have already tried to add things like preview and a basic page editor.
  • Sitecore already has all of this functionality built in so is strongly positioned to cater for this change

The Cortex Engine, process at scale – Alistair Deneys

5929
I went to find out more about Cortex and got a deep-dive into the inner-workings of Cortex. The key takeaways here were:
  • Cortex provides intelligence and moves us into a contextual era of content management
  • Has a task based system which decides how to run a task depending on it’s type and allows tasks to be chained
  • It can pull from many different sources, including external systems
  • Uses an ML Model and uses the same Message Bus as xConnect
  • Can Sync content to other systems for analysis

Sitecore 9.1 Overview – Pieter Brinkman

6141
This talk crossed over with the Cortex talk so I couldn’t attend it. However I did install 9.1 recently and have seen other info on it at Symposium. I’ll be writing a detailed blog post on this soon but here are a few Sitecore 9.1 pointers:
  • Helix Folder Structure is provided by default
  • Significant speed improvements have been made (as much as 20 secs for CE)
  • Personalisation & Platform enhancements
  • Sitecore Identity Server comes with 9.1 – Single Sign On / Federated Authentication
  • Cortex – Suggested Personalisation
  • JSS now in General Release
  • Universal Tracker – Mobile Analytics
  • Horizon – New UI

Horizon uncovering core UX and architectural concepts – Alec Orlov

5950

This session was on the new Sitecore content and page editing User interface that is in development and will be released after 9.1, probably in an update.

  • It will co-exist with the existing Content Editor and Experience Editor interfaces.
  • It will be a new launchpad icon for now but will eventually replace Content Editor and Experience Editor
  • It is brand new and build using the new Microservices based architecture in Sitecore 9.1 to make it a lot faster
  • It supports existing MVC field renderer code for Experience Editor
  • Horizon does not yet support JSS

5952

5964

This was really good to see and a welcome improvement on the current Sitecore UX. It will be interesting to see how this affects existing Content Editor and Experience Editor customisations and what effort is required to re-implement these.

Working with JSS Gold Master and Marketing Automation – Rick Bauer & Corey Smith 

5978
Corey and Richard presented on their experiences of using the final release of JSS:
  • They talked about the different modes: connected, disconnected, headless etc
  • How quick it is compared to MVC development and that MVC developers need to start learning React/Vue/Angular to avoid the risk of becoming obsolete
  •  Showed how analytics are still tracked and how you can still protect against things like cross site scripting attacks

Closing Keynote – Daymond John

5984
Daymond John from the US TV show Shark Tank closed out the first day with his story of how he created FUBU clothing, got hip hop artists to wear it and turned it from a bedroom business into a multi-million pound selling product. It was an entertaining and amusing talk and served as a good end to an informative day.

Day 2

Helix and JavaScript Services (JSS) – Jean-Francois L’Heureux

5989
  • It makes sense to keep the same structure for front-end code as back-end code by splitting front-end code into feature folders and components and using similar naming conventions.
  • Use custom linters (eslint) to validate that the front-end development approach follows Helix principles by enforcing certain rules within the linter.
  • Jeff has added JSS app templates to github which you can use to start projects off with a Helix architecture.

You can see more info on this here: https://www.jflh.ca/2018-10-13-helix-and-sitecore-javascript-services

Integrated DevOps with Azure, Git, PowerShell and Slack – Rob Habraken

5999
Rob showed us the build pipeline he uses on some projects, integration with various tools and processes he follows:
  • Devs are worried about deployment, they shouldn’t be if they release little and often.
  • Unicorn used to push out database updates and and Razl to sync back locally
  • 20% of time on a sprint is spent on DevOps tasks and 1hr per sprint is spent on fixing SonorCube issues
  • PRs should be mandatory and all releases created from the trunk. Labels in Github can be used to manage this.
  • Connect Slack to Github to see releases and PRs and also use custom Webhooks to allow for custom Slack commands to see which build was live currently etc.
  • Content should also be part of Continuous Delivery
  • CD should be warmed up after deployment but it is not possible with CMs

You can find out more info here: https://www.robhabraken.nl/index.php/3000/integrated-devops/

Leveraging Sitecore data on a static website with GatsbyJS and GraphQL – Bryan Mills and Adam Lamarre

6061

This was an interesting talk about using the JSS GraphQL engine in Sitecore with Gatsby to build websites.

  • The final product is just static HTML in a flat file
  • Demo’d a site built with Gatsby
  • Results in: simple deployments, no boilder-plate or back-end code, direct field access
  • Good for: Microsites, Product Sites, Time-limited Sites, Sites for lead-generation, Dashboards, Knowledge Base
  • Is  used by some big brands such as Nike, Airbnb, Facebook

You can see the demo here: https://github.com/millsb/symp-gatsby

Day 3

10x your Sitecore development – Mark Cassidy

6144

Mark gave us some of the benefit of his 13+ years of Sitecore development with some tips and tricks on how to reduce complexity and development time for Sitecore sites:

  • Mark Demo’d building a Sitecore 9 Site from scratch with no frameworks, mappers, Code generators, ORMs
  • As Sitecore developers we should be looking to reduce complexity of Sitecore builds. End-clients of Sitecore often complain about the complexity of Sitecore solutions.
  •  Divide the work horizontally, not vertically to allow less experienced developers to contribute and more experienced devs to focus on the more complex work.
  • Sitecore APIs can be used directly without abstractions – KISS.
  • 1 to 1 – 1 Controller, View, Model, Datasource etc per component

you can find Marks presentation, Site used and video here: https://github.com/cassidydotdk/Sym2018

A Helix approach to devops in light of the Sitecore micro-service architecture – Thomas Eldblom

6156

Thomas created the idea of Helix and in this talk explained how Helix principles can be applied to infrastructure too:

  • Sitecore is getting more complex and therefor the Infrastructure layer should now be considered below the foundation layer as part of the Helix architecture
    6159
  • The infrastructure layer should define: Resources, Platform, Storage/Networking Services, App Roles, Extensions & Packages
  • Sitecore as a service doesn’t exist right now but this is what customers want and it’s up to us to help customers achieve this

Closing Keynote: A look into the future – Ryan Donovan

6199

In the closing keynote we were shown a demo of how Stylelabs will integrate with Sitecore to manage assets and a recap on the key takeaways from Symposium.

And with that it was the end of another great Symposium, I’ve learn’t a lot over the past week or so and I’ve got lots of ideas to think about. It was also great to catch-up with fellow Sitecore MVPs and make some new friends, I’m already looking forward to Symposium next year.

Ryan Bailey

Before I go I should mention that sadly a fellow MVP Ryan Bailey Passed away shortly before Symposium.  Although I didn’t know Ryan I heard some amazing things about him at Symposium and have been helped by some of the posts he regularly wrote on his blog: https://blog.ryanbailey.co.nz/.

A site was created to help raise money to support his family and Incredibly due to community the site has raised over 13k so far: https://givealittle.co.nz/cause/support-for-ryans-family

You can donate at the above link and read more about this here:
https://sitecorestorm.blogspot.com/2018/10/an-amazing-thing-happened-at-sitecore.html.
Props to Corey and Kam who helped get more donations by shaving off their Stache and Beards at the MVP Summit!

Sitecore SUGCON 2018

Estrel
I’ve just come back from SUGCON 2018 in Berlin and I think it was the best one I’ve been to yet. It was my third time attending the Sitecore User Group Conference (a conference for the Sitecore Community organised by the Sitecore Community). This year I was lucky enough to be going as a first-time MVP and would be collecting my award during the conference.

I arrived early to see a bit of Berlin on the Sunday and catch up with some friends, colleagues and other Sitecore Devs and MVPs and before I knew it it was time for SUGCON to start.

sky

It kicked off with some fancy lights and music and Peter Brinkman with the opening Keynote explaining how large SUGCON has grown since it started in 2016, there were 600 attendees this year!.

There was a lot to take in over the 1.5 days so before I forget it all I’ve summarized below some key learning’s from my two days at SUGCON 2018.

Day 1

Opening Keynote – Pieter Brinkman

welcome

    • There will be two major Sitecore releases every 6 months and (spring & fall) which will contain new features and functionality
    • Updates / Patch releases will only contain fixes and not features/breaking changes.
    • Releases will be a full delivery including code, training and documentation

Sitecore releases

Great news for all Sitecore developers and customers who have been frustrated with this in the past.

Commerce + IoT In Powerful Ways – Jason Wilkerson & Richard Seal

Next up was well known MVPs Jason Wikerson and Richard Seal who created a fictional SitecoreLand complete with wristbands to access the park to demonstrate how IoT can be used with Sitecore .

IoT

    • Previously this was only possible by building most of the functionality yourself buy it is now possible out of the box with xConnect + and IoT Hub and IoT Listener.

IoT

  • Store the least amount of data you need to achieve what you want to do for your customers.
  • With SXA, Experience Commerce, xConnect, EXM, xDB and Marketing automation you now have all the tools you need to create these kind of experiences for customers with Sitecore. Your imagination is the only limitation.

Impressive stuff and a real show-case for what’s possible with Sitecore. Speaking to Jason afterwards he said it took longer to Photoshop in the memes of Longtime MVP Jeremy Davis who got trolled hard in the talk. This wasn’t to be the only time today either :-).

Jeremy

Uber-modern Apis For Sitecore – Kam Figy

Kam has been building the CLI for JSS and underlying APIs and took us through some of these focusing heavily on GraphQL.

graph API explorer

  • GraphQL is:
    • Strongly Typed
    • Queries only the specific fields you need (no overfetching)
    • The response matches the query (so you know what you are getting)
    • Is discover-able
    • Batches queries and catches and returns errors
  • Kam demo’ed an app he’d built that used GraphQL and mimic’s the database browser in Sitecore.

jss browser

  • It’s possible to extend the GraphQL API using Query Extenders and add additional fields. These are than patched in using config.

extender

links

All-in-all some interesting stuff to experiment with here, since I’ve playing about with JSS too this is something I plan to look at in more detail.

Sitecore XDB & GDPR Applied – Rob Habraken

gdpr

Rob opened by saying this was a dull subject. That it may be but it is also a very hot topic and something many clients need to implement very soon so this was a very insightful session for me.

sitecore gdpr

  • Sitecore 9 has GDPR features out of the box and Sitecore 8.2 Update 7  will also have them.
  • 6 Steps to follow to implement GDPR With Sitecore:

IMG_1529

IMG_1532

IMG_1536

IMG_1540

IMG_1542

IMG_1548

Azure Round Table – Tamas Varga

The final session I attended was an Azure Round Table where there were some really good insights from those who have used Sitecore Azure:

Azure

  • Using the provided Azure ARM Templates is a good start but can I can be limiting as time progresses so creating your own is the way to go eventually.
  • There can be problems with CSS and JSS not being published yet when swapping between servers.
  • Testing an Azure Sitecore setup on a development environment and keeping costs down can be a challenge. MSDN provides free credits for subscribers.
  • If using Azure the advice is to move to Sitecore 9.x if you can first as that will make things much easier.

Awards, Quiz & Drinks

At the end of Day 1 I had the privilege of going on-stage and picking up my MVP award with the other 2018 MVPs. I’d seen the MVPs collect their awards in previous years but didn’t think I’d be joining them this year, I felt very proud to be sat alongside everyone. Obviously a few beers were enjoyed afterwards to celebrate.

mvps

Day 2

Sitecore Install Extensions In Action – Robert Senktas

I hadn’t heard of SIX before but having had some experience of using SIF when installing Sitecore 9 this looked interesting.

IMG_1562

  • SIX has a number of powerful features that make it superior to SIF and it support storing sensitive data in Azure Keyvault:

IMG_1564

SIX

  • An early GUI was demo’ed that runs on top of SIX and allowed an Octopus style management of the install process.

softserve

This all looks pretty cool and definitely something I’m going to look into further.

White Hat Hackers Guide To The Internet – Mikkel Ole Romer

IMG_1576

This was the most packed break-out room I saw over the two days.  Mikkel showed some simple Hacking Techniques he’d tried on a list of Sitecore Solutions and the results were quite worrying.

  • He showed us some simple hack’s he’d tried:

IMG_1577

IMG_1580

IMG_1581

  • The results of the test were a little worrying…

IMG_1582 IMG_1584 IMG_1585This session was a bit of an eye opener to say the least. Check your Sitecore installs configuration and patches folks!

 Sitecore & The Blockchain – Jason Bert

Since I have some Bitcoin & Ripple and I’m interested in Crypto and the application of Blockchain technology this seemed like a talk I wouldn’t want to miss.

blockchain

  • Jason used a number of technologies to store the details of a ticket purchase on the Etherium Blockchain.

IMG_1594

IMG_1595

  • Jason used a local Etherium Blockchain testing tool called Ganache but in the real-world this could be slow and potentially costly.

IMG_1596

This was an interesting talk that certainly makes you think about how these technologies could be used in future.

From Forms to Riches – Kamruz Jaman & Mike Reynolds

IMG_1598

Having talked to Kam a bit about what he was going to discuss I was looking forward to a bit of a deep-dive into the new Sitecore 9 forms module and thats exactly what we got.

IMG_1600

  • The metrics stuff and interface looks pretty cool.

IMG_1602

IMG_1605 IMG_1606 IMG_1607

  • We were also shown how to create a custom field and data encryption was discussed.
  • But there is some functionality missing as it’s an first release. If you need to you could build some of this yourself.

IMG_1617

Latest Goodnesss JSS – Alex Shyba & Adam Weber

Having presented a talk on JSS at the Sitecore Sessions in Manchester recently I had a good idea about most of this talk but there was still some really great stuff to see and hear. I got to speak to Alex and Adam in person too and they were really helpful.

jss

IMG_1624

IMG_1625

Rendering level JavaScript was what I was really interested in seeing. This is JSS Components running along-side MVC ones in the same page!.

IMG_1629

It was really cool to see this in action. I’ll be trying this out as soon as I get chance.

IMG_1631

IMG_1633

IMG_1637

IMG_1640

Time to go home

After a few words of thanks to the organisers and attendees for an fantastic SUGCON it was time to head home….After a few more drinks of course.

IMG_1642

What did I get out of SUGCON?

This year I was determined to do more networking and spend time talking to people in the Sitecore Community who I’ve spoke to on-line but never/rarely met. I certainly learnt a great deal from the sessions too but getting to chat to fellow MVPs, Developers, Sitecore Employees who I’ve known online for sometime but not met was my favorite takeaway from the past couple of days. If you didn’t make it this year and are thinking of going next year then I’d highly recommend you get your tickets booked for SUGCON 2019 in London on the 4th & 5th of April. You won’t regret it.

Sitecore Symposium 2016 – Day 1

Sitecore Symposium is an 2 day Conference for Sitecore Users, Developers, Partners, MVPs and just about anyone else who works with Sitecore.

This year it was in New Orleans and I was lucky enough to be able to come out for a few extra days to Explore NOLA and I can highly recommend it, a great city with some insanely good food, interesting history and friendly people.

img_9704

Day 1

On day One I was to learn a lot about the improvements and new features in Sitecore 8.2 including SXA, Sitecore Azure, Path Analyser and much more.

Opening Sessions

The opening session was kicked off in New Orleans style with an big Jazz band which certainly woke me up after the early start.

Interesting it was comedian Jake Johannsen who opened up and got us all in the mood before handing over to Micheal to kick off the first keynote.

img_9489

Micheal talked about empowering Physical and Digital experiences for customers and bought various users of Sitecore onstage to discuss how they are using Sitecore. Danone discussed the personalisation that they have done on their Baby early life platform for mothers and how they have used Sitecore to power this. It was really cool to see someone leveraging all the personalisation, profiling and automation features. Danone have seen an 800% uplift in sales from this. Their tips were: Build data first, start now and don’t wait for the tech to all be there to do it.

img_9492

One of the most interesting things shown was Sitecore Experience Accelerator (SXA) which allows you to create a new site in Sitecore, Wireframe it, Add Content, Export the wire frame and import a theme for it. It is Responsive out of the box and could be a really quick way to stand-up a Sitecore site quickly. I would learn more on this later.

Micheal announced that Sitecore has now built commerce in out of the box and it is fully integrated and supports personalisation. This is great news for those with Commerce aspects to their Sitecore sites.

Next up was Jason Silva who is a Technologist & Futurist. He was very engaging and had some interesting ideas about the future of Nueroscience and Nano Technology, ‘Hacking Life Itself’ and how Tech evolves exponentially. He made me re-think the barriers between tech and science and ‘Playing God’ stating that ‘There is no duality between nature and technology, they are 1 of the same’.

img_9505

Developer Keynote

Lars Nielsen took to the stage to share some information on Sitecores product strategy. He talked about xConnect and oData which are coming soon and will provide much better APIs for working with data in Sitecore. He then discussed Express Migration Tool which allows you to go from Sitecore 7.2 to Sitecore 8.2 in an automated manner.

img_9511

He touched on the NuGet feed that is now available for Sitecore, I think this is the thing most developers have been waiting a long time for (I saw a whole lot of Tweets about it when it was released a few weeks ago). The Official Sitecore Nuget can be found here: https://sitecore.myget.org/gallery/sc-packages.

img_9509

Lars introduced Antony Hook who talked about how Sitecore manages new feature requests using ProdPad and the ways in which these requests get to the Sitecore product team. Great to hear they are opening up user voice to non MVPs https://sitecore.uservoice.com/ and about the new Stack Exchange http://sitecore.stackexchange.com that is nearly out of Beta.

img_9524

img_9531

One things for sure Sitecore’s Community is huge and growing every day, just look at the stats above!

We also heard about Helix (the new name for the the design principles that underpin Habitat) http://helix.sitecore.net/. More on this later.

img_9518

We also saw a quick overview of Sitecore Path Analyser which looks great, I watched a demo of this by the Sitecore Product team in the Partner Pavilion and was impressed by the UI and functionality it provides.

img_9494

 

img_9560

Azure Sessions

It was the time to attend the first of the developer sessions and I chose two on Azure since this is something I’ve been looking at recently.

img_9535

The first was Sitecore in The Cloud: Architecting in AWS vs Azure where Peter Petley shared some info on his recommendations for deploying Sitecore to the Cloud. He talked about the performance of AWS vs Azure and I was surprised to learn that Azure performs better in general.

img_9539

He also talked about some of the new features for Azure that will be supported in Sitecore 8.2.1, more on this later.

img_9540

img_9543

One of the key takeaways here was the Paas doesn’t really work properly (there are reliability issues with some modules etc) so Iaas is still the way to go. Redis Cache was also recommended due to it’s great performance.

img_9548

 

img_9549

The above slides are a nice little summary of which platform wins out.

Next up was Ciaran McAuliffe’s session: Better Together: Sitecore on Azure. He dove into the Sitecore 8.2.1 Azure dashboard and showed us the power of App insights with things like Sitecore Logs, APV Map, Server Responses and Rules.

img_9553

Ciaran explained how Azure search is used instead of Lucene and that for cost and performance reasons you should only setup the indexes you need and use (not all Sitecore indexes in the configs).

Sitecore 8.2.1 comes with Data Packs out of the box that will pre-configure Azure for you, there is no need to use the Sitecore Azure Module anymore – it is being phased out. There will be Data Packs for CD and CA servers and everything will be setup for using the web deploy engine. The automation scripts are JSON based and ARM Templates will be provided xDB, XP etc to build out environments and the resources required as a base level for each.

img_9555

There are parameters files that go along with the ARM Templates that define the various variables, essentially 2 JSON files and an Powershell script is all that is needed to deploy Sitecore to Azure.

img_9554

We were shown the different plans that can be used for the various services required to run Sitecore on Azure he also discussed how Sitecore are also working on GeoLocation in Azure and using Slots to allow for environments to be replicated easily (e.g Staging and Production).

This all seems like a vast improvement to the current Sitecore Azure offering and should greatly simplify the process. It should be available from January 2017 so well worth waiting for if your looking to move to Azure soon by the looks of things.

SXA – Sitecore Experience Excellerator

After a spot of (excellent New Orleans style) Lunch I went to see Kerns talk on SXA – Sitecores new offering to get you a Sitecore site up and running very quickly. I’d heard a lot about this and it sounded very interesting so was keen to find out more. It is installed as a separate package in Sitecore . It is installed as a separate additional package in Sitecore with an associated costs a percentage of the Sitecore license.

img_9564

SXA allows you to create a new Site from within the Sitecore Content Editor Interface (nice). Sites need to be created within a tenant – a business unit with different visitors but which exists within the Same Sitecore instance. Tenants are created first (again within the CE).

Once you’ve created a site you will see it has created a folder structure that follows the Helix principles (from Habitat) so you will see familiar folders here such as foundation and feature.

img_9591

Kern then showed us how pages can be quickly put together using page designs and partial designs and 70+ pre-built components.Standard values are no relied on that much, instead XML is layered to create the pages and dynamic placeholders are available out of the box. The pages built will not have a design, they will look like wireframes, this is intentional.

img_9567

Kern then showed us how the wireframe layout can be easily exported using a button in the SXA toobar, then the zip generated can be provided to an front-end team or 3rd party to style before it is imported back in. Kern demonstrated this by quickly importing a pre-made theme and it automatically styled all of the pages and components. Impressive stuff.

img_9578

We were then shown a bit more detail on how these themes are created. Essentially it uses the 960 grid system so supports mobile out of the box, Bootstrap and Foundation are not currently supported. The themes are made up of individual CSS files, Images and JavaScript but optomised versions of these are served from the Site. Developers can add addtiional classes to the HTML when theming but can not change the structure of the HTML.

img_9579

Kern mentioned a few restrictions around using SXA, all data sources must use Items to us the standard components provided with SXA. However it is possible to build a standard component and use it within a SXA site. It does need to inherit from special SXA specific rendering classes to work.

img_9586

Deployment of a SXA site (assuming no customisations) is just a simple case of publishing the Site. All all this seems a great way to standup a Sitecore site quickly and with limited investment in development. It is perhaps though limited to Sites without the need for medium to high customisation. It will be interesting to see how SXA improves over time as it is something Sitecore are going to continue investing in.

It was now time for me to go and enjoy the beer in the Partner Pavilion and meet a few new people. I was already looking forward to Day 2.

My thoughts on SUGCON 2016 – Day 2

badgeThere was an early start for Day 2 (especially after a late-ish night involving a few strong Danish Beers), but I knew there were some intriguing talks today so didn’t want to miss anything.

You can read about Day 1 here if you missed it.

The first session that caught my interest was Nick Wesselmans talk on how Active Commerce use SIM, Powershell, Octopus Deploy and Azure to automate product builds.

Using SIM, Powershell, Octopus Deploy and Azure to automate product builds.

Nick gave an overview of how they created a PowerShell wrapper for SIM to automate Sitecore instances for product builds for their Active Commerce product.

IMG_5762

He also talked about how they use Sitecore Power Shell Extensions (SPE) to do things like automate publishing, rebuild the links database and initialise Sitecore Zip package builds. I’ve experimented with SPE but I’ve not used it in anger and this has given me ideas for how I might use it more on current or future projects.

IMG_5764

Finally, he talked about their use of Octopus for deployment of packages and invoking PowerShell scripts and Azure IaaS and Azure Blob Storage and AzCopy which is used for quickly spinning up VMs for hosting the product build and test environments. I liked the idea of these being scripted to only run during business hours.

IMG_5768

The Active Commerce team also use Bamboo for their build server (but are thinking of moving to Team City). Nick showed us that their build pipeline looks like this:

IMG_5773

It was nice to see some familiar approaches here, albeit with different tools in some instances and some new ideas too.

You Me and Sitecore MVC

After a short break Kern Herskind delivered and entertaining (and Circus themed) presentation on Sitecore MVC. He even rode a unicycle at the end!

IMG_5777

Kern gave a general overview on MVC for those not familiar with the concepts and then how Sitecore MVC works and whats available out of the box. Not much of this was new to me but it was good get a refresher anyway.

Then Kern talked through some of the downfalls of Sitecore MVC and how he has gone about solving them. Things like renderings not being able to alter any HTML that is rendered prior to them being rendered and multiple form posting issues.

IMG_5781

IMG_5782

IMG_5783

We then go a sneaky peak of what coming up for Sitecore MVC, such as abstract base classes and better ServiceLocator and DI support:

IMG_5869-3

IMG_5873

Kern finished by talking about the future of Sitecore MVC and expectations for the future.

IMG_5787

Good to see better documentation and closing feature gaps on the list of improvements.

IMG_5788

The key message here being that Sitecore MVC is going to continue to be the preferred UI Framework.

Hedgehog then did a quick talk on their TDS product and helped to answer the question a lot of developers might have, “why should I pay for TDS instead of using Unicorn”.  The answer is probably in these two slides, maybe go and show them to your Boss :-).

IMG_5791

Essentially it does a lot more besides just syncing items between sitecore instances:

IMG_5792

I haven’t used it but I’ve head good things about it from other Sitecore Developers.

After lunch (which was excellent by the way) I opted to attend two talks on Sitecore Habitat. One by Ruud Van Falier called Introducing Sitecore Habitat and the 2nd by Anders Laub on Practical Habitat: Embrace the Architecture.

Introducing Sitecore Habitat

For those who don’t know what Habit is, it is an Architecture approach for Sitecore development and is designed to give best practice guidance on how to structure your Sitecore projects. I have taken a look at it a few times but not really used it and the feedback from other Sitecore developers I’d spoken to was that it was quite complicated, so I was interested in finding out more about it.

Ruud was presenting to a packed room with quite a few developers stood up at the back, obviously as keen as me to know more. He started with the basic concepts of Habitat, explaining how all modules are self-contained and that there should be no communication that goes upwards between modules.

IMG_5796

He also explained the the 3 layers of Habitat: Foundation, Features, Projects.

layers

Ruud then discussed examples of elements that might live in these layers and how the dependencies flows downwards.

IMG_5806

He then showed the technology stack, which are probably familiar tools to most of you. Sitecore 8.2,  MVC,  Dynamic Placeholders, Unicorn, Bootstrap, JQuery, Sass and Gulp.

A run-through of the Habitat solution structure then followed and an explanation of the different build tasks used.

build

There was then a more in-depth explanation regarding Modules:

IMG_5816

IMG_5818

IMG_5820

And then more detail on layers:

IMG_5822

IMG_5828

IMG_5832

IMG_5834

Finally, a pros and cons slide and questions:
IMG_5836

Ruud was honest about the fact that Habitat is in the early stages and is changing every day, he also said it’s not meant to be taken as a ‘Boiler Plate’ for Sitecore solutions – more a guideline. However, I left the session will a lot of things to investigate further and will definitely be taking a closer look at Habitat and how some of It’s concepts can be applied to the projects I am working on.

Practical Habitat: Embrace the Architecture

With my appetite now whetted for Habitat I went straight to the next session on embracing the architecture.

Anders talk started with a general discussion around Architecture and then moved to Habitat and why Pentia use it as an architecture for their solution:

IMG_5837

He then dived into a demo of their solution and explained how it differs to the default Habitat setup. I have a video of this somewhere which I’ll try and add here when I get a minute.

He then discussed a few foundation modules they have created and how it really works well for them as an approach.

IMG_5840

Anders took some tough questions from the crowd well (such as the number of projects in Habitat – which is many) and I think by the end of the session most of the room will be taking another look at Habitat.

Ladies and gentlemen start your testing.

Testing in Sitecore can be notoriously difficult and for some Sitecore developers this means that unit and integration tests that involve the Sitecore context or items are sometimes skipped.  I was interested to see if Alastair had some other ways to implement testing and I wasn’t disappointed :-).

IMG_5844

Alastair Deneys ran us through 4 ways in which to Unit test with Sitecore. The first was an interesting one and was to essentially install Sitecore in your application and then run the tests from an asp.net web page test runner.

The 2nd and 3rd were to add a minimal or full Sitecore config files and the Sitecore dlls you need to your nunit test project and run It. This worked pretty well but as Alastair said, isn’t proper unit testing as it’s using real data.

The 4th was to use FakeDb to mock the Sitecore items you need to run your tests. I’d heard about FakeDb before but not used it so it was nice to see an example of how this is done.

IMG_5855

Alastair also showed us how Sitecore.LiveTesting can be used to spin up an instance of Sitecore in a container in the background to test against.

IMG_5856

IMG_5863

It was a bit slow but seemed really cool and definitely something I’m going to experiment with.

IMG_5868

The key message here was, whatever you do make sure you create tests and don’t get hung up on if they are real unit tests or actually integration tests.

Sadly it was now time to head to get our flight home so I missed out on the last talk of the day by Martina Welander on refactoring doc.sitecore.net, hopefully I can find it on Google Hangout.

SUGCON was a great experience and It has given me a whole lot of ideas and things to look into for current and future Sitecore projects. Thanks to the Sitecore Community and the sponsors for putting on the event.

My only regret is not having chance to chat to any of the MVPs who have been so helpful on Slack and on their blogs, but I’ll definitely be back next year so I’ll buy you a beer or two then instead.

Till next time.

IMG_5878