Thursday, December 14, 2017

Sitecore EXM error after upgrade

After upgrading a Sitecore instances version of the Email Experience Manager (EXM) to version 3.5, the following error appeared when attempting to load the site:
Could not find configuration node: "exm/eds/senderManager"

This can be solved by ensuring the Sitecore.EDS.Core.config (located in \Website\App_Config\Include\EmailExperience) configuration file is enabled.

However if the error is appearing on a content delivery instance, the configuration file above should not be enabled. You should check that only the following email campaign/email experience DLLs are present in the bin folder:
  1. Sitecore.EmailCampaign.Cd.dll
  2. Sitecore.EmailCampaign.Content.dll
  3. Sitecore.EmailCampaign.dll
  4. Sitecore.EmailCampaign.Model.dll
  5. Sitecore.ExM.Framework.dll
It's also worth checking that only the following configurations are enabled in the \Website\App_Config\Include\EmailExperience folder:
  1. Sitecore.EmailExperience.CommitSession.config
  2. Sitecore.EmailExperience.ContentDelivery.config
  3. Sitecore.EmailExperience.Core.config
  4. Sitecore.ExM.Framework.config
  5. Sitecore.ExM.Framework.ContentDelivery.config
Either of the above solutions should solve the error for you.

Wednesday, December 13, 2017

Sitecore TDS error during solution deploy

When attempting to deploy a Sitecore (Habitat) solution to a local instance, the following error was appearing for a number of TDS projects:
The "DeploySitecoreItems" task was not given a value for the required parameter "ProjectId".
Several steps were undertaken in attempting to solve this issue:

  • Restart IIS
  • Close and re-open visual studio (and ensure it's running as administrator)
  • Testing the connection on one of the TDS projects to ensure it's configured correctly.
Sitecore TDS test connection
After trying all of these steps the solution would deploy as expected.

Sitecore Instance Manager - packages does not contain Web.config file

When attempting to import a Sitecore solution using Sitecore Instance Manager (SIM), the following error would display:
Wrong package for import. The package does not contain the Website/Web.config file.
Sitecore Instance Manager - missing Web.config file
Looking inside the package, there was a Web.config file inside a Website directory. The version of SIM was the latest at the time (1.5.0.2), and according to the SIM bug tracking this issue was resolved several (minor) releases ago.

It turns out that the Solution that I was trying to import, was generated months ago on a now outdated version of SIM. By re-exporting the solution using the latest version it could then be imported successfully.

If your solution uses Sitecore Experience Accelerator (SXA), you may need to download the QA version of SIM.

Tuesday, December 5, 2017

Sitecore update analyze or installation freezes

When upgrading a Sitecore instance (from version 8.1 to 8.2), the update installation wizard would freeze at a certain point. This was happening with both the analyze and install option, it would always freeze around item number 535 - 540.
Sitecore update installation freezes
The event logs would display no useful information and there was nothing in the Sitecore logs. After attaching procdump to the w3wp process, it was discovered that a stack overflow exception was being raised. The debug diagnostic tool was then enabled (and set to log a full dump for stack overflow exceptions). The dump file showed that New Relic logging was causing a stack overflow each time and causing the update to freeze.

In my case disabling New Relic, allowed the update to work as expected.

Sitecore ValueFactory error after upgrade

After upgrading a Sitecore instance from version 8.1 to 8.2 (update 5) the following error appeared on the web site and Sitecore admin area:
ValueFactory attempted to access the Value property of this instance.
Further down the stack trace there was mention of both MongoDB and analytics:
[InvalidOperationException: ValueFactory attempted to access the Value property of this instance.]
System.Lazy`1.CreateValue() +739
System.Lazy`1.LazyInitValue() +428
MongoDB.Bson.Serialization.Serializers.EnumerableInterfaceImplementerSerializer`2.MongoDB.Bson.Serialization.IChildSerializerConfigurable.get_ChildSerializer() +15
Sitecore.Analytics.Data.DataAccess.MongoDb.DictionaryRepresentationConvention.Apply(IBsonSerializer serializer) +109
Sitecore.Analytics.Data.DataAccess.MongoDb.DictionaryRepresentationConvention.Apply(IBsonSerializer serializer) +120
Sitecore.Analytics.Data.DataAccess.MongoDb.DictionaryRepresentationConvention.Apply(BsonMemberMap memberMap) +33
MongoDB.Bson.Serialization.Conventions.ConventionRunner.Apply(BsonClassMap classMap) +358
MongoDB.Bson.Serialization.BsonClassMap.AutoMapClass() +79
MongoDB.Bson.Serialization.BsonClassMap.LookupClassMap(Type classType) +435
MongoDB.Bson.Serialization.BsonClassMapSerializationProvider.GetSerializer(Type type, IBsonSerializerRegistry serializerRegistry) +234
MongoDB.Bson.Serialization.BsonSerializerRegistry.CreateSerializer(Type type) +174
In this instance, both the web forms for marketers and email experience modules were installed. As per the upgrade instructions, these configuration files were disabled. However a couple of the WFFM configuration files were missed. These files are not all listed alphabetically as they have three naming conventions, so it's easy to miss one:
  • Sitecore.Forms.*
  • Sitecore.MvcForms.config
  • Sitecore.WFFM.*
You may also see the following error if you miss the Sitecore.MvcForms.config file:
Could not find configuration node: /sitecore/wffm/data/perRequestStorage