-
Type:
Bug
-
Resolution: Unresolved
-
Priority:
High
-
Component/s: Ecosystem, Forge and Connect - Confluence Extension Point
-
4
-
Severity 3 - Minor
-
2
-
Warranty
Issue Summary
When migrating a Connect app to Forge and setting layout: inline in the Forge manifest, all existing pages created by the Connect version of the app break with a "broken macro" error. New pages created after the Forge migration render correctly — only pages with legacy Connect storage (ac:structured-macro) are affected.
The failure occurs entirely within Confluence's storage-to-view transformation layer, before the Forge app function is ever invoked. This is a Connect → Forge migration compatibility gap that blocks migration for any app that uses layout: inline.
Related:
- CONFCLOUD-75323 — related but distinct: covers Forge layout: inline failing in export/page templates/history for new Forge storage (ac:adf-node); this ticket covers the legacy Connect storage migration path (ac:structured-macro → inlineExtension)
- CONFCLOUD-83162 — partial fix shipped for inline bodied macros migrated from DC/legacy editor; the inline extension (non-bodied) migration path from Connect storage remains broken
Steps to Reproduce
- Install a Connect app that has a macro with outputType: block on a Confluence Cloud site
- Create one or more pages using that Connect macro — these pages will be stored in legacy ac:structured-macro format
- Migrate the app to Forge and set layout: inline in the manifest.yml, then deploy the new Forge version
- Open an existing page that was created in Step 2 (i.e. a page with legacy Connect macro storage)
- Result: The macro renders as a broken macro error instead of the expected inline content
- For comparison, create a new page with the same macro after the Forge migration — it renders correctly (stored in modern ADF format)
Expected Results
Existing pages created by the Connect version of an app should continue to render correctly after migrating the app to Forge with layout: inline. The legacy ac:structured-macro storage format should be transformed to inlineExtension during the storage-to-view pass, consistent with how layout: block macros are handled (which successfully transforms ac:structured-macro → bodiedExtension/blockExtension).
Actual Results
The page renders a "broken macro" error placeholder. The below exception is thrown in the confluence-app.log file:
Unhandled adf-attribute when trying to transform from storage to view format. Node is null
Workaround
Currently there is no known workaround for this behavior that is feasible at scale.
The following options exist but have significant limitations:
- Option 1: Keep layout: block in the Forge manifest — prevents breakage but loses the inline layout behaviour, which may break the existing user experience
- Option 2: Re-save all affected pages via the REST API to force re-serialisation into modern ADF format — not feasible for app vendors who do not have access to customer Confluence instances
A workaround will be added here when available.
- duplicates
-
CONFCLOUD-84324 Confluence Forge macro problems "The metadata-macro is not supported. Raise a ticket” and “Broken macro”
-
- Gathering Impact
-