Changes for page XWiki Upgrade Services
Last modified by Agnease on 2026/05/25 16:11
Summary
-
Page properties (2 modified, 0 added, 0 removed)
-
Objects (0 modified, 1 added, 1 removed)
Details
- Page properties
-
- Title
-
... ... @@ -1,1 +1,1 @@ 1 - XWikiUpgradeServices1 +xwiki-upgrades - Content
-
... ... @@ -1,202 +1,58 @@ 1 1 {{velocity}} 2 2 #set ($discard = $xwiki.ssx.use('PublicWebSite.WebHome')) 3 3 {{html clean="false"}} 4 - ## PAGE HEADER 5 - <section class="hero hero-centered" aria-labelledby="hero-title"> 6 - <div class="container hero-inner"> 7 - <div class="hero-kicker"> 8 - <i class="fa fa-refresh" aria-hidden="true"></i> 9 - XWiki upgrade services 4 + 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> 10 10 </div> 11 - <h1 id="hero-title">Safe XWiki LTS upgrades for production environments</h1> 12 - <p class="lead"> 13 - Upgrade XWiki safely with a clear plan, compatibility checks and reduced production risk, 14 - even for instances with custom extensions, integrations and workflows. 15 - </p> 16 - <div class="hero-actions"> 17 - <a class="btn btn-primary" href="$xwiki.getURL('contact.WebHome')">Request an upgrade review</a> 18 - <a class="btn btn-secondary" href="#upgrade-process">See the upgrade approach</a> 19 - </div> 22 + 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> 20 20 </div> 21 21 </section> 22 - ## WHY UPGRADES MATTER 23 - #set ($upgradeReasonItems = [{ 24 - 'title': 'Reduce security exposure', 35 + 36 + ## VALUE CARDS 37 + #set ($upgradeCards = [{ 38 + 'title': 'Stay secure', 25 25 'icon': 'shield', 26 - 'content': 'Staying close to supported XWiki versions helps reduce exposure to known vulnerabilities and missing fixes.', 27 - 'items': [ 28 - 'Review current version exposure', 29 - 'Plan upgrade to a supported version', 30 - 'Validate security-sensitive features' 31 - ] 40 + 'content': 'Reduce exposure to known vulnerabilities fixed in newer XWiki versions.' 32 32 },{ 33 - 'title': 'Preserve compatibility', 34 - 'icon': 'cogs', 35 - 'content': 'Extensions, custom applications, authentication systems and infrastructure components need to remain compatible.', 36 - 'items': [ 37 - 'Check installed extensions', 38 - 'Review custom code and scripts', 39 - 'Validate integrations after upgrade' 40 - ] 42 + 'title': 'Upgrade safely', 43 + 'icon': 'refresh', 44 + 'content': 'Plan the upgrade with backups, validation, rollback options, and minimal downtime.' 41 41 },{ 42 - 'title': 'Improve maintainability', 43 - 'icon': 'line-chart', 44 - 'content': 'Smaller, regular upgrades are usually easier to control than large jumps after years of accumulated changes.', 45 - 'items': [ 46 - 'Avoid long upgrade gaps', 47 - 'Document the current platform state', 48 - 'Prepare future upgrade cycles' 49 - ] 50 - }]) 51 - <section aria-labelledby="why-upgrade-title"> 52 - <div class="container"> 53 - <h2 id="why-upgrade-title">Why regular XWiki upgrades matter</h2> 54 - <p class="section-intro"> 55 - An outdated XWiki instance can become harder to maintain over time. Security fixes, browser compatibility, 56 - extension updates, platform changes and infrastructure requirements continue to evolve, while older versions 57 - become more difficult and risky to upgrade. 58 - </p> 59 - <div class="pathways"> 60 - #foreach ($entry in $upgradeReasonItems) 61 - <article class="pathway-card"> 62 - <div class="card-heading"> 63 - <div class="pathway-icon"> 64 - <i class="fa fa-$entry.icon" aria-hidden="true"></i> 65 - </div> 66 - <h3>$entry.title</h3> 67 - </div> 68 - 69 - <p>$entry.content</p> 70 - 71 - <ul> 72 - #foreach ($item in $entry.items) 73 - <li>$item</li> 74 - #end 75 - </ul> 76 - </article> 77 - #end 78 - </div> 79 - </div> 80 - </section> 81 - ## COMMON SITUATIONS 82 - #set ($upgradeSituationItems = [{ 83 - 'title': 'Old XWiki versions', 84 - 'icon': 'clock-o', 85 - 'content': 'Instances that have not been upgraded for several months or years and require a careful upgrade path.' 86 - },{ 87 - 'title': 'Custom extensions and scripts', 46 + 'title': 'Avoid surprises', 88 88 'icon': 'puzzle-piece', 89 - 'content': 'Wikis with custom applications, Velocity scripts, macros, UI extensions, rights logic or business workflows.' 90 - },{ 91 - 'title': 'Authentication integrations', 92 - 'icon': 'lock', 93 - 'content': 'LDAP, Active Directory, SSO, OIDC, SAML, MFA or custom login setups that must keep working after upgrade.' 94 - },{ 95 - 'title': 'Infrastructure changes', 96 - 'icon': 'server', 97 - 'content': 'Java, Tomcat, database, Docker, filesystem, reverse proxy or hosting changes required by newer versions.' 98 - },{ 99 - 'title': 'Business-critical features', 100 - 'icon': 'file-pdf-o', 101 - 'content': 'PDF exports, dashboards, structured data, templates, permissions, notifications and workflows that need validation.' 102 - },{ 103 - 'title': 'Low-downtime rollout', 104 - 'icon': 'warning', 105 - 'content': 'Upgrade planning with backups, testing, rollback options and a controlled production deployment window.' 48 + 'content': 'Review extensions, custom code, authentication, PDF export, and infrastructure before production.' 106 106 }]) 107 - <section class="services" aria-labelledby="situations-title"> 108 - <div class="container"> 109 - <h2 id="situations-title">Common situations we handle</h2> 110 - <p class="section-intro"> 111 - XWiki upgrades are often simple in clean environments, but production instances usually include additional 112 - constraints that need to be understood before touching the live system. 113 - </p> 114 - <div class="services-grid"> 115 - #foreach ($entry in $upgradeSituationItems) 116 - <article class="service"> 117 - <div class="service-icon" aria-hidden="true"> 118 - <i class="fa fa-$entry.icon"></i> 119 - </div> 120 120 121 - <div class="service-body"> 122 - <h4>$entry.title</h4> 123 - <p>$entry.content</p> 124 - </div> 125 - </article> 126 - #end 127 - </div> 128 - </div> 129 - </section> 130 - ## PROCESS 131 - #set ($upgradeProcessItems = [{ 132 - 'title': 'Review the current instance', 133 - 'content': 'Version, extensions, database, filesystem, authentication, custom code, logs and infrastructure constraints.' 134 - },{ 135 - 'title': 'Define the upgrade path', 136 - 'content': 'Target version, intermediate steps if needed, compatibility risks, expected downtime and rollback options.' 137 - },{ 138 - 'title': 'Prepare and validate', 139 - 'content': 'Backups, test upgrade when needed, extension checks and validation of critical XWiki features.' 140 - },{ 141 - 'title': 'Upgrade production', 142 - 'content': 'Controlled execution, post-upgrade checks, issue resolution and confirmation that key features still work.' 143 - },{ 144 - 'title': 'Document next steps', 145 - 'content': 'Upgrade notes, observed risks, remaining recommendations and future maintenance guidance.' 146 - }]) 147 - <section id="upgrade-process" class="split-section" aria-labelledby="process-title"> 51 + <section class="compact-section" aria-labelledby="why-title"> 148 148 <div class="container"> 149 - <div class="split-grid"> 150 - <div class="split-copy"> 151 - <h2 id="process-title">A practical upgrade approach</h2> 152 - <p> 153 - The goal is not only to install a newer version. The goal is to move your XWiki instance forward 154 - while protecting the data, configuration, customizations and business processes that already depend on it. 155 - </p> 156 - <p> 157 - The upgrade is always prepared outside production first, using a staging environment or a temporary clone 158 - of the live instance. This allows compatibility issues, extension problems, authentication changes and 159 - custom features to be validated before the controlled production rollout. 160 - </p> 161 - </div> 162 - <ol class="process-list"> 163 - #foreach ($entry in $upgradeProcessItems) 164 - <li> 165 - <strong>$entry.title</strong> 166 - $entry.content 167 - </li> 168 - #end 169 - </ol> 170 - </div> 171 - </div> 172 - </section> 173 - ## DELIVERABLES 174 - #set ($upgradeDeliverableItems = [{ 175 - 'title': 'Upgrade review', 176 - 'icon': 'search', 177 - 'content': 'Review of the current version, installed extensions, customizations, authentication and hosting constraints.' 178 - },{ 179 - 'title': 'Upgrade plan', 180 - 'icon': 'map', 181 - 'content': 'Recommended target version, risk areas, validation checklist, downtime expectations and rollback approach.' 182 - },{ 183 - 'title': 'Post-upgrade validation', 184 - 'icon': 'check-circle', 185 - 'content': 'Verification of key pages, rights, authentication, extensions, jobs, PDFs, dashboards and custom applications.' 186 - },{ 187 - 'title': 'Upgrade notes', 188 - 'icon': 'file-text-o', 189 - 'content': 'Practical documentation of the performed work, important decisions and recommended follow-up actions.' 190 - }]) 191 - <section aria-labelledby="deliverables-title"> 192 - <div class="container"> 193 - <h2 id="deliverables-title">What you can expect</h2> 194 - <p class="section-intro"> 195 - The exact scope depends on your XWiki version, hosting setup and customizations, but an upgrade engagement 196 - usually includes a clear technical review, a controlled upgrade plan and post-upgrade validation. 197 - </p> 198 - <div class="widgets"> 199 - #foreach ($entry in $upgradeDeliverableItems) 53 + <h2 id="why-title">Keep your XWiki platform current and reliable</h2> 54 + <div class="widgets compact-widgets"> 55 + #foreach ($entry in $upgradeCards) 200 200 <article class="widget"> 201 201 <div class="icon" aria-hidden="true"> 202 202 <i class="fa fa-$entry.icon"></i> ... ... @@ -208,18 +208,47 @@ 208 208 </div> 209 209 </div> 210 210 </section> 211 - ## CTA 212 - <section class="cta-section" aria-labelledby="cta-title"> 67 + 68 + ## TWO COLUMN SUMMARY 69 + <section class="services compact-section" aria-labelledby="summary-title"> 213 213 <div class="container"> 214 - <div class="cta-panel"> 215 - <h2 id="cta-title">Planning an XWiki upgrade?</h2> 216 - <p> 217 - Send your current XWiki version, target version if known, hosting setup and any custom extensions or integrations 218 - that may affect the upgrade. A short description is enough to start with. 219 - </p> 220 - <a class="btn btn-primary" href="$xwiki.getURL('contact.WebHome')">Request an upgrade review</a> 71 + <h2 id="summary-title">Upgrade support for real XWiki environments</h2> 72 + 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> 77 + </div> 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> 87 + </div> 88 + </article> 89 + 90 + <article class="service"> 91 + <div class="service-icon"> 92 + <i class="fa fa-check-square-o" aria-hidden="true"></i> 93 + </div> 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> 103 + </div> 104 + </article> 221 221 </div> 222 222 </div> 223 223 </section> 108 + 224 224 {{/html}} 225 225 {{/velocity}}
- Agnease.Code.SEODetailsClass[0]
-
- metaDescription
-
... ... @@ -1,1 +1,0 @@ 1 -Safe XWiki upgrade services for production instances, including LTS upgrade planning, extension compatibility, backups, rollback strategy and validation. - metaTitle
-
... ... @@ -1,1 +1,0 @@ 1 -Safe XWiki Upgrade Services for Production Instances | Agnease
- 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