Changes for page xwiki-upgrades
Last modified by Alex Cotiugă on 2026/05/12 12:41
From version 1.3
edited by Alex Cotiugă
on 2026/05/01 12:16
on 2026/05/01 12:16
Change comment:
There is no comment for this version
To version 1.8
edited by Alex Cotiugă
on 2026/05/01 12:24
on 2026/05/01 12:24
Change comment:
There is no comment for this version
Summary
-
Page properties (1 modified, 0 added, 0 removed)
-
Objects (0 modified, 1 added, 0 removed)
Details
- Page properties
-
- Content
-
... ... @@ -1,76 +1,58 @@ 1 1 {{velocity}} 2 - #set ($discard = $xwiki.ssx.use('PublicWebSite.WebHome'))3 - {{html clean="false"}}2 +#set ($discard = $xwiki.ssx.use('PublicWebSite.WebHome')) 3 +{{html clean="false"}} 4 4 5 - ## HER O6 - <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 productionXWikiplatforms.</p>10 - 11 - < ulclass="benefits">12 - <li>LatestLTSversions</li>13 - <li>Securityfixes</li>14 - < li>Extension checks</li>15 - <li >Minimaldowntime</li>16 - <li> Rollbackplanning</li>17 - < /ul>18 - 19 - <divclass="hero-cta">20 - < a href="mailto:alex@agnease.com?subject=XWiki%20Upgrade%20Assessment">Request an upgrade assessment</a>5 + ## COMPACT SERVICE HEADER 6 + <section class="service-header" aria-labelledby="hero-title"> 7 + <div class="container service-header-grid"> 8 + <div class="service-header-main"> 9 + <p class="eyebrow">XWiki service</p> 10 + <h1 id="hero-title">XWiki Upgrades</h1> 11 + <p class="lead-left"> 12 + Safe, planned upgrades for production XWiki instances, with compatibility checks, 13 + rollback planning, and post-upgrade validation. 14 + </p> 15 + <ul class="inline-benefits"> 16 + <li>Latest LTS</li> 17 + <li>Security fixes</li> 18 + <li>Extension checks</li> 19 + <li>Minimal downtime</li> 20 + </ul> 21 21 </div> 22 - </div> 23 - </section> 24 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> 23 + <aside class="service-aside"> 24 + <h3>Need an upgrade assessment?</h3> 25 + <p> 26 + Send your current XWiki version and a short description of your setup. 27 + Agnease will recommend the target version, estimated effort, and key risks to review. 28 + </p> 29 + <a class="service-cta" href="mailto:alex@agnease.com?subject=XWiki%20Upgrade%20Assessment"> 30 + Request an assessment 31 + </a> 32 + </aside> 45 45 </div> 46 46 </section> 47 47 48 - ## WHYUPGRADE49 - #set ($ whyUpgradeData= [{50 - 'title': 'Secur ity fixes',36 + ## VALUE CARDS 37 + #set ($upgradeCards = [{ 38 + 'title': 'Stay secure', 51 51 'icon': 'shield', 52 - 'content': ' Olderversionsmay missimportant fixesthat wereintroduced inlater XWikireleases.'40 + 'content': 'Reduce exposure to known vulnerabilities fixed in newer XWiki versions.' 53 53 },{ 54 - 'title': ' Stability improvements',55 - 'icon': ' check-square-o',56 - 'content': ' Regularupgradesreduceaccumulatedbugsandkeeptheplatformeasiertomaintain.'42 + 'title': 'Upgrade safely', 43 + 'icon': 'refresh', 44 + 'content': 'Plan the upgrade with backups, validation, rollback options, and minimal downtime.' 57 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.' 46 + 'title': 'Avoid surprises', 47 + 'icon': 'puzzle-piece', 48 + 'content': 'Review extensions, custom code, authentication, PDF export, and infrastructure before production.' 65 65 }]) 66 66 67 - <section aria-labelledby="why- upgrade-title">51 + <section class="compact-section" aria-labelledby="why-title"> 68 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) 53 + <h2 id="why-title">Keep your XWiki platform current and reliable</h2> 54 + <div class="widgets compact-widgets"> 55 + #foreach ($entry in $upgradeCards) 74 74 <article class="widget"> 75 75 <div class="icon" aria-hidden="true"> 76 76 <i class="fa fa-$entry.icon"></i> ... ... @@ -83,316 +83,46 @@ 83 83 </div> 84 84 </section> 85 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"> 68 + ## TWO COLUMN SUMMARY 69 + <section class="services compact-section" aria-labelledby="summary-title"> 114 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> 71 + <h2 id="summary-title">Upgrade support for real XWiki environments</h2> 119 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> 73 + <div class="services-grid compact-grid"> 74 + <article class="service"> 75 + <div class="service-icon"> 76 + <i class="fa fa-exclamation-triangle" aria-hidden="true"></i> 316 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> 78 + <div class="service-body"> 79 + <h4>When to consider an upgrade</h4> 80 + <ul> 81 + <li>Your instance is not on the latest suitable LTS version</li> 82 + <li>Your current version is more than one year old</li> 83 + <li>You use custom extensions, scripts, or workflows</li> 84 + <li>You rely on LDAP, SSO, OIDC, SAML, or MFA</li> 85 + <li>You want to reduce security and maintenance risk</li> 86 + </ul> 327 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 332 </article> 333 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> 90 + <article class="service"> 91 + <div class="service-icon"> 92 + <i class="fa fa-check-square-o" aria-hidden="true"></i> 338 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> 94 + <div class="service-body"> 95 + <h4>What Agnease handles</h4> 96 + <ul> 97 + <li>Current version and environment review</li> 98 + <li>Recommended target version</li> 99 + <li>Extension and customization checks</li> 100 + <li>Backup, staging, and rollback planning</li> 101 + <li>Production upgrade and post-upgrade validation</li> 102 + </ul> 366 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 371 </article> 372 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 377 </div> 378 378 </section> 379 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 397 {{/html}} 398 398 {{/velocity}}
- XWiki.StyleSheetExtension[0]
-
- cache
-
... ... @@ -1,0 +1,1 @@ 1 +long - code
-
... ... @@ -1,0 +1,112 @@ 1 +/* ===== Service inner page header ===== */ 2 + 3 +.service-header { 4 + padding: 28px 0; 5 + border-top: none; 6 + background: 7 + radial-gradient(42rem 12rem at 50% -20%, #E7FFF8 0%, transparent 65%); 8 +} 9 + 10 +.service-header-grid { 11 + display: grid; 12 + grid-template-columns: minmax(0, 1.5fr) minmax(280px, 0.8fr); 13 + gap: 32px; 14 + align-items: center; 15 +} 16 + 17 +.service-header-main { 18 + h1 { 19 + margin: 0 0 8px; 20 + font-size: 34px; 21 + line-height: 1.15; 22 + color: @text; 23 + } 24 +} 25 + 26 +.eyebrow { 27 + margin: 0 0 6px; 28 + color: @brand; 29 + font-size: 13px; 30 + font-weight: 700; 31 + text-transform: uppercase; 32 + letter-spacing: .04em; 33 +} 34 + 35 +.lead-left { 36 + margin: 0 0 12px; 37 + color: @muted; 38 + font-size: 18px; 39 + line-height: 1.45; 40 + max-width: 720px; 41 +} 42 + 43 +.inline-benefits { 44 + display: flex; 45 + flex-wrap: wrap; 46 + gap: 8px; 47 + list-style: none; 48 + padding: 0; 49 + margin: 0; 50 + 51 + li { 52 + color: @muted; 53 + font-size: 13px; 54 + background: fade(@brand, 8%); 55 + border: 1px solid fade(@brand, 18%); 56 + border-radius: 999px; 57 + padding: 4px 9px; 58 + } 59 +} 60 + 61 +.service-aside { 62 + background: #fff; 63 + border: 1px solid @line; 64 + border-radius: @radius; 65 + box-shadow: @shadow-sm; 66 + padding: 18px; 67 + 68 + h3 { 69 + margin: 0 0 8px; 70 + color: @text; 71 + font-size: 18px; 72 + } 73 + 74 + p { 75 + margin: 0 0 12px; 76 + color: @muted; 77 + line-height: 1.45; 78 + font-size: 14px; 79 + } 80 +} 81 + 82 +.service-cta { 83 + display: inline-block; 84 + color: #fff; 85 + background: @brand; 86 + border-radius: 8px; 87 + padding: 8px 12px; 88 + font-weight: 700; 89 + text-decoration: none; 90 + 91 + &:hover, 92 + &:focus { 93 + color: #fff; 94 + background: @brand-strong; 95 + text-decoration: none; 96 + } 97 +} 98 + 99 +@media (max-width: 767px) { 100 + .service-header-grid { 101 + grid-template-columns: 1fr; 102 + gap: 18px; 103 + } 104 + 105 + .service-header-main h1 { 106 + font-size: 28px; 107 + } 108 + 109 + .lead-left { 110 + font-size: 16px; 111 + } 112 +} - use
-
... ... @@ -1,0 +1,1 @@ 1 +currentPage