Symposium 2018: Empowering Women in Technology and #movethedial

Another Symposium under the belt.  For me, this was the best one yet. The content of the sessions I attended were decent (see other post) but the bonding was my big takeaway.

Women in Digital #movethedial luncheon

The Wednesday luncheon was extra special.  The stage was owned by 6 well-spoken, smart, inspiring women.  However, they weren’t the only actors in the room.  At one point during the session, the panel called out to the men in the audience to thank them for attending.  It appeared that there was perhaps one man per every two to three tables.  (Thank you for attending!!)  I was taken aback when I realized how different the energy of the room was.  This was the polar opposite ratio that you’d expect at a tech conference and I finally felt like I truly belonged.  It’s now apparent to me that my gender somewhat drives my confidence in my career interactions; I hadn’t realized this before.  I’ll save my musings and stories for the Women In Sitecore blog that is coming soon, led by Amy Winburn.

Elevate your career experience: Empowering women in technology

I met some fabulous women at this year’s conference. We initially ‘met’ (virtually) over the summer after the Women In Sitecore panel session was approved but getting to hang out with them, see them in sessions, in the hallways, and at the parks was special for me.  For once I felt the kinship that I had seen by others at other Symposiums.  We had practiced our timing and words several times and each time, at different points each practice, I was moved to the point of tears, including during the session. I had always figured that other women MUST be experiencing the same trials and tribulations as me but it seemed awkward to reach out.  Again, I’ll be writing more about my past experiences and bonding in the upcoming Women In Sitecore blog.


Men and women both, please consider contributing and learning with us in the Sitecore Slack community channel:  #womenofsitecore.


My Symposium 2018 Takeaways and Sketchnotes

This symposium was a different one for me.  The sessions dedicated to women and the session LED by women were truly inspiring.  Also, I tried a different note-taking technique this year, sketchnoting.  See my previous post.  Here are my sketchnotes and some quick takeaways from each session:

The Cortex Engine:  Process at Scale

“Cortex is to Sitecore processing like xConnect is to xDB.”

Cortex is a set of components used to gather large amounts of data and process it via machine learning into marketing-ready information.  It uses tasks (distributed tasks and deferred actions–lower priority) to do the processing that is normally done manually by a marketing team.

A big takeaway from this session is that you’ll need a data scientist to provide direction to the developer to fine tune the Cortex model and then to be able to consume the processed data. Cortex will be available in Sitecore 9.1.

cortex engine

Where Machine Learning Meets Social #ThinkYouKnowMe

In an age where many details about individuals are at our fingertips, it’s important not to overrate what you have on hand.

In this session, my big takeaway is that the static demographic info provided by social media is not always the smartest dataset to be used for personalization.  This creates a broad stroke reach which is the opposite purpose of personalization.  Gather data only after the user converts on a goal and look at keywords and tags, not the demographics of the person.

machine learning

.NetCore and Sitecore 9.1 architecture

In this session,  we learned the goal of the Sitecore 9.1 architecture, which has components built in netcore, is to make Sitecore have smaller, testable components that leverage netcore whenever possible (like for diagnostics and logging … why re-invent the wheel?)

The new Sitecore Host lays the groundwork for a single way to start Sitecore applications.  It’s lean, versatile and has a low-hosting cost.

Sitecore Host is currently the base for the following three 9.1 components … Sitecore Identity (which controls everything auth-related including federated auth features), Horizon (drag-n-drop tool to eventually replace our friend the Experience Editor), and Universal Tracker (which gathers and quickly processes large amounts of mobile data before it eventually ends up on xDB).

Netcore and 9.1

Universal tracker and mobile analytics

Sitecore Universal Tracker – a new approach for tracking interactions in mobile.

Sitecore Universal Tracker is built to quickly process the huge amounts of data coming from mobile devices prior to it eventually going into xDB.  It alleviates some of the processing that xConnect does and does not use Web Tracker. You can configure channels that have a pre-filter (get rid of garbage data), enrichment (where the action is), and post-filter (further filtering).  Performance/pass rate of interactions/second goes up with DTU units.

Sitecore 9.1 Universal Tracker will include the SDK and Analytics recording.  Personalization will be included in a future release.

Universal Tracker

How to go faster: When Sitecore squadrons feel the need for speed

How to structure your dev squads to maximize collaboration and productivity.I had another session in mind for this timeslot but the speaker of this session, Adam Simmonds, was wonderfully complimentary on my sketchnotes so I simply had to attend his session. And I’m glad I did!

It was great to see what was accomplished on Open Universities Australia’s site to speed up deployments.  My biggest takeway was the documenting done in the value stream mapping session that reveals the bottlenecks.  I can apply that today.

Clean up -> Reduce -> Automate

need for speed

Sitecore Symposium 2018 – 3 Opening Keynotes

So you didn’t attend Symposium but wanna find out about the Keynotes?

I tried my hand at sketchnoting for the conference and below I’ve included three notes:  Mark Frost CEO Sitecore, Paige O’Neill, CMO Sitecore, and Deane Barker, author of ‘Web Content Management: Systems, Features, and Best Practices’

Mark Frost CEO Sitecore – Opening Keynote

Main takeaways:

  • “Elevate the Experience”
  • Acquisition of StyleLabs – asset management tools
  • Integration with Salesforce Marketing Cloud
  • Advanced personalization with Cortex
  • Use JSS (Sitecore JavaScript Services) for faster time to market
  • Sitecore to adopt a public charity each year; this year, Canada’s SickKids
  • Women In Technology was a big theme for the year; stay tuned for a separate post on the topic

Mark Frost keynote


Paige O’Neill – CMO Sitecore, Opening Keynote

Three case studies with companies optimizing Sitecore:  Volvo (“Cars as a Service”), Cannondale (personalized bike recommendations based on habits), and SickKids (Award for best Acquisition Campaign after making their donation mobile-friendly with unique, personal follow-up).


Deane Barker @gadgetopia – Technical Keynote

This was primarily a discussion on why software continues to get bigger and is it possible to shrink it?  Of course it is but not without losing functionality and alienating at least some of the audience.  Going headless (separating the presentation from the product), means faster time to market but at what price?  Is this trend going to stick around?

For now, there are two directions software can take:  continue growing the existing tool and add headless capabilities OR begin with headless and gradually add additionally desired features until you have the full tool.

Technical Keynote - Headless CMS

Sketchnoting – in preparation for Sitecore Symposium 2018

Getting ready for Symposium!  Time to take a good, hard look at my note-taking.  I am tired of session details going in one ear and out the other.  I want to retain something … anything!


At previous conferences, I’d often catch myself frantically writing down whatever was on the slide so I could use that as a base to attach my own notes.  There’s not enough time for that!

Next, I resorted to taking pictures of the slides.  Surprisingly, this was just as frantic for me. As a perfectionist, I wanted to make sure to get a picture of the finished slide after all the animated slide-ins, fade-ins were over.  I’d wait on it so as to not have duplicates and waste storage (I know, I know … it’s a stubborn hold-over from my youth with film cameras).  Wouldn’t you know that most often times, I’d miss that moment, mostly because I couldn’t get the focus in time.  I’d also realize that I wasn’t listening!

In a desperate attempt to learn, I then decided to just listen .. no notes, no camera.  After all, most session speakers post their slides afterwards.  It was much less frantic and enjoyable, however, as I’m not getting any younger, nothing was sticking in the brain!

So, I tried sketchnoting.  As you can see in my example below, you don’t have to know how to draw to sketchnote!

Here are my tips:

  • Determine your media.  Pen/paper?  Pencil/paper?  I chose electronic, mostly because I need to re-space my notes afterwards.  Who am I kidding? Sometimes I even re-write things in neater handwriting.  I use my personal Surface Pro 3 (old but works) and OneNote.  If you choose to use a tablet, consider watching the plethora of OneNote drawing videos out there.
  • Watch some sketchnoting tutorials. Here are a couple that I found useful.  Both Mike and Doug have many vids out there.
  • STEAL techniques from others! Yes, eventually they will all morph into your own.
  • Get an arsenal of symbols.  I’m still collecting these but know how you are going to represent bullets, emphasized data, hierarchy.
  • Practice.  Go on YouTube, find a video, and sketchnote it.  Some people even sketch note TV shows as practice.
  • Once you are in the session, IGNORE THE SLIDE and pay attention to the speaker as if he/she is talking exclusively to you.  Unlike a conversation, you can’t ask to repeat something you missed so a quick glance at the slide can help you recall what you just heard.
  • Write slowly to sketch neatly.  I know … this goes against everything I knew about note taking.  Take your time; your brain can handle it. Going slowly actually helps you document only the important points.  You listen while writing and can filter out the noise and keep the highlights.
  • Have fun with it.  Below, I experimented with adding emojis to emphasize points.  I suppose I can do this afterwards but it is time-consuming.
  • Decide if you are going to touch things up or leave your notes as is.  As mentioned above, I’m not capable of properly spacing out my notes so I modify mine after the session.  Sometimes I reduce the content.  I’ve found that when I zone out during a session, I am merely documenting what the speaker is saying … not listening.  Afterwards, I erase this section and summarize it with either a drawing or succinct words.
  • Lastly, SHARE.  Many speakers get a kick out of seeing that someone actually listened during their talk.  Also, the summary are highlights that you picked up but they could fill in some gaps that others missed in the same session. 🙂

My inaugural sketchnote:

first sketchnote



Migrating from Ektron to Sitecore: Media Library

So you wanna migrate from Ektron to Sitecore …


Your client has chosen to migrate from Ektron to Sitecore. How can the data be migrated?

In this series, I’ll describe the process that our team recently went through for migrating Ektron content to Sitecore without a content migration tool, without the Ektron API, but by diving right into the database.

Be sure to read the first 4 posts of this series before reading this one.  The links are at the bottom of this post.

About Our Project

We worked with Ektron Version: 9.10 SP1 (Build

Ektron Library

The images, videos, and files that make up the Ektron (media) Library are physically stored in two folders at the root of the website, /uploadedImages and /uploadedFiles.


There is a reference to these media items in the “Library” area of the Ektron admin tool and it contains some metadata fields.  Below, the Title and Description fields are editable and saved within Ektron.

Ektron media metadata

Migration Options

Once you have the Ektron media files on your local system, you have these options to getting the media into Sitecore:

Alternate Text

Unlike Sitecore, the alt tags are only saved to the reference link when the media is consumed by some content. (Sitecore allows you to save a default alternate text with the media item as well as allowing you to add it as a property when linking to it within a content item).

By default, Sitecore’s Image template has the Alternate Text field set to required so you’ll have the validation errors unless the field is populated.

alt text

Powershell Extensions to the rescue once again! If the Ektron library does not provide a meaningful value in the Title field, it is auto-populated with the filename.  Using Powershell Extensions in Sitecore, you can iterate through your uploaded images and populate the Alt field with the filename.

Check out all posts for this series:

Migrating from Ektron to Sitecore: Suggested Field Mappings

So you wanna migrate from Ektron to Sitecore …


Your client has chosen to migrate from Ektron to Sitecore. How can the data be migrated?

In this series, I’ll describe the process that our team recently went through for migrating Ektron content to Sitecore without a content migration tool, without the Ektron API, but by diving right into the database.

Be sure to read the first 3 posts of this series before reading this one.  The links are at the bottom of this post.

About Our Project

We worked with Ektron Version: 9.10 SP1 (Build

Content Table

Let’s do a deeper dive into the columns that make up the dbo.content table of Ektron.

Below is a mapping of Ektron fields to potential Sitecore template fields that our project used and a short explanation if needed.

Ektron column Sitecore field Note
content_id “Legacy Content Id” Include on a new _Imported interface template which is referenced on each Sitecore page template
content_language  __language You’ll need to do additional data massaging.  For instance, 1033 = “en”
content_title Item Name
(and possibly Display Name)
 For the item name, make sure to massage out all the characters that your Sitecore settings don’t support.
NOTE: If there is an alias set up for this content_Id (see UrlAliasMapping table in Ektron), use that value for the Item Name).
(XML field)
*All template-specific fields
(and possibly Display Name)
This field is the xml of the template-specific fields.
date_created __Created Ektron date format:
2016-09-21 03:09:08.000
Sitecore format:
See conversion tip below.
last_edit_lname __ Updated by
Concatenate the first and last name to form match a Sitecore userid.
last_edit_fname __ Updated by
Concatenate the first and last name to form match a Sitecore userid.
last_edit_date __ Updated Ektron date format:
2016-09-21 03:09:08.000
Sitecore format:
See conversion tip below.
content_teaser Meta Description
and possibly Teaser
This field may or may not be populated by the content author.
go_live_date Published Date Include as an interface template field if desired.
end_date Archive Date As mentioned in a previous post, if this field is populated, upon save, Sitecore moves this item to the Archive table (out of the master table).
image Meta Image This field may or may not be populated by the content author.

Conversion tip for Dates

The Ektron columns with datatype of DateTime will store the datetime in this format:
2016-09-21 03:09:08.000
Sitecore expects the dates to be in this format: 20160921T030908Z.

Assuming you are using Entity Framework to extract the data, the date fields will be available in a DateTime format.  Use the following to convert it to a Sitecore datetime string.

internal string ConvertDateToString(DateTime date)
 var sitecoreDateTime = 
Sitecore.Common.DateTimeExtensions.SpecifyKind(date, DateTimeKind.Utc);
 return Sitecore.DateUtil.ToIsoDate(sitecoreDateTime);

IMPORTANT: Dates stored in the content_html column are typically stored in a string format.  You’ll have to convert them to a datetime format and then use the method above to convert them to a Sitecore datetime string.

Conversion tip for Statistics

Within the Sitecore.Data.Items.ItemEditing API class, you’ll either use EditContext or .Editing.BeginEdit() method.   if you use the statements above without additional parameters, the Updated and Updated By fields will be auto-populated by Sitecore, even if you set them while modifying the item.

You can turn off this functionality by setting the ‘updateStatistics’ optional parameter to false.

Check out all posts for this series:

Migrating from Ektron to Sitecore: Migration Tips

So you wanna migrate from Ektron to Sitecore …


Your client has chosen to migrate from Ektron to Sitecore. How can the data be migrated?

In this series, I’ll describe the process that our team recently went through for migrating Ektron content to Sitecore without a content migration tool, without the Ektron API, but by diving right into the database.

Be sure to read the intro and Ektron database overview posts first.

About Our Project

Our assignment was to convert two Ektron websites to Sitecore; one ported over with the same look and feel as the existing site (Project A); the other, a complete redesign with the existing content (Project B). Throughout the blog series, I’ll reference the two projects as Project A and Project B.
NOTE:  We worked with Ektron Version: 9.10 SP1 (Build


There is alot of planning necessary when migrating content from one system to another.  After deciding what is going to be migrated to the new system, a migration order must be established.  In our project, much of the content was dependent on three areas:  the media library, taxonomy list and the People business area. (The client is a law firm so its people are its primary asset and they are tied to other business areas of the site like events, articles, and blogs). So, in the case of both of our projects, taxonomy is imported first, followed by media library, followed by People.

Migration Tip #1 – Migrate a Legacy Content Id to each Sitecore item

When building the Sitecore templates, make sure to include a single-line text field to house the Ektron Content ID.  This serves several purposes … it is used in migration to convert an Ektron relationship between two content items to a Sitecore relationship.  Also, with this ID, you can confidently re-run your migration script as many times as necessary without concern of having duplicate content within Sitecore (by always searching for the content ID before creating a new Sitecore item).

Migration Tip #2 – Retain the Ektron database indefinitely

This is important if the client chooses not to migrate 100% of the content.  Later, there may be a request to retrieve some unmigrated data.  Create several screenshots of the Ektron content tree so that the client has a familiar view for picking out content that wasn’t migrated so you can target it by folder path.  Then, use the content_folder_tbl’s FolderPath column to find the content.

Migration Tip #3 – Create a 301 redirect list while migrating

If your project is like mine, where several of the urls are changing, have an output of your migration be a mapping of old Ektron website url to new Sitecore website url and add these lists to your Sitecore Redirect Manager.

Migration Tip #4 – Update the Sitecore statistics with Ektron information

When saving imported content from Ektron, be sure to grab the admin fields for the Ektron content and update the __Created, __Created by, __Updated, and __Updated by fields.  See the next blog post for details on the Ektron to Sitecore mapping.

Migration Tip #5 – Add the alternate text to images and the title text to links at migration time

Like Sitecore, Ektron allows you to set the alternate text of an image when the image is referenced on a page.  Make sure to bring this over and if it’s not populated, suggest to the client that this is populated at content migration time with the image name (without the extension).

Migration Tip #6 – Fix the internal links in the rich text fields

Run your migration scripts a second time targeting the internal links that are in the rich text field.  You can use the 301 redirect table from tip #3 to assist.

Migration and Helix

As mentioned in the previous post, we opted to access the database directly within our Visual Studio project.

I started with a new project in the Foundation solution folder to house the the Entity Framework connection and some base classes that would change infrequently.

Namespace:  Foundation.ContentMigration.General

In this solution, I installed Entity Framework via the NuGet Package.

Install-Package EntityFramework

This Foundation project contains the EktronContentEntities model and a BaseRespository.cs class, a base class from which all business unit specific repositories inherit.  This contains the following:

  • instantiation of the EktronEntities class
  • pre-loading of the taxonomies from Sitecore
  • optional pre-loading of People from Sitecore
  • a simple method that pulled a list of items from Sitecore based on template from the index
  • methods to get taxonomies and people by Ektron content id

Each Feature project that has migrated content has a Content Migration repository class that inherits from this BaseRepository class.

I outline the contents of this feature project in the next blog.

Check out all posts for this series: