Approvals Macro from Comala Document Approval add-on is not showing any data on the Confluence page.

Platform Notice: Data Center Only - This article only applies to Atlassian products on the Data Center platform.

Note that this KB was created for the Data Center version of the product. Data Center KBs for non-Data-Center-specific features may also work for Server versions of the product, however they have not been tested. Support for Server* products ended on February 15th 2024. If you are running a Server product, you can visit the Atlassian Server end of support announcement to review your migration options.

*Except Fisheye and Crucible

Summary

Approvals Macro from Comala Document Approval add-on is not showing any data on the Confluence page.

Environment

Confluence 7.x.x

Comala Document Approval add-on

Diagnosis

Previewing a page with Comala Document Approval macro will show no data about approval of attachments.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 2021-03-14 00:13:47,428 ERROR [Indexer: 2] [comalatech.confluence.workflow.DefaultValueStore] setPageAttributes Error getting page workflow information from page: page: Page Name v.1 (75571207) com.comalatech.confluence.workflow.WorkflowUserException: Error in workflow markup:<br/><div class="error"><span class="error">Unknown macro: {workflow}</span> <div class="error"><span class="error">Unknown macro: {description}</span> <p> A Simple Approval Workflow, a page's state can be for 'Review', 'Approved' or 'Rejected'. Only 'Approved' pages are visible to Read-only users.</p> </div> <div class="error"><span class="error">Unknown macro: {state}</span> <div class="error"><span class="error">Unknown macro: {approval}</span> </div> </div> <div class="error"><span class="error">Unknown macro: {state}</span> <div class="error"><span class="error">Unknown macro: {approval}</span> </div> </div> <div class="error"><span class="error">Unknown macro: {state}</span> </div> <div class="error"><span class="error">Unknown macro: {read-ack}</span> </div></div> at com.comalatech.confluence.workflow.parser.WorkflowWikiParser.parseWorkflow(WorkflowWikiParser.java:41) at com.comalatech.confluence.workflow.parser.WorkflowWikiParser.parseWorkflow(WorkflowWikiParser.java:27) at com.comalatech.confluence.workflowcontainer.DefaultWorkflowContainerManager.renderWorkflow(DefaultWorkflowContainerManager.java:176) at com.comalatech.confluence.adhoc.DefaultAdhocWorkflowManager.getPageWorkflow(DefaultAdhocWorkflowManager.java:268) at com.comalatech.confluence.adhoc.DefaultAdhocWorkflowManager.getPageWorkflow(DefaultAdhocWorkflowManager.java:260) at com.comalatech.confluence.workflow.DefaultValueStore.setPageAttributes(DefaultValueStore.java:326) at com.comalatech.confluence.workflow.DefaultValueStore.<init>(DefaultValueStore.java:88) at com.comalatech.confluence.workflow.DefaultValueStoreManager.createValueStore(DefaultValueStoreManager.java:29) at com.comalatech.confluence.workflow.DefaultWorkflowAccessor.getWorkflows(DefaultWorkflowAccessor.java:199) at com.comalatech.confluence.workflow.DefaultWorkflowAccessor.getWorkflows(DefaultWorkflowAccessor.java:347) at com.comalatech.confluence.workflow.DefaultWorkflowAccessor.getPageWorkflows(DefaultWorkflowAccessor.java:334) at com.comalatech.confluence.workflow.extractors.ApprovalsExtractorImpl.extractFields(ApprovalsExtractorImpl.java:111) at com.atlassian.confluence.search.lucene.extractor.Extractor2ToExtractorAdapter.addFields(Extractor2ToExtractorAdapter.java:33) at com.atlassian.confluence.plugin.descriptor.ExtractorModuleDescriptor$BackwardsCompatibleExtractor.addFields(ExtractorModuleDescriptor.java:39) at com.atlassian.confluence.internal.index.lucene.LuceneContentExtractor.lambda$extract$0(LuceneContentExtractor.java:68) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source) at java.base/java.util.stream.ReferencePipeline$3$1.accept(Unknown Source) at java.base/java.util.stream.SortedOps$SizedRefSortingSink.end(Unknown Source) at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source) at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source) at java.base/java.util.stream.ReferencePipeline.forEach(Unknown Source) at com.atlassian.confluence.internal.index.lucene.LuceneContentExtractor.extract(LuceneContentExtractor.java:65) at com.atlassian.confluence.internal.index.v2.AtlassianContentDocumentBuilder.lambda$build$0(AtlassianContentDocumentBuilder.java:69) at java.base/java.util.ArrayList.forEach(Unknown Source) at com.atlassian.confluence.internal.index.v2.AtlassianContentDocumentBuilder.build(AtlassianContentDocumentBuilder.java:68) at com.atlassian.confluence.internal.index.v2.AtlassianContentDocumentBuilder.build(AtlassianContentDocumentBuilder.java:29) at com.atlassian.confluence.internal.index.lucene.LuceneDocumentBuilder.getDocument(LuceneDocumentBuilder.java:31) at com.atlassian.confluence.search.lucene.tasks.AddDocumentIndexTask.perform(AddDocumentIndexTask.java:47) at com.atlassian.confluence.internal.index.lucene.LuceneBatchIndexer.doIndex(LuceneBatchIndexer.java:126) at com.atlassian.confluence.internal.index.lucene.LuceneBatchIndexer.lambda$index$0(LuceneBatchIndexer.java:62) at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:140) at com.atlassian.confluence.internal.index.lucene.LuceneBatchIndexer.index(LuceneBatchIndexer.java:61) at com.atlassian.confluence.internal.index.ConcurrentBatchIndexer.lambda$null$1(ConcurrentBatchIndexer.java:119) at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) at com.atlassian.confluence.impl.tenant.ThreadLocalTenantGate.lambda$wrap$0(ThreadLocalTenantGate.java:25) at com.atlassian.confluence.impl.vcache.VCacheRequestContextManager.doInRequestContextInternal(VCacheRequestContextManager.java:84) at com.atlassian.confluence.impl.vcache.VCacheRequestContextManager.doInRequestContext(VCacheRequestContextManager.java:68) at com.atlassian.confluence.vcache.VCacheRequestContextOperations.lambda$withRequestContext$1(VCacheRequestContextOperations.java:59) at java.base/java.util.concurrent.FutureTask.run(Unknown Source) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.base/java.lang.Thread.run(Unknown Source) ...

Cause

Due to corrupt index data, the macro is unable to populate any data.

Solution

As per Comala documentation, the new Document Actions report uses Confluence JSON page properties to supply the data to display.  These values will normally be updated after each change in the workflow.

To ensure that the report shows all pending approvals and tasks, a Global Administrator will need to manually execute a long-running task by accessing the following URL:

1 https://<HOSTNAME>/admin/plugins/approvalsworkflow/workflowsPopulateJsonProperties.action

Updated on March 13, 2025

Still need help?

The Atlassian Community is here for you.