Aggregation fails for visits with Download event triggered on media item


Description

When "Download" event occurs during a visit for a media item that has an empty value in the "Marketing Asset" field, the corresponding interaction will cause exception in aggregation process and will be excluded from the results displayed by Experience Analytics or any other reporting application.

The following error would also occur in log files:

9100 12:12:33 ERROR Aggregation Error
Exception: System.Exception
Message: definition not found
Source: Sitecore.ExperienceAnalytics 
  at Sitecore.ExperienceAnalytics.Aggregation.Pipeline.SegmentProcessor.ProcessSegments(AggregationPipelineArgs args, IEnumerable`1 segments) 
  at Sitecore.ExperienceAnalytics.Aggregation.Pipeline.SegmentProcessor.OnProcess(AggregationPipelineArgs args) 
  at Sitecore.Analytics.Aggregation.Pipeline.AggregationProcessor.Process(AggregationPipelineArgs args) Nested Exception 
Exception: System.InvalidOperationException Message: definition not found Source: Sitecore.ExperienceAnalytics   at Sitecore.ExperienceAnalytics.Core.Repositories.FacetDataService.GetFacetFieldValues[TDefinition](ID itemId) at Sitecore.ExperienceAnalytics.Core.Repositories.FacetDataService.HasDimensionKey[TDefinition](PageEventData pageEvent)   at System.Linq.Enumerable.WhereListIterator`1.MoveNext() at Sitecore.ExperienceAnalytics.Aggregation.Dimensions.PageEventDimensionBase.GetDimensionKeys(IVisitAggregationContext context)   at Sitecore.ExperienceAnalytics.Aggregation.Dimensions.PageEventDimensionBase.<GetData>d__8.MoveNext()   at System.Linq.Enumerable.WhereEnumerableIterator`1.MoveNext()   at Sitecore.ExperienceAnalytics.Aggregation.Pipeline.SegmentProcessor.ProcessSegments(AggregationPipelineArgs args, IEnumerable`1 segments)

Solution

To avoid the issue, populate the "Marketing Asset" field on all media items before connecting Sitecore XP 8.1 installation to xDB.

To populate "Marketing Asset" field automatically, use the following workaround: