Where'd That Pipeline Go? (Could not get pipeline: getFieldLabel)

One of my coworkers was recently having a problem with a Sitecore upgrade (8.0 -> 8.1). In Velir's Slack, I noticed this interaction:

Dev [2:10 PM]
@here has anyone encountered this error with Sitecore 8.1 : Could not get pipeline: getFieldLabel (domain: )

Dev [2:11]
I'm in the process of upgrading from Sitecore 8.0 -> 8.1 and i'm not sure where this is coming from

Dev [2:16 PM]
deleted everything from the bin and rebuilt, no luck though

I wasn't aware of the getFieldLabel pipeline or when it was introduced, but I suspected it was either added or removed in 8.1. I opened stock copies of 8.0 and 8.1 (already downloaded, thanks to SIM) and compared the pipeline configuration sections:

Pipelines: Sitecore 8.0 vs. 8.1

But obviously one of two things was wrong in this developer's case:

  • The configuration elements for getFieldLabel were missing or overwritten.
  • The configuration elements were present, but Sitecore was somehow accessing the 8.0 version of Sitecore.Kernel.dll.

The second option seemed unlikely (there would probably be dozens of problems if am 8.0 dll was still hanging around). So I suggested the dev look into the configuration files on his computer:

Ed [2:48 PM]
the getFieldLabel pipeline doesn't exist in 8.0.

Ed [2:48]
<getFieldLabel> <processor type="Sitecore.Pipelines.GetFieldLabel.ResolveFieldLabel, Sitecore.Kernel" /> </getFieldLabel>

Ed [2:49]
I suspect the pipeline config entry didn't make it into the configs (or somehow it's trying to use the 8.0 version of Sitecore.Kernel.dll, though I expect you'd get a different error in that case)

It turned out I was right. The existing solution had moved many of the Sitecore configuration elements out of the web.config and into a new config, App_Config\SitecoreSettings.config. We implemented this behavior as a best practice, after some hairy upgrades in the past. Turns out Sitecore also implemented this best practice in 8.1, moving many of its configuration elements from web.config into App_Config\Sitecore.config (note the filenames in the above image).

The problem was that after the upgrade, the dev didn't recognize the difference between SitecoreSettings.config and Sitecore.config, a very reasonable mistake, and only included the older file in web.config.

Despite being unfamiliar with this specific problem, I was able to troubleshoot it quickly using two key methods:

  • Follow the error message.
  • Compare to stock Sitecore installations.

Those two simple steps can often save hours of time groping around in the dark for a solution.