-
Bug
-
Resolution: Unresolved
-
Low
-
None
-
9.4.1, 9.2.4
-
None
-
1
-
Severity 3 - Minor
-
5
-
Issue Summary
After reinstalling a third-party plugin that includes blueprint templates, the NAME in the Blueprint metadata is set to NULL. The Blueprint metadata was correctly populated the first time the plugin was installed.
Steps to Reproduce
- Install a Confluence environment
- Click on the "..." button next to the "Create" button
- This simple action will populate the "AO_54C900_CONTENT_BLUEPRINT_AO" table in the Confluence DB
- Install a 3rd party plugin that includes custom blueprints.
- For example, Viewtracker - Analytics for Confluence or Mosaic plugin
- Again, click on the "..." button next to the "Create" button to repopulate the new Blueprints
- Confirm on the "AO_54C900_CONTENT_BLUEPRINT_AO" table that new templates are created for these apps:
SELECT * FROM "AO_54C900_CONTENT_BLUEPRINT_AO" WHERE "INDEX_KEY" LIKE '%viewtracker%' OR "INDEX_KEY" LIKE '%mosaic%';
- Uninstall the 3rd-party plug-ins
- Reinstall the 3rd-party plug-ins once more.
Expected Results
The content on the "AO_54C900_CONTENT_BLUEPRINT_AO" table is identical before and after reinstalling the 3rd party apps, and the NAME column is populated correctly.
Actual Results
The NAME column in the "AO_54C900_CONTENT_BLUEPRINT_AO" is set to NULL after reinstalling the 3rd-party plugin.
Besides, if you browse to General Configuration > Global Templates and Blueprints, there will be a blank row where you can enable/disable the template. In this row, you should see the name before.
The fact of having a NULL value for the NAME in the Blueprint templates may trigger the following error in your atlassian-confluence.log file:
2025-05-16 07:34:09,634 ERROR [http-nio-8090-exec-7 url: /confluence/rest/api/content/blueprint/instance/1158349155; user: admin] [atlassian.confluence.event.ConfluenceListenerInvoker] log java.lang.RuntimeException occurred dispatching com.atlassian.confluence.plugins.createcontent.events.BlueprintPageCreateEvent to [com.atlassian.confluence.internal.webhooks.ApplicationWebhookEventPublisher] -- url: /confluence/rest/api/content/blueprint/instance/1158349155 | userName: admin java.lang.RuntimeException: null value in entry: i18nNameKey=null. Listener: com.atlassian.confluence.internal.webhooks.ApplicationWebhookEventPublisher event: com.atlassian.confluence.plugins.createcontent.events.BlueprintPageCreateEvent at com.atlassian.event.internal.SingleParameterMethodListenerInvoker.invoke(SingleParameterMethodListenerInvoker.java:53) at com.atlassian.confluence.event.DelegatingListenerInvoker.invoke(DelegatingListenerInvoker.java:23) at com.atlassian.confluence.event.ConfluenceListenerInvoker.invoke(ConfluenceListenerInvoker.java:30) at com.atlassian.event.internal.ComparableListenerInvoker.invoke(ComparableListenerInvoker.java:48) at com.atlassian.event.internal.AsynchronousAbleEventDispatcher.lambda$static$0(AsynchronousAbleEventDispatcher.java:37) at com.atlassian.event.internal.AsynchronousAbleEventDispatcher.dispatch(AsynchronousAbleEventDispatcher.java:85) at com.atlassian.event.internal.EventPublisherImpl.publish(EventPublisherImpl.java:102) at com.atlassian.confluence.event.TimingEventPublisher.publish(TimingEventPublisher.java:75) ... ... Caused by: java.lang.NullPointerException: null value in entry: i18nNameKey=null at com.google.common.collect.CollectPreconditions.checkEntryNotNull(CollectPreconditions.java:33) at com.google.common.collect.ImmutableMapEntry.<init>(ImmutableMapEntry.java:54) at com.google.common.collect.ImmutableMap.entryOf(ImmutableMap.java:345) at com.google.common.collect.ImmutableMap$Builder.put(ImmutableMap.java:454) at com.atlassian.confluence.internal.webhooks.WebhookJsonEventFactory.contentBlueprintToMap(WebhookJsonEventFactory.java:251) at com.atlassian.confluence.internal.webhooks.WebhookJsonEventFactory.build(WebhookJsonEventFactory.java:86) at com.atlassian.confluence.internal.webhooks.ApplicationWebhookEventPublisher.onBlueprintPageCreated(ApplicationWebhookEventPublisher.java:154) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(Unknown Source) at java.base/java.lang.reflect.Method.invoke(Unknown Source) at com.atlassian.event.internal.SingleParameterMethodListenerInvoker.invoke(SingleParameterMethodListenerInvoker.java:42) ... 461 more
Workaround
At this point, the only way to resolve the situation is to update the AO_54C900_CONTENT_BLUEPRINT_AO table directly in your database. As per the examples above, you will need to restore the NAME column with the previous values. Other custom templates may require different names.
- Stop Confluence
- Execute the following two commands:
UPDATE "AO_54C900_CONTENT_BLUEPRINT_AO" SET "NAME" = 'viewtracker-space-analytics-report-blueprint' WHERE "INDEX_KEY" = 'viewtracker-space-analytics-report';
UPDATE "AO_54C900_CONTENT_BLUEPRINT_AO" SET "NAME" = 'cfm-blueprint' WHERE "INDEX_KEY" = 'mosaic-template';
- Start Confluence
To find other templates with missing NAME values, you can use the following SQL statement:
SELECT * FROM "AO_54C900_CONTENT_BLUEPRINT_AO" WHERE "NAME" IS NULL;
- relates to
-
CONFSERVER-42825 After updating blueprints, template listing still shows old templates if a template was previously modified
-
- Gathering Impact
-
- mentioned in
-
Page Loading...