<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic NullPointerException on TimerBoundaryEvent trigger in Alfresco Forum</title>
    <link>https://connect.hyland.com/t5/alfresco-forum/nullpointerexception-on-timerboundaryevent-trigger/m-p/37881#M15988</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;We recently upgraded from Activiti 5.18 to 6.0.0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;We had a&amp;nbsp;requirement&amp;nbsp;to capture Activiti history only for certain workflow types. As per the suggestion from Activiti team, we had overridden the&amp;nbsp;org.activiti.engine.impl.history.DefaultHistoryManager to provide overridden implementation only for the method&amp;nbsp;isHistoryLevelAtLeast(HistoryLevel level)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The suggested code changes were done as follows&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;import org.activiti.engine.ProcessEngine; &lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;import org.activiti.spring.SpringProcessEngineConfiguration; &lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;import com.abc.dms.activiti.persistence.DMSHistoryManagerSessionFactory; &lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;public class CustomSpringProcessEngineConfiguration extends SpringProcessEngineConfiguration { &lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Override public ProcessEngine buildProcessEngine() { &lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ProcessEngine processEngine = super.buildProcessEngine(); &lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;addSessionFactory(new CustomHistoryManagerSessionFactory()); &lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return processEngine; &lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt; }&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;import org.activiti.engine.impl.interceptor.Session;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;import org.activiti.engine.impl.persistence.DefaultHistoryManagerSessionFactory;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;import com.abc.dms.activiti.history.DMSCustomHistoryManager;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;public class CustomHistoryManagerSessionFactory extends DefaultHistoryManagerSessionFactory {&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;@Override&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;public Session openSession() {&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return new CustomHistoryManager();&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;}&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;import org.activiti.engine.impl.history.DefaultHistoryManager;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;import org.activiti.engine.impl.history.HistoryLevel;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;import org.activiti.engine.impl.persistence.entity.ExecutionEntity;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;import org.apache.commons.logging.Log;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;import org.apache.commons.logging.LogFactory;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;import com.abc.dms.activiti.cache.ActivitiThreadCache;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;import com.abc.dms.activiti.constant.ActivitiConstantManager;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;public class CustomHistoryManager extends DefaultHistoryManager implements ActivitiConstantManager {&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Override&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;public boolean isHistoryLevelAtLeast(HistoryLevel level) {&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// TODO Auto-generated method stub&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;boolean atLeast = true;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String hlevel = ActivitiThreadCache.get(HISTORY_LEVEL);&lt;/EM&gt;&lt;BR /&gt; &lt;BR /&gt;&lt;EM&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;HistoryLevel historyLevel = null;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(hlevel != null)&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;historyLevel = HistoryLevel.getHistoryLevelForKey(hlevel.toLowerCase());&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(null != historyLevel){&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;atLeast = historyLevel.isAtLeast(level);&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else {&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;atLeast = super.isHistoryLevelAtLeast(level);&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return atLeast;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Override&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;public void recordProcessInstanceStart(ExecutionEntity processInstance) {&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;super.recordProcessInstanceStart(processInstance);&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;}&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;After upgrading the Activiti to 6.0.0&lt;/P&gt;&lt;P&gt;We did the following changes,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;import org.activiti.engine.ProcessEngine;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;import org.activiti.spring.SpringProcessEngineConfiguration;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;import com.abc.dms.activiti.history.DMSCustomHistoryManager;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;public class CustomSpringProcessEngineConfiguration extends SpringProcessEngineConfiguration {&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;@Override&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;public ProcessEngine buildProcessEngine() {&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ProcessEngine processEngine = super.buildProcessEngine();&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return processEngine;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/EM&gt;&lt;BR /&gt; &lt;BR /&gt;&lt;EM&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;@Override&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;public void initHistoryManager() {&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (historyManager == null) {&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;historyManager = new CustomHistoryManager(this);&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;}&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;import org.activiti.engine.impl.cfg.ProcessEngineConfigurationImpl;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;import org.activiti.engine.impl.history.DefaultHistoryManager;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;import org.activiti.engine.impl.history.HistoryLevel;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;import org.apache.commons.logging.Log;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;import org.apache.commons.logging.LogFactory;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;public class DMSCustomHistoryManager extends DefaultHistoryManager implements ActivitiConstantManager {&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;public DMSCustomHistoryManager(ProcessEngineConfigurationImpl processEngineConfiguration) {&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;super(processEngineConfiguration, HistoryLevel.getHistoryLevelForKey(processEngineConfiguration.getHistory()));&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/EM&gt;&lt;BR /&gt; &lt;BR /&gt;&lt;EM&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;@Override&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;public boolean isHistoryLevelAtLeast(HistoryLevel level) {&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;boolean atLeast = true;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String hlevel = ActivitiThreadCache.get(HISTORY_LEVEL);&lt;/EM&gt;&lt;BR /&gt; &lt;BR /&gt;&lt;EM&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;HistoryLevel historyLevel = null;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(hlevel != null)&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;historyLevel = HistoryLevel.getHistoryLevelForKey(hlevel.toLowerCase());&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(null != historyLevel){&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;atLeast = historyLevel.isAtLeast(level);&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else {&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;atLeast = super.isHistoryLevelAtLeast(level);&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return atLeast;&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;}&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;With these changes, in Activiti 6.0.0 we are able to achieve to capture History only for intended workflow types, where as workflows for which Boundary timer events are attached, the trigger on timeout fails with below exception&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 12px;"&gt;&lt;EM&gt;java.lang.NullPointerException&lt;/EM&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 12px;"&gt;&lt;EM&gt; at org.activiti.engine.impl.db.DbSqlSession.delete(DbSqlSession.java:226)&lt;/EM&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 12px;"&gt;&lt;EM&gt; at org.activiti.engine.impl.persistence.entity.data.AbstractDataManager.delete(AbstractDataManager.java:87)&lt;/EM&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 12px;"&gt;&lt;EM&gt; at org.activiti.engine.impl.persistence.entity.AbstractEntityManager.delete(AbstractEntityManager.java:92)&lt;/EM&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 12px;"&gt;&lt;EM&gt; at org.activiti.engine.impl.persistence.entity.HistoricProcessInstanceEntityManagerImpl.delete(HistoricProcessInstanceEntityManagerImpl.java:71)&lt;/EM&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 12px;"&gt;&lt;EM&gt; at org.activiti.engine.impl.persistence.entity.ExecutionEntityManagerImpl.deleteProcessInstanceCascade(ExecutionEntityManagerImpl.java:412)&lt;/EM&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 12px;"&gt;&lt;EM&gt; at org.activiti.engine.impl.persistence.entity.ExecutionEntityManagerImpl.deleteProcessInstanceCascade(ExecutionEntityManagerImpl.java:384)&lt;/EM&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 12px;"&gt;&lt;EM&gt; at org.activiti.engine.impl.persistence.entity.ExecutionEntityManagerImpl.deleteProcessInstanceExecutionEntity(ExecutionEntityManagerImpl.java:443)&lt;/EM&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 12px;"&gt;&lt;EM&gt; at org.activiti.engine.impl.bpmn.behavior.BoundaryEventActivityBehavior.deleteChildExecutions(BoundaryEventActivityBehavior.java:152)&lt;/EM&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 12px;"&gt;&lt;EM&gt; at org.activiti.engine.impl.bpmn.behavior.BoundaryEventActivityBehavior.deleteChildExecutions(BoundaryEventActivityBehavior.java:143)&lt;/EM&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 12px;"&gt;&lt;EM&gt; at org.activiti.engine.impl.bpmn.behavior.BoundaryEventActivityBehavior.executeInterruptingBehavior(BoundaryEventActivityBehavior.java:88)&lt;/EM&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 12px;"&gt;&lt;EM&gt; at org.activiti.engine.impl.bpmn.behavior.BoundaryEventActivityBehavior.trigger(BoundaryEventActivityBehavior.java:56)&lt;/EM&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 12px;"&gt;&lt;EM&gt; at org.activiti.engine.impl.agenda.TriggerExecutionOperation.run(TriggerExecutionOperation.java:38)&lt;/EM&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 12px;"&gt;&lt;EM&gt; at org.activiti.engine.impl.interceptor.CommandInvoker.executeOperation(CommandInvoker.java:73)&lt;/EM&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 12px;"&gt;&lt;EM&gt; at org.activiti.engine.impl.interceptor.CommandInvoker.executeOperations(CommandInvoker.java:57)&lt;/EM&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 12px;"&gt;&lt;EM&gt; at org.activiti.engine.impl.interceptor.CommandInvoker.execute(CommandInvoker.java:42)&lt;/EM&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 12px;"&gt;&lt;EM&gt; at org.activiti.engine.impl.interceptor.TransactionContextInterceptor.execute(TransactionContextInterceptor.java:48)&lt;/EM&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 12px;"&gt;&lt;EM&gt; at org.activiti.engine.impl.interceptor.CommandContextInterceptor.execute(CommandContextInterceptor.java:63)&lt;/EM&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 12px;"&gt;&lt;EM&gt; at org.activiti.spring.SpringTransactionInterceptor$1.doInTransaction(SpringTransactionInterceptor.java:47)&lt;/EM&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 12px;"&gt;&lt;EM&gt; at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:130)&lt;/EM&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 12px;"&gt;&lt;EM&gt; at org.activiti.spring.SpringTransactionInterceptor.execute(SpringTransactionInterceptor.java:45)&lt;/EM&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 12px;"&gt;&lt;EM&gt; at org.activiti.engine.impl.interceptor.LogInterceptor.execute(LogInterceptor.java:29)&lt;/EM&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 12px;"&gt;&lt;EM&gt; at org.activiti.engine.impl.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:44)&lt;/EM&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 12px;"&gt;&lt;EM&gt; at org.activiti.engine.impl.cfg.CommandExecutorImpl.execute(CommandExecutorImpl.java:39)&lt;/EM&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 12px;"&gt;&lt;EM&gt; at org.activiti.engine.impl.asyncexecutor.ExecuteAsyncRunnable.executeJob(ExecuteAsyncRunnable.java:97)&lt;/EM&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 12px;"&gt;&lt;EM&gt; at org.activiti.engine.impl.asyncexecutor.ExecuteAsyncRunnable.run(ExecuteAsyncRunnable.java:75)&lt;/EM&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 12px;"&gt;&lt;EM&gt; at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)&lt;/EM&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 12px;"&gt;&lt;EM&gt; at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)&lt;/EM&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 12px;"&gt;&lt;EM&gt; at java.lang.Thread.run(Thread.java:748)&lt;/EM&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;On further investigating, we found out for workflows for which we are not capturing history this error occurs as the global configured history level is audit,&amp;nbsp;&lt;SPAN&gt;HistoricProcessInstanceEntityManagerImpl passes entity as null and hence NullPointerException.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Any suggestion or workaround to solve this issue?&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 14 Aug 2018 14:51:03 GMT</pubDate>
    <dc:creator>sckempgowda</dc:creator>
    <dc:date>2018-08-14T14:51:03Z</dc:date>
    <item>
      <title>NullPointerException on TimerBoundaryEvent trigger</title>
      <link>https://connect.hyland.com/t5/alfresco-forum/nullpointerexception-on-timerboundaryevent-trigger/m-p/37881#M15988</link>
      <description>Hi,&amp;nbsp;We recently upgraded from Activiti 5.18 to 6.0.0.We had a&amp;nbsp;requirement&amp;nbsp;to capture Activiti history only for certain workflow types. As per the suggestion from Activiti team, we had overridden the&amp;nbsp;org.activiti.engine.impl.history.DefaultHistoryManager to provide overridden implementation only for</description>
      <pubDate>Tue, 14 Aug 2018 14:51:03 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-forum/nullpointerexception-on-timerboundaryevent-trigger/m-p/37881#M15988</guid>
      <dc:creator>sckempgowda</dc:creator>
      <dc:date>2018-08-14T14:51:03Z</dc:date>
    </item>
    <item>
      <title>Re: NullPointerException on TimerBoundaryEvent trigger</title>
      <link>https://connect.hyland.com/t5/alfresco-forum/nullpointerexception-on-timerboundaryevent-trigger/m-p/37882#M15989</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Can you have&amp;nbsp;the code as a maven project somewhere on Github.&amp;nbsp;It&amp;nbsp;will be helpful&amp;nbsp;if its possible to reproduce the issue you are facing.&amp;nbsp;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 06 Sep 2018 10:29:00 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-forum/nullpointerexception-on-timerboundaryevent-trigger/m-p/37882#M15989</guid>
      <dc:creator>bassam_al-saror</dc:creator>
      <dc:date>2018-09-06T10:29:00Z</dc:date>
    </item>
  </channel>
</rss>

