Friday, July 17, 2020

Free Content Hub 101 Sessions for Customers and Partners

This year has already proved to be the year of Content Hub and it is only half over. As the year continues, the impact of Content Hub will continue to grow. Your competition is probably already using it or investigating using it in the near future.

As we believe in the importance of this SaaS platform in optimizing your marketing journeys we want to make sure you are aware of what it is and how you could use it. There is no obligation and you may look at it and determine it is not useful for you now but you may find that a quick demo will blow your mind and you will say what do I do next?  We are here to help.

Check out this article that introduces the content hub 101 session for more information and how to get a free CH 101 session for your company.


Thursday, October 17, 2019

Open Source Headless Commerce Accelerator


There has been a lot of people talking about Headless and Commerce but did you know there is an open source Accelerator for it?  If not then this article is for you.

To start check out these articles

 Next get your hands dirty and download it and play with it:

Are you struggling? Then comment on the GitHub and someone will respond.  I have downloaded it now and will be playing with it myself and will be posting issues and resolutions as well.  Looking forward to seeing you at Symposium. Stop by booth 700 to chat and see a demo.

If you are going to Symposium. This is my QR Code Connect with me there. Would love to discuss with you IRL.

Friday, August 2, 2019

Sitecore Content Hub Guild

There has been a lot of talk about Sitecore Content Hub especially with the release of Sitecore 9.2. This is a big product with lots of components and functionality so it can be confusing.  That is why I have started a new Guild specifically for Sitecore Content Hub.

If you are learning Sitecore Content Hub then join the guild. We are available on lots of channels. 

Twitter: @schguild
 LinkedIn: Sitecore Content Hub Mentoring Guild
 Blog: schguild.blogspot.com

If you have any questions feel free to email me at chris.williams@readwatchcreate.com

Thursday, July 11, 2019

A Place To Start The DAM Process

For those who have a DAM Solution, this article will be a repeat of things you already did but if you are still storing your assets across your network, across the internet and across the galaxy or universe then this is a place to start your Crawl, Walk, Run.

"Organizations need to audit and organize assets, implement a strong taxonomy and spearhead initial adoption to build a strong foundation for DAM"  says an article on MediaValet.

Your response is probably the same as mine. Ahhh. Audit and organize my assets but I have thousands of them or millions of them. Okay don't panic. Start smaller.
  1. Organizations need to implement a strong taxonomy with feedback from various departments and project managers.
  2. Organizations need to empower departments to audit and organize their assets one project at at time and map them into the string taxonomy created in step 1.  If the taxonomy needs adjusting then adjust it for everyone but have a good reason to do it.
  3. After step 1 and 2 then you can start discussing your DAM solution.
Do you need help with any of these steps? Let us know and we can find someone to help. 
Feel free to email me at chris.williams@readwatchcreate.com if you have questions.

Wednesday, July 10, 2019

How DAM Healthy are you?

As your future-self looking back you may say, "DAM, I should have done that years ago." However at the beginning of the process you look and wonder about the ROI. you look at the vast amount of planning necessary up front and very often you throw your hands up in the air and say okay fine business as usual.

Rather than getting overwhelmed let's take a step back and breathe.  Then we can take a DAM physical and see if there are things we can change that will help us on our way to the best DAM ever.

Answer the following 4 questions honestly based on your current state:

  1. How do marketing and creative share files?
  2. How do you handle metadata related to creative files?
  3. Is there a process to handle the creative permission life-cycle? When can you start using them and when do they expire?
  4. Do you have a process for archiving and deleting creative?
Now that you have your answers think about the same questions and what your ideal answer is. If you need help answering these for your ideal state or have questions about DAM Solutions in general  email me at chris.williams@readwatchcreate.com and we can schedule a chat to help.




Monday, April 29, 2019

Sitecore Host QuickStart

I was having a conversation with Corey Smith regarding Sitecore Host. As this year is going to be the Year of APIFirst, and Sitecore Host is very important to this, we decided to start a GitHub repository to help people get started quicker.  This repository will have some basic templates as well as some html documentation on various topics pointing you to some good articles and resources.

If you are working with Sitecore Host and would like to contribute let Corey or I know and we will add you. https://github.com/sitecoreguild/SitecoreHostQuickStart/blob/develop/README.md

If you are just getting started then here is a good starting point:

  • Read the official Sitecore Host documentation.
  • Check out George Chang's SUGCon Presentation 
  • Download the plug-ins from his 2 repositories listed in the presentation. Note that there are 2 repositories. The first is for the Sitecore Host and the second is for the plug-in.
  • Check out our follow up blog that goes over how to create your own Sitecore Host using George Chang's GitHub.
We look forward to collaborating together. Sitecore Host is going to be big this year. Let's be successful together.

Sunday, March 31, 2019

Creating Your Own Sitecore Services Client API Controllers

So now that I have my Sitecore Speak 3 Application there are multiple ways you can communicate with it. One way is to use the Sitecore Services Client API.

Sitecore provides a very useful Item Service that is useful to read information about items. The basic usage is something like this:


  • To get an item given its id you would do something like this:

    http://{your sitecore url}/sitecore/api/ssc/item/110D559F-DEA5-42EA-9C1C-8A5DF7E70EF9
  • To get an item by path you can do something like this:

    http://{your sitecore url}/api/ssc/item/?path=/sitecore/content/Home
  • To perform an item search you can do this:

    http://{your sitecore url}/api/ssc/item/search?term=Home
You can extend the Item Service to do more things.  David Peterson has written a good article to help you with this.

In my case, I needed something a bit different. I am getting some data from Sitecore items but additionally calling other APIs and pulling data from SQL Server and other sources.  For that it makes sense to create your own Controllers. 

Step 1: Create your Class Library


When doing this be aware of your version of Sitecore as you will need to make sure you are using the same version of the .NET Framework for your project.  I am using Sitecore 9.1 so I used 4.6.1 for my library.  I tried to use .NET Core or .NET Standard and it would not work for me.  When naming your take into account the routing.  By default it uses this as the route:

        http://localhost/api/ssc/{namespace}/{controller_name}/{id}/{controller_menhod}

        eg. http://localhost/api/ssc/SitecoreGuild-Ssc/Mentoring/123/GetTopics

WARNING: The namespace is important as Sitecore will use it for the default routing. You can override the routing with some more work but for me I tried to keep it simple and simplified my namespace name. This article provides more info on creating custom routes.

Next add the proper references to your .NET Framework 4.6.1 class library project in my case it is these:
  •  Microsoft.AspNet.WebApi.Core v5.2.6 - If you are using 9.1 then you need to use this. There is a newer version but you will get issues as Sitecore uses this version.
  • Sitecore.Services.Core - This would be the version in your bin folder after your Sitecore install.
  • Sitecore.Services.Infrastructure - This would be the version in your bin folder after your Sitecore install.
Before you start your development, you can do a sanity check in your environment to see if that works. I used the Mike Robbins Controller in my .Net Framework project and copied the result to the bin folder. Once I saw that one was coming up I knew my project was configured correctly.  After that I deleted his controller and started on my own.  

Create a new controller and derive it from ServicesApiController. At the top make sure you include

using System.Web.Http;

If you do not then it will prompt you to include the MVC one and if you do that you will get lots of funky errors. This one step will save you lots of confusion later.

Once you are ready to go beyond localhost you will need to do some additional configurations which are mentioned in this article.

On your new controller you will probably want to include a name. If you don't then Sitecore will do it for you and it will likely not look pretty.

    [ServicesController("MyServices/MyController")]
    public class MyControllerServiceApiController : ServicesApiController

As you add actions to your controller you will need to decorate them with an action name.

        [ActionName("GetSample")]
        public string GetSample(string id)
        {
             return "MySample:
        }

If you forget to put action it may work for your first method or it may fail but if you have 2 methods the second one will definitely fail with: 

No action was found on the controller 'MyControllerServiceApiController' that matches the request."}


Friday, March 22, 2019

Getting Speak 3 With A Little Help From My Friends

A Better Way Of Starting A New Speak 3 Project

I began the task to start my Speak 3 application and struggled. More and more people reached out to assist me and my previous blog article was all about that help.  However then this came up and I was surprised it was so buried in Search.  Now that I have found it I am going to let all of you know.

If you are starting with Speak 3 and Angular you will want to check out this article on the Sitecore Speak Starter Template by Mihály Árvai, and the Corresponding GitHub. It will save you a ton of time. The only thing to be aware of is the build command is npm run-script build. If you forget the run-script the command will prompt you so no worries.

Special thanks to:

Creating New Pages

TO DO: I am still doing this for my project but as I do it I will document it here.

Adding Components

When you are ready to add components then your next step should be to set up this Sitecore Speak UI Library project.  This article explains how to get the Sitecore Speak 3 UI Collection set up. Then you can see some components in use and copy them over to your solution as a starting point. 

You will get an error in the header.components.html file. Simply open the header.components.ts and make sure it has the isNavigationShown : boolean; as noted below. This will fix the error and then the project will run. You can then click on component pages and see how components work then use them in your project.

import { Component, OnInit } from '@angular/core';
import { SciLogoutService } from '@speak/ng-sc/logout';

@Component({
selector: 'app-header',
templateUrl: './header.component.html',
styleUrls: ['./header.component.scss']
})
export class HeaderComponent implements OnInit {
// WAS MISSING IN EXAMPLE
isNavigationShown : boolean;

constructor(
public logoutService: SciLogoutService) { }

ngOnInit() {
}

}


Monday, March 18, 2019

Speak Friend and Enter - The Journey Through Mordor to create your first Speak 3 Application

Dain and Diana are currently learning all about Sitecore Speak 3. As they know nothing about NodeJS or Angular this is quite a challenge for them.  This article will help you with some of the obstacles they ran into and how you can overcome them.

A few friends have helped Dain in his quest. Special thanks to:
  • Tim AKA "Hi My Name Is Tim" for writing an amazing article on Creating a Sitecore Speak 3 application
  • Dean Thrasher please follow him on Twitter using @dthrasher. His team created a Speak 3 app as part of Hackathon and that helped us with some of the issues
  • Tony Mamedbekov my hackathon team mate that taught me lots about npm and versions of packages in the packages.json file. Dll hell all over again :)
  • Julia Gavrilova who wrote another amazing article that ensured I knew that I needed Angular 4 not 5. Thanks you saved me a lot of time.
  • James Q Quick please follow him on Twitter using @jamesqquick. I used his article to help me start debugging my Speak 3 app.  
Ok let's get started.

Step 1: Get Prepared First.

As the BoyScouts say, always be prepared. Before we start we need to get things ready.
  • As Tim recommends you should install Visual Studio Code. DAIN and Diana recommend it as well.
  • Install Node.JS. I just installed the Recommended for most users version.
  • Install Angular 4 using

    Npm install -g @angular/cli@1.4

    Beware this is one of those gotchas. Thanks Julia Gavrilova for this tip. I could not figure out why I got the error "Error: Cannot find module 'webpack/lib/node/NodeTemplatePlugin'" and then I read your blog and realized
    Sitecore Speak 3 uses Angular 4, which means that all modules you decide to use should support this version of Angular. In addition to that syntax is different between Angular versions, and you need to pay attention to that as well when writing your code. 
    If you previously installed Angular 5 or 6 instead and you run the command it will roll back and reinstall the proper version.
  • As a sanity check you should check the versions. In my case my global Angular CLI version (7.3.6) is greater than my local version (1.2.7).

     ng version
  • If your local version is not new enough you will need to do an uninstall in reinstall of the right one.

Step 2: Creating your application

  • Open a Command Prompt as Run As Administrator. 
  • Change directory to the folder above where you want to create your application and then run this replacing app-name with the name of your application eg. DainSpeak3

    ng new app-name
  • Now you can stumble through or you can take Tim's advice and download the Sitecore Speak 3 Reference Application. I did and it saved me a lot of time. Thanks Tim
  • Once downloaded look in the "Sitecore SPEAK 3.0 Reference Application\SPEAK3.Apps.Minimal\SPEAK3.Apps.Minimal\code\Sc.Integration.Ref.App.Client" folder. Copy the .npmrc and package.json file from here to your application folder.
  • Change directory so you are in your application folder and run

    npm install
  • Now if the versions are not right when you run ng version then you may have to do a few npm uninstall and npm install of given components to get all the right ones.
  • If you try ng server --open from your application folder and it does not load it will often tell you which package it could not load.  If it says config is null or some obscure error then do an npm uninstall and npm install and it should tell you which modules it skipped. Hopefully at some point they will solve this issue with package versions.  Until then you have to play with it.
After running ng server --open I got my application to open on the default port.  It is showing the Welcome to app screen but that is the start. If you got here pat yourself on the back and go buy a poutine and a chocolate milk or if you prefer a nice glass of Jura Scotch.


Now you may be all excited because it opened but remember if you wanted it to be disconnected mode then you need to load it a little differently.

npm run-script start:disconnected

Step 3: Customizing How Your Application Starts

So the default port for your application is 4200 but you don't have to live with that. You can open the 
angular-cli.json and change the port to whatever you wish. The default file will be missing the serve section so you will need to add it so it looks like below.  For those Stephen King fans you will understand the port number.

  "defaults": {
    "styleExt": "css",
    "component": {},
     "serve": {
          "port": 1408
     }

Once you change the port you can open your application again and it will use the new port.

Step 4: Paging Dr Kildare or customizing how your application looks

This is where the real fun begins. Open Visual Studio Code and then from the File menu chooose Open Folder.  Choose your application folder and click Select Folder.  This will open your application.

To start we will look at the app.component.html file located in the /src/apps folder. I simply copied the one from the reference application.

Next you can generated a new landing-page component using ng generate component landing-page

I took the easy way out and copied the \src\app folder from the reference project. If you want to look at the steps to do it yourself you can see them in the article Speak 3 adventures of a back end developer.

Open the angular-cli.json and look for the style section. Change style.css to ../node_modules/@speak/styling/dist/styles/sitecore.css

The style node now looks like this:

      "styles": [
        "../node_modules/@speak/styling/dist/styles/sitecore.css"
      ],

Again you can follow the steps in in the article Speak 3 adventures of a back end developer or you can simply copy over the angular-cli.json from the reference project. I took the short cut and copied it over.

If you choose to copy it like I did then you only have to change the project name to match yours and the port to match yours.

Step 5: Debugging With Visual Studio Code

Speaking of Scotch, this will be a lifesaver especially if you are new to Angular and Speak3.  Check out this article and it will show you step by step how to create a debugging configuration.

https://scotch.io/tutorials/debugging-angular-cli-applications-in-visual-studio-code

Step 6: Simulating Login and Logout while Disconnected

This is done by copying the mock folder in the root of the reference application to your application.

Step 7: Running it inside Sitecore

The first step is creating your Application in Sitecore. Log into the Sitecore admin and click on Desktop. Change the database to core and then open content editor.  Navigate to /sitecore/content/applications. Right-click and create your application.

The second step is to prepare to build your release.

If you copied the packages.json file from Sitecore you will need to edit the application name and version. Under scripts you will need to edit the build property to point to your application.

{
  "name": "MySpeak",
  "version": "0.0.1",
  "license": "MIT",
  "scripts": {
    "ng": "ng",
    "start": "npm run start:disconnected",
    "start:disconnected": "ng serve --proxy-config disconnected-mode.conf.js",
    "build": "ng build --prod --base-href=/sitecore/shell/client/Applications/MySpeak",
    "postbuild": "ng-sc --entry ./dist/index.html && sc-license-checker",
    "test": "ng test",
    "lint": "ng lint",
    "e2e": "ng e2e"
  },

If your application uses any more modules the you would need to add them here too. Once you are ready run this command to create your release application in the dist folder.

npm run-script build


To be Continued ... 

Saturday, December 1, 2018

Machine Learning and Artificial Intelligence

As many of you know I have been playing with Sitecore Dain and the more feisty Sitecore Diana over the past year. Through this process I have learned a lot from a lot of people on AI and ML. The best algorithms to use, how to use multiple providers to reduce bias in algorithms.  Starting last week the Dain and Diana blog is publishing articles on some of that learning.  Look for cross-over posts here as we take some of that learning and apply it specifically to Sitecore and in some cases Cortex.

If you are interested in Machine Learning and Artificial Intelligence and have started using Cortex let me know.  I would love to reference some of your blog posts on amazing things you are doing with it.


Wednesday, November 14, 2018

Sitecore and the Tale of Two Session Config Entries

You probably know the main one in the web.config but the other is used by analytics. If you change one you should probably change the other or session will be in different places.

This article shows the sharedSession tag you need to change:

https://doc.sitecore.net/sitecore_experience_platform/81/setting_up_and_maintaining/xdb/session_state/walkthrough_configure_a_shared_session_state_database_using_the_sql_server_provider

Monday, January 15, 2018

Sitecore Commerce 9 QuickStarts - Installing Sitecore Commerce 9


The first step is to install Sitecore 9. If you are doing so in the development environment please read the Sitecore 9 QuickStart on Installing Sitecore 9

Once you have Sitecore 9 installed you can follow the installation guide. I will list any issues I ran into at each step and ways to resolve them.

WARNING: Make sure you install IIS Url Rewriter module or install will fail

3.6.1 Add a recognized user to the xDB shard databases

At this step you set up your database users.  If you get an error regarding :setvar then you have SQL Management Studio in the wrong mode. You can set the mode by clicking on the query menu and then choosing SQLCMD Mode.


4.3 Generate Sitecore XC Engine Package

During this step be aware that if you have added the .NET Framework using features you still need to install the Dev Pack. If you do not then when you open the project it will not show up in the list or will throw an error during build or publish.  If you get an error and then install it you will have to close Visual Studio and reopen it choosing Run As Adminstrator for it to be fixed.  You may have to click on each project and then right click and choose Properties and choose the 4.6.2 framework from the list. I did in Visual Studio 2017.

The rest of the install went smooth for me based on the instructions supplied. If you run into issue installing feel free to comment here or on the slack channel or on Sitecore StackExchange.  We are very happy to help you get started with this revolutionary version.




Friday, November 17, 2017

Sitecore 9 QuickStarts - Getting Started With xConnect

The best place to get started with XConnect is using Martina's documentation. It walks you through your basic XConnect console application.

Once you have this console app building start taking a look at the Jason Wilkerson blog articles on XConnect. Although tempting, do NOT start with Jason's articles. It is important that you get Martina's application working first and then start adding functionality from Jason's articles. The reason is that Martina's will do all the client certificate stuff properly and that is what you want for production.

I started myself with this console app and am now using Jason's blog articles myself.  My hope is to build out a repository on GitHub along with a series of articles on how to integrate XConnect with a variety of other applications in hopes this will save others time doing this.  If you are building an integration maybe we can collaborate and then add it to the repository for others to use.

When you create your project in Visual Studio 2017, if it defaults to creating your console app as 4.6.1 and you switch to 4.6.2 you may get an error about the root node.  If you do it is a bug in the conversion.  Check your app.config file and make sure it is formatted like this.  In my case it removed the configuration node and put startup within appSettings.

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2"/>
  </startup>
  <appSettings>
    <add key="xConnectCertificateThumbprint" value="082FF77F7C87A93A3C5FE88CFB3DAB730DEF331A"/>
  </appSettings>
</configuration>

If you do not see the 4.6.2 option in Visual Studio 2017 then you need to install the developer pack

Troubleshooting

The error you may run into and in fact I did is, "Sitecore.XConnect.XdbCollectionUnavailableException: 'The HTTP response was not successful: Unauthorized' The StackExchange mentions these 3 causes:

  1. Your thumbprint or certificate is not properly installed so you are being blocked from connecting to xConnect
  2. Your application does not have access to the certificate (e.g. IIS user does not have permission)
  3. You did not execute the script in the installation guide Post-installation steps.
On first install I had forgot to run the execution script, doh. The second time around it was the second one but it was a step further it was not the certificate itself but a policy applied to my laptop by IT that was not allowing the root authority because I was generating a self-signed certificate on my development environment. Hopefully this will help you when you run into this issue.

If you are running into issues with 401 or 403 errors connecting to xConnnect then this article can help you troubleshooting the certificate issues. It is all about xConnect Security. 


Monday, November 13, 2017

The Glass is Half Empty - Why can I not get all children of type Image from the media library folder?

So here is the problem.  I have a component where the user assigns a media folder for say a photo gallery.  Now I simply want to pull in all images from beneath this folder. I was tempted to do this but it always returns null.

imageFolderItem.Children.OfType<Image>()

But why?  Well according to Sitecore Poutine (Corey Smith AKA Sitecorey) the Image represents an Image field not the Sitecore Image template.  So to accomplish this you would simply do the following:

Go to the definition of Image and copy the class.  Make your own class but call it ImageItem.
Now set the TemplateId to be the Id of the Image template in Sitecore.

    /// <summary>
    /// This is an item based on the image template. If you are after the field use Image.
    /// </summary>
    [SitecoreType(TemplateId = "{F1828A2C-7E5D-4BBD-98CA-320474871548}", AutoMap = true)]
    public class ImageItem : IgnitionViewModel
    {
        //
        // Summary:
        //     Gets or sets the alt.
        public string Alt { get; set; }
        //
        // Summary:
        //     Gets or sets the border.
        public string Border { get; set; }
        //
        // Summary:
        //     Gets or sets the class.
        public string Class { get; set; }
        //
        // Summary:
        //     Gets or sets the height.
        public int Height { get; set; }
        //
        // Summary:
        //     Gets or sets the H space.
        public int HSpace { get; set; }
        //
        // Summary:
        //     Gets the SRC.
        public string Src { get; set; }
        //
        // Summary:
        //     Gets or sets the V space.
        public int VSpace { get; set; }
        //
        // Summary:
        //     Gets or sets the width.
        public int Width { get; set; }
        //
        // Summary:
        //     Gets or sets the media id.
        public Guid MediaId { get; set; }
        //
        // Summary:
        //     Gets or sets the title.
        public string Title { get; set; }
        public Language Language { get; set; }
    }

Now your call can look like this:

     imageFolderItem.Children.OfType<ImageItem>());

And my Symposium 2017 Selfie pictures are returning.













I wish I had found this article a couple hours ago so if you have written one on this issue and have a better description on what the issue is and how to solve it comment here.  Hopefully this will help someone else with the issue.

Wednesday, November 8, 2017

Sitecore 9 QuickStarts: Installing Sitecore 9 In Development Environment

Installing Sitecore 9

Now that you are back from Sitecore Symposium and the announcement has been made you are likely wanting to get started installing it.  This article will help you get it set up and offer tips on places where you could run into issues.

WARNING: The focus of this blog on the local developer environment install and getting you started. If you are installing in any other environment you will want to follow a different set of instructions. If you need help with that let me know I would be glad to help personally or direct you to someone whom can help.

Just like my you are probably lazy and will want to follow the Lazy Way to Install Sitecore 9 and that is right. However before following the lazy way you need to download the right version. As of this article it is the Sitecore 9 Initial Release.


Once you have the Sitecore 9 downloaded, you will want to use Jeremy's Gist script.  This article explains how the Low Effort SOLR Install script works.

SPECIAL NOTE FOR Windows 8 or 10: If you have not already you will need to enable the Local Admin account. After you have done this you can create a local admin account for SOLR to run under as well as set up app pool users.

If you are new to SOLR, please be aware that SOLR is a Java technology so you will required to Install Java to run it. If after install SOLR will not start then you probably have to install Java. You can confirm this by opening a command prompt (Run as Administrator and then CD SOLR\solr-6.6.2\bin changing the version if you have a newer version of SOLR.  Then type solr start. You will get the error saying:

error: java.exe not found

If java is installed and still get the error check the path in your environment variables JAVA_HOME. Mine was set to the wrong path, an older version of Java.

You can confirm SOLR is running by going to the admin https://solr:8983/solr if you changed your port then this may be different but if you stuck with the defaults it should show the SOLR admin

Save yourself some time and get the pre-requisites installed:


  • Install Microsoft Web Platform Installer
  • Search for "Web Deploy 3.6 For Hosting Servers" make sure it is this version because if it does not say For Hosting Servers it will bite you later.
  • Install SIF. To do so open Windows Powershell ISE (Run as Administrator)
  • In console at the bottom run Register-PSRepository -Name SitecoreGallery -SourceLocation https://sitecore.myget.org/F/sc-powershell/api/v2
  • Then run Install-Module SitecoreInstallFramework 
  • Then ensure you have the latest by running Update-Module SitecoreInstallFramework


Once you have SOLR installed and the pre-requisites then follow the Lazy Way to Install Sitecore 9 I used the Rock Paper Scissors UI mentioned in the article as it will generate the scripts and run them if you would like.

When I installed the first time, I unchecked the checkbox so it would run automatically but then ran into issues with permissions writing to the host file. A better approach is to set the permissions on the host file then open Windows Powershell SPE (Run as Administrator) then in the command window enter this command:

Set-ExecutionPolicy RemoteSigned

After that then run the generated script.  This worked well for me. I have now copied Jeremy Davis' script along with Kam's to my R2D2 Unit for transport to any dev machine that needs it in the future.



Possible Issues and Troubleshooting

First Time Install

I mentioned a couple things inline in the install section but there are a few other things that may help you will resolving issues.

ISSUE: Error requesting 
http://xp0.sc/sitecore/admin/PopulateManagedSchema.aspx?indexes=all: The remote server returned an error: (500) 
POSSIBLE RESOLUTION: Check event log and in my case it said "Login failed for user 'collectionuser'. Reason: Could not find a login matching the name provided. [CLIENT: <local machine>]"  Now in my case I had to add that user to my database and ensure it had access to the proper permissions. If you are using another user for the collection user then you need to edit the connectionstring.config however note that there are now 2 connectionstring.config files.  The first in in App_Config but the other is in \App_data\jobs\continuous\IndexWorker\App_config\ConnectionStrings.config make sure you change both.

ISSUE: Error hitting xconnect in browser:
Handler "ExtensionlessUrlHandler-Integrated-4.0" has a bad module "ManagedPipelineHandler" in its module list
Now there is the normal spot in "Turn Windows Features On" for .NET 4.7 however there is also the other spot that is not as obvious place under "Turn Windows Features On" under "Internet Information Services > World Wide Web Services > Application Development Features" Navigate there and check ASP.NET 4.6

Re-Running The Install


Now if you ran the install and it failed, upon running it a second time you may run into other issues.
The first error you will get is:

 You must remove all users with password before setting the containment property to NONE.

The issue that the users cannot be deleted by the SIF process. the fix then open SQL Management Studio and delete the SQL Server user from the databases that were created. This stack exchange post describes it in detail.

If you need help installing Sitecore 9 let us know and we will be glad to help out. I myself have only installed it in a local dev environment at this point but I am sure I will be doing it in a cloud capacity before you know it as well.

If you are looking for a mentor to connect with you on a regular basis for Sitecore or any other technology, Read Watch Create can arrange an introduction. Email me at chris.williams@readwatchcreate.com and I can arrange for mentoring sessions at a reasonable rates.



Friday, September 1, 2017

The Sitecore Alphabet

The inaugural Alabama Sitecore User Group is September 13th and Corey Smith, Sitecore Architect and MVP, will be there to discuss Sitecore MVC from A-Z

This brought to mind the Sitecore Alphabet.  I will start with a few terms per letter and we can build this as we go, helping us all learn more about Sitecore and the various elements, features, terms and events in the community.

Hope this helps you on your learning journey down Alphabet Street.


Below is a list of terms for each letter.  Eventually they will all be linked.

A

B

C

D

E

F

  • FakeDb
  • FXM

G

  • Globalization
  • Glass Mapper
  • GitHub

H

  • Habitat
  • Helix
  • Hackathons
  • Html
  • HedgeHog - Known for TDS and RAZl listed seperately
  • Houston Sitecore User Group
  • Hyderabad Sitecore User Group

I

  • India Sitecore User Group
  • Ignition
  • Information Architecture

J 

  • Jaipur Sitecore User Group
  • Jordan Sitecore User Group

K

  • Kansas City / Overland Park Sitecore User Group

L

  • Lehigh Valley Sitecore User Group
  • London Sitecore User Group
  • Los Angeles Sitecore User Group
M

  • Mauritius Sitecore User Group
  • Melbourne Sitecore User Group
  • Mikwaukee Sitecore User Group
  • Minneapolis Sitecore User Group
  • Mumbai Sitecore User Group

N

  • Nederland Sitecore User Group
  • Nagpur - India Sitecore User Group
  • New England Sitecore User Group
  • New York Metro User Group
O

  • Orlando Sitecore User Group
  • Ottawa Sitecore User Group
P

  • Pakistan Sitecore User Group
  • Philadelphia Sitecore User Group
  • Portland Sitecore User Group
  • Poland Sitecore User Group
  • Pune Sitecore User Group
Q

  • Quebec Sitecore User Group
  • Queen City Sitecore User Group
R

  • Romania Sitecore User Group
S

  • Serbia Sitecore User Group
  • Spain Sitecore User Group
  • Sri Lanka Sitecore User Group
  • Switzerland Sitecore User Group
  • Sydney Sitecore User Group
T
U

  • UAE-Dubai Sitecore User Group (SUGUAE)
  • Ukraine Sitecore User Group
V
W
X
Y
Z

Friday, July 28, 2017

Introducing the Sitecore Commerce Mentoring Guild

There are a lot of us learning Sitecore Commerce and we are all at various stages.  The core thing we share is we are all learning it.  To help us all get ramped up on it quickly and efficiently, Eric Stafford and I have established a Sitecore Commerce Mentoring Guild Page and a Sitecore Commerce Mentoring Guild Group.

The page will feature some notes, posts, and events where we can share public information.  The group allows us a place to ask each other questions, provide some info on what we are working on, where we are struggling and things we can use to help.

As more people join and we gain more momentum, I would love to have a github where we could share snippets, powershells, and more advanced stuff together on it.

Eric and I have created the initial spark.  We look forward to the community creating the fire that will push us with much force into the new era.

Also if you are on Sitecore Slack then please add the #ecommerce channel.

Tuesday, June 20, 2017

How To Check If An Item Has Publishing Restrictions

If you have items that are appearing in master and in web but on the website you get a 404 then you may want to check publishing restrictions. Here is how you do it.



  1. Log into the Sitecore Admin
  2. Click on Content Editor
  3. At the top Click on View then ensure Standard Fields is checked

  4. Now on find the content item you are having issues with and click on it.
  5. On the right hand panel scroll down and you will see a publishing section. Expand it and make sure there are no values set on these fields. If there are dates it will only display within that range.

  6. Now the other thing to check is at the very bottom of this section. If this checkbox is published then it will not publish ever.

  7.  Now the other place to check is Workflow Section. If this item is in a workflow state it will not display either but in this case it should not be in the Web database either.

If the item exists in master and not in web then the other thing you can try is publish the parent node.  When publish finishes you can expand the details on the dialog and it will tell you if something was pushed or not.

If you are still experiencing this issue feel free to email me at chris.williams@readwatchcreate.com and I will assist as much as I can. 


Tuesday, May 23, 2017

Exporting the username and custom properties from Sitecore using Powershell

I found a great article on exporting users from Sitecore and it did 90% of what I needed. It showed how to export the custom properties but what was missing was the username.  Read the article for more details on how the export works as it is a really good article.

I am simply going to give you the additional field in bold below as this will give you the username in the form {domain}\{user} eg. sitecore\admin:

$property = @(
"Name",
@{Name='Email';Expression={ $PSItem.Profile.GetCustomProperty('Email') }},
@{Name='FirstName';Expression={ $PSItem.Profile.GetCustomProperty('FirstName') }},
@{Name='LastName';Expression={ $PSItem.Profile.GetCustomProperty('LastName') }},
@{Name='Title';Expression={ $PSItem.Profile.GetCustomProperty('Title') }},
@{Name='Company';Expression={ $PSItem.Profile.GetCustomProperty('Company') }},
@{Name='Country';Expression={ $PSItem.Profile.GetCustomProperty('Country') }},
@{Name='ZipCode';Expression={ $PSItem.Profile.GetCustomProperty('ZipCode') }},
@{Name='Department';Expression={ $PSItem.Profile.GetCustomProperty('Department') }},
@{Name='Street';Expression={ $PSItem.Profile.GetCustomProperty('Street') }},
@{Name='City';Expression={ $PSItem.Profile.GetCustomProperty('City') }},
@{Name='Phone';Expression={ $PSItem.Profile.GetCustomProperty('Phone') }},
@{Name='Username';Expression={ $PSItem.Profile.GetCustomProperty('Username') }},
)

# Gets not disabled extranet users, next select all custome properties and save all properties to CSV file
Get-User -Filter 'extranet\*'  `
    | Where-Object { $_.Profile.State -ne 'Disabled' } `
        |  Select-Object -Property $property `
            | Export-CSV -Path "$apppath\extranet-enabled-uc.csv" -notype -encoding "unicode"
       
Download-File  "$apppath\extranet-enabled-uc.csv"


Hopefully you will find this helpful. Thanks Robert Senktas for the article it helped get me 90% there. If you have tips tricks or resources you would like to share please let me know and I will post them here.

Thursday, April 20, 2017

Coveo free edition for Salesforce Is Now Here

Welcome Salesforce to the community.  In the Sitecore community we have known about Coveo and all its wonders for years. Now you can take advantage of it too.  Find out more in this article on Coveo Debuts free AI Powered Search for Salesforce.


We are so excited about this as you should too.