Wiki source code of xwiki-upgrades
Version 1.2 by Alex Cotiugă on 2026/05/01 12:16
Show last authors
| author | version | line-number | content |
|---|---|---|---|
| 1 | {{velocity}} | ||
| 2 | #set ($discard = $xwiki.ssx.use('PublicWebSite.WebHome')) | ||
| 3 | {{html clean="false"}} | ||
| 4 | |||
| 5 | ## HERO | ||
| 6 | <section class="hero hero-centered" aria-labelledby="hero-title"> | ||
| 7 | <div class="container hero-inner"> | ||
| 8 | <h1 id="hero-title">XWiki Upgrades</h1> | ||
| 9 | <p class="lead">Safe, planned upgrades for production XWiki platforms.</p> | ||
| 10 | |||
| 11 | <ul class="benefits"> | ||
| 12 | <li>Latest LTS versions</li> | ||
| 13 | <li>Security fixes</li> | ||
| 14 | <li>Extension checks</li> | ||
| 15 | <li>Minimal downtime</li> | ||
| 16 | <li>Rollback planning</li> | ||
| 17 | </ul> | ||
| 18 | |||
| 19 | <div class="hero-cta"> | ||
| 20 | <a href="mailto:alex@agnease.com?subject=XWiki%20Upgrade%20Assessment">Request an upgrade assessment</a> | ||
| 21 | </div> | ||
| 22 | </div> | ||
| 23 | </section> | ||
| 24 | |||
| 25 | ## INTRO | ||
| 26 | <section aria-labelledby="intro-title"> | ||
| 27 | <div class="container"> | ||
| 28 | <h2 id="intro-title">Upgrade XWiki with confidence</h2> | ||
| 29 | <p class="lead"> | ||
| 30 | Agnease helps organizations upgrade XWiki instances with a focus on security, stability, | ||
| 31 | compatibility, and predictable execution. | ||
| 32 | </p> | ||
| 33 | |||
| 34 | <p> | ||
| 35 | Whether your instance is one version behind or several years outdated, an XWiki upgrade should be treated | ||
| 36 | as a controlled technical operation, not a simple version change. The upgrade may affect installed | ||
| 37 | extensions, custom developments, authentication, PDF export, database behavior, scripts, and the | ||
| 38 | application server environment. | ||
| 39 | </p> | ||
| 40 | |||
| 41 | <p> | ||
| 42 | The goal is to keep your platform secure, stable, maintainable, and ready for future improvements | ||
| 43 | while reducing the risk of unexpected downtime or failed production upgrades. | ||
| 44 | </p> | ||
| 45 | </div> | ||
| 46 | </section> | ||
| 47 | |||
| 48 | ## WHY UPGRADE | ||
| 49 | #set ($whyUpgradeData = [{ | ||
| 50 | 'title': 'Security fixes', | ||
| 51 | 'icon': 'shield', | ||
| 52 | 'content': 'Older versions may miss important fixes that were introduced in later XWiki releases.' | ||
| 53 | },{ | ||
| 54 | 'title': 'Stability improvements', | ||
| 55 | 'icon': 'check-square-o', | ||
| 56 | 'content': 'Regular upgrades reduce accumulated bugs and keep the platform easier to maintain.' | ||
| 57 | },{ | ||
| 58 | 'title': 'Compatibility', | ||
| 59 | 'icon': 'plug', | ||
| 60 | 'content': 'Modern integrations, authentication systems, Java versions, databases, and application servers require careful compatibility planning.' | ||
| 61 | },{ | ||
| 62 | 'title': 'Lower future risk', | ||
| 63 | 'icon': 'line-chart', | ||
| 64 | 'content': 'Frequent smaller upgrades are usually safer and more predictable than large delayed migrations.' | ||
| 65 | }]) | ||
| 66 | |||
| 67 | <section aria-labelledby="why-upgrade-title"> | ||
| 68 | <div class="container"> | ||
| 69 | <h2 id="why-upgrade-title">Why XWiki upgrades matter</h2> | ||
| 70 | <p class="lead">Regular upgrades help keep your XWiki platform secure, reliable, and easier to evolve.</p> | ||
| 71 | |||
| 72 | <div class="widgets"> | ||
| 73 | #foreach ($entry in $whyUpgradeData) | ||
| 74 | <article class="widget"> | ||
| 75 | <div class="icon" aria-hidden="true"> | ||
| 76 | <i class="fa fa-$entry.icon"></i> | ||
| 77 | <h4>$entry.title</h4> | ||
| 78 | </div> | ||
| 79 | <p>$entry.content</p> | ||
| 80 | </article> | ||
| 81 | #end | ||
| 82 | </div> | ||
| 83 | </div> | ||
| 84 | </section> | ||
| 85 | |||
| 86 | ## WHEN TO UPGRADE | ||
| 87 | #set ($whenToUpgradeData = [{ | ||
| 88 | 'title': 'Your XWiki version is old', | ||
| 89 | 'icon': 'clock-o', | ||
| 90 | 'content': 'If your current version is more than one year old, the upgrade gap may already be significant.' | ||
| 91 | },{ | ||
| 92 | 'title': 'You are not on the latest LTS', | ||
| 93 | 'icon': 'refresh', | ||
| 94 | 'content': 'Production instances should normally stay close to the latest suitable Long Term Support version.' | ||
| 95 | },{ | ||
| 96 | 'title': 'You use custom extensions', | ||
| 97 | 'icon': 'cogs', | ||
| 98 | 'content': 'Custom applications, scripts, macros, UI extensions, or Java components should be reviewed before upgrading.' | ||
| 99 | },{ | ||
| 100 | 'title': 'Authentication is critical', | ||
| 101 | 'icon': 'key', | ||
| 102 | 'content': 'LDAP, Active Directory, OpenID Connect, SAML, or MFA integrations need careful validation during upgrades.' | ||
| 103 | },{ | ||
| 104 | 'title': 'Your wiki supports business processes', | ||
| 105 | 'icon': 'sitemap', | ||
| 106 | 'content': 'Instances used for intranets, procedures, documentation, approvals, or workflows deserve controlled upgrade planning.' | ||
| 107 | },{ | ||
| 108 | 'title': 'You are preparing infrastructure changes', | ||
| 109 | 'icon': 'server', | ||
| 110 | 'content': 'Java, Tomcat, Docker, database, or operating system changes can make upgrade planning more important.' | ||
| 111 | }]) | ||
| 112 | |||
| 113 | <section class="services" aria-labelledby="when-title"> | ||
| 114 | <div class="container"> | ||
| 115 | <h2 id="when-title">When should you consider an upgrade?</h2> | ||
| 116 | <p class="lead"> | ||
| 117 | An upgrade is recommended when your XWiki instance is becoming outdated, exposed, or harder to maintain. | ||
| 118 | </p> | ||
| 119 | |||
| 120 | <div class="services-grid"> | ||
| 121 | #foreach ($entry in $whenToUpgradeData) | ||
| 122 | <article class="service"> | ||
| 123 | <div class="service-icon"> | ||
| 124 | <i class="fa fa-$entry.icon" aria-hidden="true"></i> | ||
| 125 | </div> | ||
| 126 | <div class="service-body"> | ||
| 127 | <h4>$entry.title</h4> | ||
| 128 | <p>$entry.content</p> | ||
| 129 | </div> | ||
| 130 | </article> | ||
| 131 | #end | ||
| 132 | </div> | ||
| 133 | </div> | ||
| 134 | </section> | ||
| 135 | |||
| 136 | ## WHAT AGNEASE HANDLES | ||
| 137 | #set ($upgradeScopeData = [{ | ||
| 138 | 'title': 'Assessment & planning', | ||
| 139 | 'icon': 'search', | ||
| 140 | 'content': 'Review the current version, environment, extensions, customizations, and target upgrade path.', | ||
| 141 | 'items': [ | ||
| 142 | 'Current version and environment review', | ||
| 143 | 'Recommended target version', | ||
| 144 | 'Release notes and compatibility analysis' | ||
| 145 | ] | ||
| 146 | },{ | ||
| 147 | 'title': 'Extension & customization review', | ||
| 148 | 'icon': 'puzzle-piece', | ||
| 149 | 'content': 'Identify risks related to installed extensions, custom code, scripts, templates, and integrations.', | ||
| 150 | 'items': [ | ||
| 151 | 'Installed extension review', | ||
| 152 | 'Custom code impact analysis', | ||
| 153 | 'Authentication and integration checks' | ||
| 154 | ] | ||
| 155 | },{ | ||
| 156 | 'title': 'Staging upgrade', | ||
| 157 | 'icon': 'flask', | ||
| 158 | 'content': 'Test the upgrade before production when a staging environment is available.', | ||
| 159 | 'items': [ | ||
| 160 | 'Backup and restore validation', | ||
| 161 | 'Upgrade execution in test environment', | ||
| 162 | 'Troubleshooting and issue fixing' | ||
| 163 | ] | ||
| 164 | },{ | ||
| 165 | 'title': 'Production rollout', | ||
| 166 | 'icon': 'rocket', | ||
| 167 | 'content': 'Execute or guide the production upgrade with a clear plan and validation steps.', | ||
| 168 | 'items': [ | ||
| 169 | 'Downtime and rollback planning', | ||
| 170 | 'Production upgrade execution', | ||
| 171 | 'Post-upgrade verification' | ||
| 172 | ] | ||
| 173 | }]) | ||
| 174 | |||
| 175 | <section class="services" aria-labelledby="scope-title"> | ||
| 176 | <div class="container"> | ||
| 177 | <h2 id="scope-title">What Agnease handles</h2> | ||
| 178 | <p class="lead"> | ||
| 179 | Upgrade support can cover the full process, from assessment to production rollout. | ||
| 180 | </p> | ||
| 181 | |||
| 182 | <div class="services-grid"> | ||
| 183 | #foreach ($entry in $upgradeScopeData) | ||
| 184 | <article class="service"> | ||
| 185 | <div class="service-icon"> | ||
| 186 | <i class="fa fa-$entry.icon" aria-hidden="true"></i> | ||
| 187 | </div> | ||
| 188 | <div class="service-body"> | ||
| 189 | <h4>$entry.title</h4> | ||
| 190 | <p>$entry.content</p> | ||
| 191 | <ul> | ||
| 192 | #foreach ($item in $entry.items) | ||
| 193 | <li>$item</li> | ||
| 194 | #end | ||
| 195 | </ul> | ||
| 196 | </div> | ||
| 197 | </article> | ||
| 198 | #end | ||
| 199 | </div> | ||
| 200 | </div> | ||
| 201 | </section> | ||
| 202 | |||
| 203 | ## PROCESS | ||
| 204 | #set ($processData = [{ | ||
| 205 | 'title': '1. Initial review', | ||
| 206 | 'icon': 'info-circle', | ||
| 207 | 'content': 'We review your current XWiki version, hosting environment, installed extensions, customizations, authentication setup, and known issues.' | ||
| 208 | },{ | ||
| 209 | 'title': '2. Upgrade path', | ||
| 210 | 'icon': 'map-signs', | ||
| 211 | 'content': 'We identify the recommended target version and whether the upgrade should be direct, staged, or combined with infrastructure changes.' | ||
| 212 | },{ | ||
| 213 | 'title': '3. Compatibility checks', | ||
| 214 | 'icon': 'check', | ||
| 215 | 'content': 'We review release notes, extensions, custom developments, authentication integrations, PDF export, and other sensitive areas.' | ||
| 216 | },{ | ||
| 217 | 'title': '4. Backup and rollback plan', | ||
| 218 | 'icon': 'database', | ||
| 219 | 'content': 'Before production work, the database, permanent directory, application files, and configuration backup strategy should be clear.' | ||
| 220 | },{ | ||
| 221 | 'title': '5. Staging validation', | ||
| 222 | 'icon': 'desktop', | ||
| 223 | 'content': 'Whenever possible, the upgrade is tested in a staging environment to validate key pages, extensions, permissions, and workflows.' | ||
| 224 | },{ | ||
| 225 | 'title': '6. Production upgrade', | ||
| 226 | 'icon': 'upload', | ||
| 227 | 'content': 'The production upgrade is executed according to the agreed plan, with attention to downtime, rollback options, and validation.' | ||
| 228 | }]) | ||
| 229 | |||
| 230 | <section class="services" aria-labelledby="process-title"> | ||
| 231 | <div class="container"> | ||
| 232 | <h2 id="process-title">A structured upgrade process</h2> | ||
| 233 | <p class="lead"> | ||
| 234 | The process is designed to reduce surprises and keep the platform operational. | ||
| 235 | </p> | ||
| 236 | |||
| 237 | <div class="services-grid"> | ||
| 238 | #foreach ($entry in $processData) | ||
| 239 | <article class="service"> | ||
| 240 | <div class="service-icon"> | ||
| 241 | <i class="fa fa-$entry.icon" aria-hidden="true"></i> | ||
| 242 | </div> | ||
| 243 | <div class="service-body"> | ||
| 244 | <h4>$entry.title</h4> | ||
| 245 | <p>$entry.content</p> | ||
| 246 | </div> | ||
| 247 | </article> | ||
| 248 | #end | ||
| 249 | </div> | ||
| 250 | </div> | ||
| 251 | </section> | ||
| 252 | |||
| 253 | ## COMMON SCENARIOS | ||
| 254 | #set ($scenariosData = [{ | ||
| 255 | 'title': 'Regular LTS upgrade', | ||
| 256 | 'icon': 'calendar-check-o', | ||
| 257 | 'content': 'For organizations that upgrade regularly and want to stay aligned with the latest stable XWiki release line.' | ||
| 258 | },{ | ||
| 259 | 'title': 'Delayed upgrade', | ||
| 260 | 'icon': 'exclamation-triangle', | ||
| 261 | 'content': 'For instances that have not been upgraded for one or more years and need a more careful compatibility review.' | ||
| 262 | },{ | ||
| 263 | 'title': 'Major platform transition', | ||
| 264 | 'icon': 'random', | ||
| 265 | 'content': 'For upgrades that also involve Java, Tomcat, Docker, database, or operating system changes.' | ||
| 266 | },{ | ||
| 267 | 'title': 'Custom application upgrade', | ||
| 268 | 'icon': 'code', | ||
| 269 | 'content': 'For XWiki instances with custom workflows, scripts, macros, PDF templates, or Java extensions.' | ||
| 270 | },{ | ||
| 271 | 'title': 'Authentication-sensitive upgrade', | ||
| 272 | 'icon': 'lock', | ||
| 273 | 'content': 'For platforms using LDAP, Active Directory, OpenID Connect, SAML, MFA, or other authentication integrations.' | ||
| 274 | },{ | ||
| 275 | 'title': 'Failed upgrade recovery', | ||
| 276 | 'icon': 'ambulance', | ||
| 277 | 'content': 'For organizations that already attempted an upgrade and encountered startup errors, broken extensions, or rendering issues.' | ||
| 278 | }]) | ||
| 279 | |||
| 280 | <section class="services" aria-labelledby="scenarios-title"> | ||
| 281 | <div class="container"> | ||
| 282 | <h2 id="scenarios-title">Common upgrade scenarios</h2> | ||
| 283 | <p class="lead"> | ||
| 284 | Agnease can help with both routine upgrades and complex migration situations. | ||
| 285 | </p> | ||
| 286 | |||
| 287 | <div class="services-grid"> | ||
| 288 | #foreach ($entry in $scenariosData) | ||
| 289 | <article class="service"> | ||
| 290 | <div class="service-icon"> | ||
| 291 | <i class="fa fa-$entry.icon" aria-hidden="true"></i> | ||
| 292 | </div> | ||
| 293 | <div class="service-body"> | ||
| 294 | <h4>$entry.title</h4> | ||
| 295 | <p>$entry.content</p> | ||
| 296 | </div> | ||
| 297 | </article> | ||
| 298 | #end | ||
| 299 | </div> | ||
| 300 | </div> | ||
| 301 | </section> | ||
| 302 | |||
| 303 | ## PLATFORM NOTE | ||
| 304 | <section aria-labelledby="platform-title"> | ||
| 305 | <div class="container"> | ||
| 306 | <h2 id="platform-title">Major version upgrades require planning</h2> | ||
| 307 | <p class="lead"> | ||
| 308 | Some XWiki upgrades also require infrastructure-level preparation. | ||
| 309 | </p> | ||
| 310 | |||
| 311 | <div class="widgets"> | ||
| 312 | <article class="widget"> | ||
| 313 | <div class="icon" aria-hidden="true"> | ||
| 314 | <i class="fa fa-server"></i> | ||
| 315 | <h4>Application server compatibility</h4> | ||
| 316 | </div> | ||
| 317 | <p> | ||
| 318 | Major XWiki versions may introduce changes that affect Java, Tomcat, Docker images, | ||
| 319 | database drivers, or deployment configuration. These changes should be reviewed before production rollout. | ||
| 320 | </p> | ||
| 321 | </article> | ||
| 322 | |||
| 323 | <article class="widget"> | ||
| 324 | <div class="icon" aria-hidden="true"> | ||
| 325 | <i class="fa fa-plug"></i> | ||
| 326 | <h4>Extension compatibility</h4> | ||
| 327 | </div> | ||
| 328 | <p> | ||
| 329 | Installed extensions and custom applications should be checked against the target version, | ||
| 330 | especially when the instance contains business-specific workflows or integrations. | ||
| 331 | </p> | ||
| 332 | </article> | ||
| 333 | |||
| 334 | <article class="widget"> | ||
| 335 | <div class="icon" aria-hidden="true"> | ||
| 336 | <i class="fa fa-shield"></i> | ||
| 337 | <h4>Security and stability</h4> | ||
| 338 | </div> | ||
| 339 | <p> | ||
| 340 | Staying close to the recommended LTS version helps reduce exposure to known issues and keeps | ||
| 341 | the platform easier to maintain over time. | ||
| 342 | </p> | ||
| 343 | </article> | ||
| 344 | </div> | ||
| 345 | </div> | ||
| 346 | </section> | ||
| 347 | |||
| 348 | ## ASSESSMENT CTA | ||
| 349 | <section class="cta-section" aria-labelledby="assessment-title"> | ||
| 350 | <div class="container"> | ||
| 351 | <h2 id="assessment-title">Request an XWiki upgrade assessment</h2> | ||
| 352 | <p class="lead"> | ||
| 353 | Not sure how far your instance is from the recommended version? | ||
| 354 | </p> | ||
| 355 | |||
| 356 | <p class="text-center"> | ||
| 357 | Send your current XWiki version and a short description of your setup. | ||
| 358 | Agnease will review the situation and provide a practical upgrade recommendation. | ||
| 359 | </p> | ||
| 360 | |||
| 361 | <div class="widgets"> | ||
| 362 | <article class="widget"> | ||
| 363 | <div class="icon" aria-hidden="true"> | ||
| 364 | <i class="fa fa-list"></i> | ||
| 365 | <h4>The assessment can include</h4> | ||
| 366 | </div> | ||
| 367 | <p> | ||
| 368 | Recommended target version, estimated upgrade effort, security and stability reasons to upgrade, | ||
| 369 | infrastructure considerations, extension risks, customization risks, and suggested next steps. | ||
| 370 | </p> | ||
| 371 | </article> | ||
| 372 | </div> | ||
| 373 | |||
| 374 | <p class="text-center contact-inline"> | ||
| 375 | <a href="mailto:alex@agnease.com?subject=XWiki%20Upgrade%20Assessment">Request an upgrade assessment</a> | ||
| 376 | </p> | ||
| 377 | </div> | ||
| 378 | </section> | ||
| 379 | |||
| 380 | ## RELATED SERVICES | ||
| 381 | <section aria-labelledby="related-title"> | ||
| 382 | <div class="container"> | ||
| 383 | <h2 id="related-title">Related Agnease services</h2> | ||
| 384 | <p class="lead"> | ||
| 385 | XWiki upgrades are often connected to maintenance, security, development, and integration work. | ||
| 386 | </p> | ||
| 387 | |||
| 388 | <ul class="benefits"> | ||
| 389 | <li>Maintenance & support</li> | ||
| 390 | <li>Security review</li> | ||
| 391 | <li>Custom development</li> | ||
| 392 | <li>Integrations</li> | ||
| 393 | <li>Migrations</li> | ||
| 394 | </ul> | ||
| 395 | </div> | ||
| 396 | </section> | ||
| 397 | {{/html}} | ||
| 398 | {{/velocity}} |