8

I am currently unable to check the 'Ignore Additional Registrations' checkbox for any of the Outcomes in the Marketing Control Panel.

The following error is written to the logs when I try to save the change.

Event code: 3005 Event message: An unhandled exception has occurred. Event time: 10/5/2016 11:40:56 AM Event time (UTC): 10/5/2016 6:40:56 PM Event ID: 9aa236d1cd4e4eed8bf49754522b3c9d Event sequence: 754 Event occurrence: 1 Event detail code: 0 Application information: Application domain: /LM/W3SVC/1/ROOT-2-131201628730241453 Trust level: Full Application Virtual Path: / Application Path: E:\wwwroot\Sitecore\Website\ Machine name: MD1DEVVEXWEB09 Process information: Process ID: 3996 Process name: w3wp.exe Account name: IIS APPPOOL\SitecoreAppPool Exception information: Exception type: TargetInvocationException Exception message: Exception has been thrown by the target of an invocation. at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at Sitecore.Reflection.ReflectionUtil.InvokeMethod(MethodInfo method, Object[] parameters, Object obj) at Sitecore.Nexus.Pipelines.NexusPipelineApi.Resume(PipelineArgs args, Pipeline pipeline) at Sitecore.Pipelines.Pipeline.Start(PipelineArgs args, Boolean atomic)
at Sitecore.Web.UI.Sheer.ClientPage.RunPipelines() at Sitecore.Web.UI.Sheer.ClientPage.OnPreRender(EventArgs e) at Sitecore.Shell.Applications.ContentManager.ContentEditorPage.OnPreRender(EventArgs e) at System.Web.UI.Control.PreRenderRecursiveInternal() at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

One or more exceptions occurred while processing the subscribers to the 'item:saved' event. at Sitecore.Events.Event.EventSubscribers.RaiseEvent(String eventName, Object[] parameters, EventResult result) at Sitecore.Events.Event.RaiseEvent(String eventName, Object[] parameters) at Sitecore.Events.Event.RaiseItemSaved(Object sender, ItemSavedEventArgs args) at System.EventHandler1.Invoke(Object sender, TEventArgs e) at Sitecore.Data.Engines.EngineCommand2.RaiseEvent[TArgs](EventHandler1 handlers, Func2 argsCreator) at Sitecore.Data.Engines.EngineCommand`2.Execute() at Sitecore.Data.Engines.DataEngine.SaveItem(Item item) at Sitecore.Data.Managers.ItemProvider.SaveItem(Item item) at Sitecore.Data.Items.ItemEditing.AcceptChanges(Boolean updateStatistics, Boolean silent) at Sitecore.Pipelines.Save.Save.Process(SaveArgs args)

Request information: 
Request URL: https://stage.domainremovedforsecurity.com:443/sitecore/shell/Applications/Content

Manager/default.aspx?he=Marketing Control Panel&pa=0&ic=People/16x16/megaphone.png&ro={33CFB9CA-F565-4D5B-B88A-7CDFE29A6D71}&mo=templateworkspace

Request path: /sitecore/shell/Applications/Content Manager/default.aspx 
User host address: 172.16.102.103 
User: sitecore\admin 
Is authenticated: True 
Authentication Type:  
Thread account name: IIS APPPOOL\SitecoreAppPool    Thread information: 
Thread ID: 93 
Thread account name: IIS APPPOOL\SitecoreAppPool 
Is impersonating: False 
Stack trace:    at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)    at

System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at Sitecore.Reflection.ReflectionUtil.InvokeMethod(MethodInfo method, Object[] parameters, Object obj) at Sitecore.Nexus.Pipelines.NexusPipelineApi.Resume(PipelineArgs args, Pipeline pipeline) at Sitecore.Pipelines.Pipeline.Start(PipelineArgs args, Boolean atomic)
at Sitecore.Web.UI.Sheer.ClientPage.RunPipelines() at Sitecore.Web.UI.Sheer.ClientPage.OnPreRender(EventArgs e) at Sitecore.Shell.Applications.ContentManager.ContentEditorPage.OnPreRender(EventArgs e) at System.Web.UI.Control.PreRenderRecursiveInternal() at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) Custom event details:

It seems I can rename the item with no problem, I just can't check the box.

I am running Sitecore 8.1 Update 2 and xDB Cloud.


Update: This has now been confirmed as a bug by Sitecore (reference number 128651). A hotfix has been created for it.

  • Are your collection and reporting databases available to the application? – Dmytro Shevchenko Oct 5 '16 at 18:54
  • They should be. I don't have any other errors indicating they are not. – eat-sleep-code Oct 5 '16 at 18:58
  • Have you got any custom code subscribing to the item:saved event? – Ian Graham Oct 5 '16 at 20:07
  • Not that I am aware of. This is the first I have encountered this type of thing. Our actual Sitecore install has been in place since January so we have saved plenty of items -- but we are just starting to get Sitecore Analytics working though. – eat-sleep-code Oct 5 '16 at 21:43
2

Explaining the error message

The error you are getting is not related to the checkbox issue. I believe the error is caused by the fact that your Reporting database is not directly available to your application. You can verify if that is indeed the case by commenting out the following section of the Sitecore.Analytics.config:

<observer type="Sitecore.Analytics.Reporting.DefinitionData.Marketing.Observers.SaveDefinitionToRepositoryObserver`1[[Sitecore.Marketing.Definitions.Outcomes.Model.IOutcomeDefinition, Sitecore.Marketing]], Sitecore.Analytics">
  <param desc="repositoryName" ref="marketingDefinitions/deploymentManagerTargetRepository" />
</observer>

This will stop Sitecore from attempting to save outcomes to the RDB.

Ideally, to stop the error from being logged, you should request Sitecore support for the right configuration of the deployment manager repository, since it is different with xDB cloud.

Understanding the checkbox issue

The checkbox values for both "Ignore Additional Registrations" and "Monetary Value Applicable" are not being saved properly due to a bug in the Sitecore.Marketing.dll.

The method ItemOutcomeDefinitionRepository.OutcomeMapper.SetCultureInvariantFields() does not save the checkbox values correctly. It uses MainUtil.BoolToString() to convert boolean values to strings, and that results in the value 'true' being saved to the item database. 'true' is not a recognized value for the Checkbox field type, and hence, the checkboxes remain unchecked after the save.

You can fix the values in the database with the following SQL query:

UPDATE [VersionedFields]
SET Value = '1'
WHERE Value = 'true'

After you clear item caches using the page /sitecore/admin/cache.aspx, you'll see the checkboxes checked.

This is a workaround that you can use for now. Please report this issue to Sitecore support to get a proper fix.

Edit: As @eat-sleep-code mentioned in the comments, Sitecore registered this as a bug with reference number 128651. Refer to this number via support to receive a hotfix.

  • 1
    I have passed this info over to Sitecore support. Good catch! – eat-sleep-code Oct 6 '16 at 16:28
  • 1
    Update: This has now been confirmed as a bug by Sitecore (reference number 128651). A hotfix has been created for it. – eat-sleep-code Oct 11 '16 at 15:26
  • @eat-sleep-code Awesome! Thanks for the update! – Dmytro Shevchenko Oct 11 '16 at 15:36

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.