Changes for page How to Customize XWiki Without Creating Upgrade Problems
Last modified by Agnease on 2026/05/26 11:00
Summary
-
Page properties (1 modified, 0 added, 0 removed)
Details
- Page properties
-
- Content
-
... ... @@ -109,6 +109,15 @@ 109 109 <a href="$xwiki.getURL('resources.xwiki-security-review')">what an XWiki security review should actually include</a> 110 110 for related checks around permissions, authentication, extensions, infrastructure and operational practices. 111 111 </p> 112 + 113 + <div class="resource-inline-cta"> 114 + <p> 115 + <strong>Unsure how maintainable your XWiki customizations are?</strong> 116 + A customization review can help identify hidden scripts, undocumented logic, 117 + upgrade risks and features that should be documented, cleaned up or packaged properly. 118 + </p> 119 + <a class="btn btn-secondary" href="$xwiki.getURL('contact.WebHome')">Request a customization review</a> 120 + </div> 112 112 113 113 <h2 id="safe-model">A safer model for XWiki custom work</h2> 114 114 ... ... @@ -216,40 +216,50 @@ 216 216 217 217 <h2 id="custom-development-faq">XWiki custom development FAQ</h2> 218 218 219 - <h3>Does custom development make XWiki harder to upgrade?</h3> 220 - <p> 221 - Not automatically. Custom development becomes harder to upgrade when it is undocumented, mixed with regular 222 - content, applied directly in production or missing from the upgrade validation plan. Well-organized custom work 223 - can remain maintainable across upgrades. 224 - </p> 228 + <details class="resource-faq-item" open> 229 + <summary>Does custom development make XWiki harder to upgrade?</summary> 230 + <p> 231 + Not automatically. Custom development becomes harder to upgrade when it is undocumented, mixed with regular 232 + content, applied directly in production or missing from the upgrade validation plan. Well-organized custom work 233 + can remain maintainable across upgrades. 234 + </p> 235 + </details> 225 225 226 - <h3>Where should XWiki custom code be stored?</h3> 227 - <p> 228 - Custom wiki pages, scripts, templates and configuration should usually be kept in dedicated technical spaces. 229 - Code and important assets should also be tracked in a source control system, such as Git, so changes are not 230 - stored only in the production wiki. 231 - </p> 237 + <details class="resource-faq-item"> 238 + <summary>Where should XWiki custom code be stored?</summary> 239 + <p> 240 + Custom wiki pages, scripts, templates and configuration should usually be kept in dedicated technical spaces. 241 + Code and important assets should also be tracked in a source control system, such as Git, so changes are not 242 + stored only in the production wiki. 243 + </p> 244 + </details> 232 232 233 - <h3>When should an XWiki customization become an extension?</h3> 234 - <p> 235 - Packaging a customization as an extension is useful when the feature becomes complex, reusable, business-critical 236 - or shared across multiple instances. Java components, event listeners, scheduled jobs and integrations often 237 - benefit from an extension-based approach. 238 - </p> 246 + <details class="resource-faq-item"> 247 + <summary>When should an XWiki customization become an extension?</summary> 248 + <p> 249 + Packaging a customization as an extension is useful when the feature becomes complex, reusable, business-critical 250 + or shared across multiple instances. Java components, event listeners, scheduled jobs and integrations often 251 + benefit from an extension-based approach. 252 + </p> 253 + </details> 239 239 240 - <h3>What should be tested after an XWiki upgrade?</h3> 241 - <p> 242 - Besides standard pages, the validation should include custom dashboards, templates, macros, workflows, 243 - permissions, notifications, PDF exports, scheduled jobs, integrations and any custom applications used by the 244 - organization. 245 - </p> 255 + <details class="resource-faq-item"> 256 + <summary>What should be tested after an XWiki upgrade?</summary> 257 + <p> 258 + Besides standard pages, the validation should include custom dashboards, templates, macros, workflows, 259 + permissions, notifications, PDF exports, scheduled jobs, integrations and any custom applications used by the 260 + organization. 261 + </p> 262 + </details> 246 246 247 - <h3>Why should configuration be kept outside custom code?</h3> 248 - <p> 249 - Values such as group names, target spaces, external URLs, email recipients and workflow settings can change over 250 - time. Keeping them in configuration pages or preference objects makes custom features easier to adapt without 251 - changing the implementation. 252 - </p> 264 + <details class="resource-faq-item"> 265 + <summary>Why should configuration be kept outside custom code?</summary> 266 + <p> 267 + Values such as group names, target spaces, external URLs, email recipients and workflow settings can change over 268 + time. Keeping them in configuration pages or preference objects makes custom features easier to adapt without 269 + changing the implementation. 270 + </p> 271 + </details> 253 253 254 254 <div class="resource-note"> 255 255 <p>