Changes for page How to Customize XWiki Without Creating Upgrade Problems
Last modified by Agnease on 2026/05/26 11:00
Summary
-
Page properties (2 modified, 0 added, 0 removed)
-
Objects (1 modified, 0 added, 0 removed)
Details
- Page properties
-
- Title
-
... ... @@ -1,1 +1,1 @@ 1 - Howto Customize XWikiWithoutCreating UpgradeProblems1 +xwiki-custom-development - Content
-
... ... @@ -32,7 +32,6 @@ 32 32 <li><a href="#upgrade-validation">Upgrade validation</a></li> 33 33 <li><a href="#practical-checklist">Checklist</a></li> 34 34 <li><a href="#strategic-advantage">Strategic advantage</a></li> 35 - <li><a href="#custom-development-faq">FAQ</a></li> 36 36 </ul> 37 37 </aside> 38 38 ... ... @@ -53,20 +53,6 @@ 53 53 54 54 <div class="resource-note"> 55 55 <p> 56 - <strong>In practice:</strong> XWiki custom development should be separated from standard platform pages, 57 - documented, kept under source control, tested on staging and reviewed during upgrades. This makes custom 58 - features easier to maintain instead of turning them into hidden dependencies. 59 - </p> 60 - </div> 61 - 62 - <p> 63 - XWiki custom development is the process of adapting the platform with custom pages, classes, objects, sheets, 64 - templates, scripts, macros, UI extensions, Java components or integrations. The goal is to support real 65 - business processes while keeping the instance understandable, maintainable and upgrade-aware. 66 - </p> 67 - 68 - <div class="resource-note"> 69 - <p> 70 70 <strong>The main point:</strong> custom code is not the problem. Uncontrolled custom code is. XWiki can be 71 71 customized safely when changes are separated from standard pages, tracked, documented and tested. 72 72 </p> ... ... @@ -104,12 +104,6 @@ 104 104 path. 105 105 </p> 106 106 107 - <p> 108 - Customizations should also be reviewed as part of the wider platform risk model. See 109 - <a href="$xwiki.getURL('resources.xwiki-security-review')">what an XWiki security review should actually include</a> 110 - for related checks around permissions, authentication, extensions, infrastructure and operational practices. 111 - </p> 112 - 113 113 <h2 id="safe-model">A safer model for XWiki custom work</h2> 114 114 115 115 <h3>1. Keep custom code separate from standard XWiki pages</h3> ... ... @@ -127,11 +127,11 @@ 127 127 into a maintainable part of the platform. 128 128 </p> 129 129 130 - <h3>3. Keepcustom codeundersourcecontrol</h3>109 + <h3>3. Track important changes in a version control system</h3> 131 131 <p> 132 - Custom development should not exist only inside the production wiki. Java code, scripts, XAR packages,133 - deployment files and templates should be stored in a so urcecontrol system, such as Git. This givesthe team a134 - history of what changed, when it changed and why. 111 + Serious custom development should not exist only inside the production wiki. Java code, scripts, XAR packages, 112 + deployment files and important templates should be stored in a version control system, such as Git. This gives 113 + the team a history of what changed, when it changed and why. 135 135 </p> 136 136 137 137 <h3>4. Choose the right implementation level</h3> ... ... @@ -163,11 +163,6 @@ 163 163 touched. 164 164 </p> 165 165 166 - <p> 167 - For a broader upgrade preparation model, see 168 - <a href="$xwiki.getURL('resources.why-upgrade-xwiki')">why regular XWiki upgrades matter</a>. 169 - </p> 170 - 171 171 <div class="resource-note"> 172 172 <p> 173 173 <strong>A practical rule:</strong> production can receive urgent fixes when necessary, but it should not become ... ... @@ -176,26 +176,12 @@ 176 176 </p> 177 177 </div> 178 178 179 - <div class="resource-inline-cta"> 180 - <p> 181 - <strong>Not sure how risky your current XWiki version is?</strong> 182 - A short technical review can clarify the upgrade path, extension compatibility, 183 - custom code risks and validation needs before production is touched. 184 - </p> 185 - <a class="btn btn-secondary" href="$xwiki.getURL('contact.WebHome')">Request a quick review</a> 186 - </div> 153 + <h2 id="practical-checklist">A compact checklist</h2> 187 187 188 - <h2 id="practical-checklist">XWiki custom development checklist</h2> 189 - 190 - <p> 191 - A maintainable XWiki customization should be easy to locate, explain, test and update. The following checklist 192 - can be used as a starting point when reviewing existing custom work or planning a new feature. 193 - </p> 194 - 195 195 <ul class="resource-checklist"> 196 196 <li>Separate custom pages, scripts and configuration from standard XWiki content.</li> 197 197 <li>Document the business purpose, technical location and validation steps.</li> 198 - <li> Keepcustomcode and important assetsunder source control, for example in Git.</li>158 + <li>Use a version control system, such as Git, for code and important assets.</li> 199 199 <li>Test custom features on staging before production upgrades.</li> 200 200 <li>Review old customizations and remove what is no longer used.</li> 201 201 </ul> ... ... @@ -214,52 +214,6 @@ 214 214 flexible without becoming fragile. 215 215 </p> 216 216 217 - <h2 id="custom-development-faq">XWiki custom development FAQ</h2> 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> 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> 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> 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> 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> 253 - 254 - <div class="resource-note"> 255 - <p> 256 - Related resources: 257 - <a href="$xwiki.getURL('resources.xwiki-security-review')">what an XWiki security review should actually include</a> 258 - and 259 - <a href="$xwiki.getURL('resources.why-upgrade-xwiki')">why regular XWiki upgrades matter</a> 260 - </p> 261 - </div> 262 - 263 263 <div class="resource-cta"> 264 264 <h3>Need help reviewing XWiki customizations?</h3> 265 265 <p> ... ... @@ -275,54 +275,5 @@ 275 275 </div> 276 276 </section> 277 277 278 - <script type="application/ld+json"> 279 - { 280 - "@context": "https://schema.org", 281 - "@type": "FAQPage", 282 - "mainEntity": [ 283 - { 284 - "@type": "Question", 285 - "name": "Does custom development make XWiki harder to upgrade?", 286 - "acceptedAnswer": { 287 - "@type": "Answer", 288 - "text": "Not automatically. Custom development becomes harder to upgrade when it is undocumented, mixed with regular content, applied directly in production or missing from the upgrade validation plan. Well-organized custom work can remain maintainable across upgrades." 289 - } 290 - }, 291 - { 292 - "@type": "Question", 293 - "name": "Where should XWiki custom code be stored?", 294 - "acceptedAnswer": { 295 - "@type": "Answer", 296 - "text": "Custom wiki pages, scripts, templates and configuration should usually be kept in dedicated technical spaces. Code and important assets should also be tracked in a source control system, such as Git, so changes are not stored only in the production wiki." 297 - } 298 - }, 299 - { 300 - "@type": "Question", 301 - "name": "When should an XWiki customization become an extension?", 302 - "acceptedAnswer": { 303 - "@type": "Answer", 304 - "text": "Packaging a customization as an extension is useful when the feature becomes complex, reusable, business-critical or shared across multiple instances. Java components, event listeners, scheduled jobs and integrations often benefit from an extension-based approach." 305 - } 306 - }, 307 - { 308 - "@type": "Question", 309 - "name": "What should be tested after an XWiki upgrade?", 310 - "acceptedAnswer": { 311 - "@type": "Answer", 312 - "text": "Besides standard pages, the validation should include custom dashboards, templates, macros, workflows, permissions, notifications, PDF exports, scheduled jobs, integrations and any custom applications used by the organization." 313 - } 314 - }, 315 - { 316 - "@type": "Question", 317 - "name": "Why should configuration be kept outside custom code?", 318 - "acceptedAnswer": { 319 - "@type": "Answer", 320 - "text": "Values such as group names, target spaces, external URLs, email recipients and workflow settings can change over time. Keeping them in configuration pages or preference objects makes custom features easier to adapt without changing the implementation." 321 - } 322 - } 323 - ] 324 - } 325 - </script> 326 - 327 327 {{/html}} 328 328 {{/velocity}}
- Agnease.Code.SEODetailsClass[0]
-
- metaDescription
-
... ... @@ -1,1 +1,1 @@ 1 - Learn howtoorganizeXWikicustomdevelopment,scripts,extensionsand templatessoyourplatformstayseasier tomaintain,documentandupgrade.1 +Custom XWiki development services for applications, workflows, dashboards, macros, automation, APIs, integrations and maintainable platform extensions. - metaTitle
-
... ... @@ -1,1 +1,1 @@ 1 - HowtoCustomizeXWiki WithoutCreatingUpgrade Problems | Agnease1 +XWiki Custom Development and Integrations | Agnease