Uploaded image for project: 'Confluence Data Center'
  1. Confluence Data Center
  2. CONFSERVER-99923

After reinstalling a 3rd party plugin which includes blueprint templates, the NAME in the Blueprint metadata is set to NULL

XMLWordPrintable

      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

      1. Install a Confluence environment
      2. 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
      3. Install a 3rd party plugin that includes custom blueprints.
      4. Again, click on the "..." button next to the "Create" button to repopulate the new Blueprints
      5. 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%'; 
      6. Uninstall the 3rd-party plug-ins
      7. 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.  

      1. Stop Confluence
      2. 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';
        
      3. 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;
      

              Unassigned Unassigned
              d8a006ac9dc7 Iker Alonso (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

                Created:
                Updated: