Once In A White Moon - by Gina Therese Hvidsten
© 2019
Once In A White Moon

Automatically deploy all Sitecore Helix projects

A colleague wrote this blog post on how to deploy a Sitecore Helix solution without using gulp, which sounded like a good idea. However, me being me, I didn’t much care to open a package manager console and writing commands every time I wanted to publish the entire solution, so I came up with this alternative that (seemingly) integrates more with Visual Studio, and you only have to publish the main site project to also publish all the other projects. Prerequisite The prerequisites for my variant is a bit simpler and it only requires that IIS Management Script and Tools must be enabled from within “Turn Windows features on or off”: Install script Now you can copy the PowerShell script and config file from my GitHub repository and put […] Read more

MVC Attribute Routing in Sitecore 9

Due to Sitecore’s peculiarities, it doesn’t support Attribute Routing out of the box, and using the MapMvcAttributeRoutes()  extension method in MVC is not recommended. Sitecore does support MVC Routing, though, and Sitecore’s documentation on MVC routing gave me something to work with to allow me to use Attribute Routing. As the documentation states, you need to inject a custom pipeline after  Sitecore.Pipelines.Loader.EnsureAnonymousUsers. This placement ensures that we can still track logged in users in our attribute routes. Instead of adding each route manually as in the documentation, I use reflection to get all controllers from my assemblies, loop through all the methods in each controller, and check for the existence of MVC Route attributes. If the method has a route attribute I then create a new route using […] Read more

Sitecore Marketing Automation Custom Predicate woes

TL;DR: If you are getting “No predicate descriptor was registered with Id ‘9f3a44f4-179a-4d19-8583-14a8874e5bba’” in your Automation Engine log, make sure your XML definition file is prefixed with “sc.”   I recently needed to create some custom predicates for Marketing Automation in Sitecore 9.0. Sitecore has made a decent attempt at documenting what you need to do, but it is quite lacking in one specific area. After you have created your new class and inherited from ICondition (don’t worry about IContactSearchQueryFactory. It is not specifically mentioned, but for Marketing Automation rules you only need ICondition) you need to copy the DLL file that contains your custom predicate to the Automation Engine in this location: XConnectFolder\App_data\jobs\continuous\AutomationEngine. You also need to create an XML file for Automation Engine […] Read more

WPF, EntityFrameworkCore and SQLite

After starting on a new programming project I needed some way to have the application persist data between sessions. I eventually found SQLite, and the enthusiasm grew as I found out that there is an EntityFramework provider for this. Microsoft has even went a step further and made an EntityFrameworkCore implementation, which even supports migrations (albeit limited). When I saw that EntityFrameworkCore was supported even in regular .NET applications I reached peak enthusiasm and decided that this was my path. I eagerly started reading Microsoft’s “Getting started” documents, and almost immediately ran into problems. The migrations described in the previous link all mention running “dotnet ef” commands. The problem is that the documentation doesn’t specify where to execute those commands. And when I finally found out that […] Read more