How do I enable daily reports without re-enabling recommended updates?
Asked by Chad Barnes:

When Confluence 4.x came out, it introduced recommended updates. Popular pages sent to your inbox. Unfortunately, this optional feature was enabled by default for all users and it ultimately spammed our entire user base. The recommended approach to disable that feature was to disable the daily-summary-email plug-in. It worked.

And... daily updates emails were still sent out (not the popular pages email).

We just upgraded to Confluence 5.3 and our daily updates emails have stopped sending. The error indicates that a template from the daily-summary-email plug-in is required. However, we have that disabled to avoid the popular pages email spamming.

How can we get our daily updates emails working again and still leave the popular pages email feature disabled?

```
2013-11-19 00:00:44,353 ERROR [scheduler_Worker-5] [confluence.mail.jobs.DefaultDailyReportManager] queueDailyReportEmail Failed to create daily report for user hjsimpsoncom.atlassian.confluence.renderer.template.TemplateRenderingException: Unable to compile Soy template in plugin module: com.atlassian.confluence.plugins.confluence-daily-summary-email:chrome-template	at com.atlassian.confluence.plugins.soy.ConfluenceSoyTemplateRenderer.renderTo(ConfluenceSoyTemplateRenderer.java:42)	at com.atlassian.confluence.renderer.template.DelegatingTemplateRenderer.renderTo(DelegatingTemplateRenderer.java:44)	at com.atlassian.confluence.renderer.template.DelegatingTemplateRenderer.renderTo(DelegatingTemplateRenderer.java:25)	at com.atlassian.confluence.mail.template.AbstractMailNotificationQueueItem.renderTemplate(AbstractMailNotificationQueueItem.java:310)	at com.atlassian.confluence.mail.template.PreRenderedMailNotificationQueueItem.access$201(PreRenderedMailNotificationQueueItem.java:47)	at com.atlassian.confluence.mail.template.PreRenderedMailNotificationQueueItem$2.call(PreRenderedMailNotificationQueueItem.java:337)	at com.atlassian.confluence.mail.template.PreRenderedMailNotificationQueueItem$2.call(PreRenderedMailNotificationQueueItem.java:333)	at com.atlassian.confluence.user.AuthenticatedUserImpersonator$2.call(AuthenticatedUserImpersonator.java:134)	at com.atlassian.confluence.user.AuthenticatedUserImpersonator$1.call(AuthenticatedUserImpersonator.java:113)	at com.atlassian.confluence.user.AuthenticatedUserImpersonator.asUser(AuthenticatedUserImpersonator.java:89)	at com.atlassian.confluence.mail.template.PreRenderedMailNotificationQueueItem.renderTemplateForRecipient(PreRenderedMailNotificationQueueItem.java:332)	at com.atlassian.confluence.mail.template.PreRenderedMailNotificationQueueItem.renderTemplate(PreRenderedMailNotificationQueueItem.java:287)	at com.atlassian.confluence.mail.template.AbstractMailNotificationQueueItem.renderLegacyTemplate(AbstractMailNotificationQueueItem.java:303)	at com.atlassian.confluence.mail.template.AbstractMailNotificationQueueItem.preRenderBody(AbstractMailNotificationQueueItem.java:223)	at com.atlassian.confluence.mail.template.PreRenderedMailNotificationQueueItem$Builder.render(PreRenderedMailNotificationQueueItem.java:498)	at com.atlassian.confluence.mail.jobs.DefaultDailyReportManager.queueDailyReportEmail(DefaultDailyReportManager.java:134)	at com.atlassian.confluence.mail.jobs.DefaultDailyReportManager.generateDailyReports(DefaultDailyReportManager.java:92)	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)	at java.lang.reflect.Method.invoke(Unknown Source)	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)	at com.atlassian.spring.interceptors.SpringProfilingInterceptor.invoke(SpringProfilingInterceptor.java:16)	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)	at com.sun.proxy.$Proxy92.generateDailyReports(Unknown Source)	at com.atlassian.confluence.mail.jobs.DailyReportJob.doExecute(DailyReportJob.java:29)	at com.atlassian.quartz.jobs.AbstractJob.executeInternal(AbstractJob.java:88)	at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:86)	at com.atlassian.confluence.setup.quartz.DelegatingClusterAwareQuartzJobBean.executeJob(DelegatingClusterAwareQuartzJobBean.java:16)	at com.atlassian.confluence.setup.quartz.AbstractClusterAwareQuartzJobBean.surroundJobExecutionWithLogging(AbstractClusterAwareQuartzJobBean.java:64)	at com.atlassian.confluence.setup.quartz.AbstractClusterAwareQuartzJobBean.executeInternal(AbstractClusterAwareQuartzJobBean.java:46)	at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:86)	at org.quartz.core.JobRunShell.run(JobRunShell.java:199)	at com.atlassian.confluence.schedule.quartz.ConfluenceQuartzThreadPool$1.run(ConfluenceQuartzThreadPool.java:20)	at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:549)Caused by: com.atlassian.soy.renderer.SoyException: Unable to compile Soy template in plugin module: com.atlassian.confluence.plugins.confluence-daily-summary-email:chrome-template	at com.atlassian.soy.impl.DefaultSoyManager.render(DefaultSoyManager.java:123)	at com.atlassian.soy.impl.SoyTemplateRendererImpl.render(SoyTemplateRendererImpl.java:40)	at sun.reflect.GeneratedMethodAccessor732.invoke(Unknown Source)	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)	at java.lang.reflect.Method.invoke(Unknown Source)	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)	at org.springframework.osgi.service.importer.support.internal.aop.ServiceInvoker.doInvoke(ServiceInvoker.java:58)	at org.springframework.osgi.service.importer.support.internal.aop.ServiceInvoker.invoke(ServiceInvoker.java:62)	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)	at org.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:131)	at org.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:119)	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)	at org.springframework.osgi.service.util.internal.aop.ServiceTCCLInterceptor.invokeUnprivileged(ServiceTCCLInterceptor.java:56)	at org.springframework.osgi.service.util.internal.aop.ServiceTCCLInterceptor.invoke(ServiceTCCLInterceptor.java:39)	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)	at org.springframework.osgi.service.importer.support.LocalBundleContextAdvice.invoke(LocalBundleContextAdvice.java:59)	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)	at org.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:131)	at org.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:119)	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)	at com.sun.proxy.$Proxy847.render(Unknown Source)	at com.atlassian.confluence.plugins.soy.ConfluenceSoyTemplateRenderer.renderTo(ConfluenceSoyTemplateRenderer.java:38)	... 39 moreCaused by: com.google.common.util.concurrent.UncheckedExecutionException: java.lang.IllegalStateException: Required plugin module com.atlassian.confluence.plugins.confluence-daily-summary-email:chrome-template was either missing or disabled	at com.google.common.cache.CustomConcurrentHashMap$ComputedUncheckedException.get(CustomConcurrentHashMap.java:3305)	at com.google.common.cache.CustomConcurrentHashMap$ComputingValueReference.compute(CustomConcurrentHashMap.java:3441)	at com.google.common.cache.CustomConcurrentHashMap$Segment.compute(CustomConcurrentHashMap.java:2322)	at com.google.common.cache.CustomConcurrentHashMap$Segment.getOrCompute(CustomConcurrentHashMap.java:2291)	at com.google.common.cache.CustomConcurrentHashMap.getOrCompute(CustomConcurrentHashMap.java:3802)	at com.google.common.cache.ComputingCache.get(ComputingCache.java:46)	at com.google.common.cache.AbstractCache.getUnchecked(AbstractCache.java:49)	at com.atlassian.soy.impl.TemplateSetFactory.get(TemplateSetFactory.java:63)	at com.atlassian.soy.impl.DefaultSoyManager.strainTofu(DefaultSoyManager.java:209)	at com.atlassian.soy.impl.DefaultSoyManager.access$100(DefaultSoyManager.java:36)	at com.atlassian.soy.impl.DefaultSoyManager$1.load(DefaultSoyManager.java:68)	at com.atlassian.soy.impl.DefaultSoyManager$1.load(DefaultSoyManager.java:64)	at com.google.common.cache.CustomConcurrentHashMap$ComputingValueReference.compute(CustomConcurrentHashMap.java:3426)	at com.google.common.cache.CustomConcurrentHashMap$Segment.compute(CustomConcurrentHashMap.java:2322)	at com.google.common.cache.CustomConcurrentHashMap$Segment.getOrCompute(CustomConcurrentHashMap.java:2291)	at com.google.common.cache.CustomConcurrentHashMap.getOrCompute(CustomConcurrentHashMap.java:3802)	at com.google.common.cache.ComputingCache.get(ComputingCache.java:46)	at com.google.common.cache.AbstractCache.getUnchecked(AbstractCache.java:49)	at com.atlassian.soy.impl.DefaultSoyManager.render(DefaultSoyManager.java:104)	... 61 moreCaused by: java.lang.IllegalStateException: Required plugin module com.atlassian.confluence.plugins.confluence-daily-summary-email:chrome-template was either missing or disabled	at com.atlassian.soy.impl.TemplateSetFactory$TemplateSetBuilder.addTemplatesForTree(TemplateSetFactory.java:99)	at com.atlassian.soy.impl.TemplateSetFactory$TemplateSetBuilder.access$200(TemplateSetFactory.java:82)	at com.atlassian.soy.impl.TemplateSetFactory.findRequiredTemplates(TemplateSetFactory.java:76)	at com.atlassian.soy.impl.TemplateSetFactory.access$000(TemplateSetFactory.java:25)	at com.atlassian.soy.impl.TemplateSetFactory$1.load(TemplateSetFactory.java:47)	at com.atlassian.soy.impl.TemplateSetFactory$1.load(TemplateSetFactory.java:43)	at com.google.common.cache.CustomConcurrentHashMap$ComputingValueReference.compute(CustomConcurrentHashMap.java:3426)	... 78 more
```


Answers:
author: Chad Barnes
body: I received a response from Atlassian support. The explanation was that the cross dependencies on these plug-ins was due to the new use of soy templates with 5.x. The recommended fix was to re-enable the recommended updates plug-in and immediately disable the scheduled job that sends the recommneded updates email.

For now I suppose this may work but I am not keen on these separate plugins having dependency between them.


author: Adrien Ragot 2
body: Hi Chad,

You should check there's a bug report for this one, or create it: [](https://jira.atlassian.com/browse/CONF)<https://jira.atlassian.com/browse/CONF>

Regards,

Adrien


Tags: confluence-administration

email