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, 0 added, 1 removed)
Details
- Page properties
-
- Title
-
... ... @@ -1,1 +1,1 @@ 1 - XWikiUpgradeServices1 +xwiki-upgrades - Content
-
... ... @@ -1,290 +1,398 @@ 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 - ## PAGEHEADER6 - <section class="hero hero-centered service-hero" aria-labelledby="hero-title">5 + ## HERO 6 + <section class="hero hero-centered" aria-labelledby="hero-title"> 7 7 <div class="container hero-inner"> 8 - <div class="hero-kicker"> 9 - <i class="fa fa-refresh" aria-hidden="true"></i> 10 - XWiki upgrade services 11 - </div> 8 + <h1 id="hero-title">XWiki Upgrades</h1> 9 + <p class="lead">Safe, planned upgrades for production XWiki platforms.</p> 12 12 13 - <h1 id="hero-title">Safe XWiki LTS upgrades for production environments</h1> 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> 14 14 15 - <p class="lead"> 16 - Keep your XWiki instance secure, stable and compatible with a planned upgrade path, clear validation steps 17 - and reduced operational risk, even when it includes custom extensions, authentication integrations, 18 - business-critical pages, workflows, scripts, rights configurations and production constraints. 19 - </p> 20 - 21 - <div class="hero-actions"> 22 - <a class="btn btn-primary" href="$xwiki.getURL('contact.WebHome')">Request an upgrade review</a> 23 - <a class="btn btn-secondary" href="#upgrade-process">See the upgrade approach</a> 19 + <div class="hero-cta"> 20 + <a href="mailto:alex@agnease.com?subject=XWiki%20Upgrade%20Assessment">Request an upgrade assessment</a> 24 24 </div> 25 25 </div> 26 26 </section> 27 27 28 - ## WHY UPGRADES MATTER29 - <section aria-labelledby=" why-upgrade-title">25 + ## INTRO 26 + <section aria-labelledby="intro-title"> 30 30 <div class="container"> 31 - <h2 id="why-upgrade-title">Why regular XWiki upgrades matter</h2> 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> 32 32 33 - <p class="section-intro"> 34 - An outdated XWiki instance can become harder to maintain over time. Security fixes, browser compatibility, 35 - extension updates, platform changes and infrastructure requirements continue to evolve, while older versions 36 - become more difficult and risky to upgrade. 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. 37 37 </p> 38 38 39 - <div class="pathways"> 40 - <article class="pathway-card"> 41 - <div class="pathway-icon"> 42 - <i class="fa fa-shield" aria-hidden="true"></i> 43 - </div> 44 - <h3>Reduce security exposure</h3> 45 - <p> 46 - Staying close to supported XWiki versions helps reduce exposure to known vulnerabilities and missing fixes. 47 - </p> 48 - <ul> 49 - <li>Review current version exposure</li> 50 - <li>Plan upgrade to a supported version</li> 51 - <li>Validate security-sensitive features</li> 52 - </ul> 53 - </article> 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> 54 54 55 - <article class="pathway-card"> 56 - <div class="pathway-icon"> 57 - <i class="fa fa-cogs" aria-hidden="true"></i> 58 - </div> 59 - <h3>Preserve compatibility</h3> 60 - <p> 61 - Extensions, custom applications, authentication systems and infrastructure components need to remain compatible. 62 - </p> 63 - <ul> 64 - <li>Check installed extensions</li> 65 - <li>Review custom code and scripts</li> 66 - <li>Validate integrations after upgrade</li> 67 - </ul> 68 - </article> 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 + }]) 69 69 70 - <article class="pathway-card"> 71 - <div class="pathway-icon"> 72 - <i class="fa fa-line-chart" aria-hidden="true"></i> 73 - </div> 74 - <h3>Improve maintainability</h3> 75 - <p> 76 - Smaller, regular upgrades are usually easier to control than large jumps after years of accumulated changes. 77 - </p> 78 - <ul> 79 - <li>Avoid long upgrade gaps</li> 80 - <li>Document the current platform state</li> 81 - <li>Prepare future upgrade cycles</li> 82 - </ul> 83 - </article> 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 84 84 </div> 85 85 </div> 86 86 </section> 87 87 88 - ## COMMON SITUATIONS 89 - <section class="services" aria-labelledby="situations-title"> 90 - <div class="container"> 91 - <h2 id="situations-title">Common situations we handle</h2> 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 + }]) 92 92 93 - <p class="section-intro"> 94 - XWiki upgrades are often simple in clean environments, but production instances usually include additional 95 - constraints that need to be understood before touching the live system. 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. 96 96 </p> 97 97 98 98 <div class="services-grid"> 99 - <article class="service"> 100 - <div class="service-icon" aria-hidden="true"> 101 - <i class="fa fa-clock-o"></i> 102 - </div> 103 - <div class="service-body"> 104 - <h4>Old XWiki versions</h4> 105 - <p> 106 - Instances that have not been upgraded for several months or years and require a careful upgrade path. 107 - </p> 108 - </div> 109 - </article> 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> 110 110 111 - <article class="service"> 112 - <div class="service-icon" aria-hidden="true"> 113 - <i class="fa fa-puzzle-piece"></i> 114 - </div> 115 - <div class="service-body"> 116 - <h4>Custom extensions and scripts</h4> 117 - <p> 118 - Wikis with custom applications, Velocity scripts, macros, UI extensions, rights logic or business workflows. 119 - </p> 120 - </div> 121 - </article> 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 + }]) 122 122 123 - <article class="service"> 124 - <div class="service-icon" aria-hidden="true"> 125 - <i class="fa fa-lock"></i> 126 - </div> 127 - <div class="service-body"> 128 - <h4>Authentication integrations</h4> 129 - <p> 130 - LDAP, Active Directory, SSO, OIDC, SAML, MFA or custom login setups that must keep working after upgrade. 131 - </p> 132 - </div> 133 - </article> 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> 134 134 135 - <article class="service"> 136 - <div class="service-icon" aria-hidden="true"> 137 - <i class="fa fa-server"></i> 138 - </div> 139 - <div class="service-body"> 140 - <h4>Infrastructure changes</h4> 141 - <p> 142 - Java, Tomcat, database, Docker, filesystem, reverse proxy or hosting changes required by newer versions. 143 - </p> 144 - </div> 145 - </article> 146 - 147 - <article class="service"> 148 - <div class="service-icon" aria-hidden="true"> 149 - <i class="fa fa-file-pdf-o"></i> 150 - </div> 151 - <div class="service-body"> 152 - <h4>Business-critical features</h4> 153 - <p> 154 - PDF exports, dashboards, structured data, templates, permissions, notifications and workflows that need validation. 155 - </p> 156 - </div> 157 - </article> 158 - 159 - <article class="service"> 160 - <div class="service-icon" aria-hidden="true"> 161 - <i class="fa fa-warning"></i> 162 - </div> 163 - <div class="service-body"> 164 - <h4>Low-downtime rollout</h4> 165 - <p> 166 - Upgrade planning with backups, testing, rollback options and a controlled production deployment window. 167 - </p> 168 - </div> 169 - </article> 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 170 170 </div> 171 171 </div> 172 172 </section> 173 173 174 174 ## PROCESS 175 - <section id="upgrade-process" class="split-section" aria-labelledby="process-title"> 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"> 176 176 <div class="container"> 177 - <div class="split-grid"> 178 - <div class="split-copy"> 179 - <h2 id="process-title">A practical upgrade approach</h2> 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> 180 180 181 - <p> 182 - The goal is not only to install a newer version. The goal is to move your XWiki instance forward 183 - while protecting the data, configuration, customizations and business processes that already depend on it. 184 - </p> 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> 185 185 186 - <p> 187 - The upgrade is always prepared outside production first, using a staging environment or a temporary clone 188 - of the live instance. This allows compatibility issues, extension problems, authentication changes and 189 - custom features to be validated before the controlled production rollout. 190 - </p> 191 - </div> 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 + }]) 192 192 193 - <ol class="process-list"> 194 - <li> 195 - <strong>Review the current instance</strong> 196 - Version, extensions, database, filesystem, authentication, custom code, logs and infrastructure constraints. 197 - </li> 198 - <li> 199 - <strong>Define the upgrade path</strong> 200 - Target version, intermediate steps if needed, compatibility risks, expected downtime and rollback options. 201 - </li> 202 - <li> 203 - <strong>Prepare and validate</strong> 204 - Backups, test upgrade when needed, extension checks and validation of critical XWiki features. 205 - </li> 206 - <li> 207 - <strong>Upgrade production</strong> 208 - Controlled execution, post-upgrade checks, issue resolution and confirmation that key features still work. 209 - </li> 210 - <li> 211 - <strong>Document next steps</strong> 212 - Upgrade notes, observed risks, remaining recommendations and future maintenance guidance. 213 - </li> 214 - </ol> 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 215 215 </div> 216 216 </div> 217 217 </section> 218 218 219 - ## DELIVERABLES220 - <section aria-labelledby=" deliverables-title">303 + ## PLATFORM NOTE 304 + <section aria-labelledby="platform-title"> 221 221 <div class="container"> 222 - <h2 id="deliverables-title">What you can expect</h2> 223 - 224 - <p class="section-intro"> 225 - The exact scope depends on your XWiki version, hosting setup and customizations, but an upgrade engagement 226 - usually includes a clear technical review, a controlled upgrade plan and post-upgrade validation. 306 + <h2 id="platform-title">Major version upgrades require planning</h2> 307 + <p class="lead"> 308 + Some XWiki upgrades also require infrastructure-level preparation. 227 227 </p> 228 228 229 229 <div class="widgets"> 230 230 <article class="widget"> 231 231 <div class="icon" aria-hidden="true"> 232 - <i class="fa fa-se arch"></i>233 - <h4> Upgradereview</h4>314 + <i class="fa fa-server"></i> 315 + <h4>Application server compatibility</h4> 234 234 </div> 235 235 <p> 236 - Review of the current version, installed extensions, customizations, authentication and hosting constraints. 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. 237 237 </p> 238 238 </article> 239 239 240 240 <article class="widget"> 241 241 <div class="icon" aria-hidden="true"> 242 - <i class="fa fa- map"></i>243 - <h4> Upgrade plan</h4>325 + <i class="fa fa-plug"></i> 326 + <h4>Extension compatibility</h4> 244 244 </div> 245 245 <p> 246 - Recommended target version, risk areas, validation checklist, downtime expectations and rollback approach. 329 + Installed extensions and custom applications should be checked against the target version, 330 + especially when the instance contains business-specific workflows or integrations. 247 247 </p> 248 248 </article> 249 249 250 250 <article class="widget"> 251 251 <div class="icon" aria-hidden="true"> 252 - <i class="fa fa- check-circle"></i>253 - <h4> Post-upgradevalidation</h4>336 + <i class="fa fa-shield"></i> 337 + <h4>Security and stability</h4> 254 254 </div> 255 255 <p> 256 - Verification of key pages, rights, authentication, extensions, jobs, PDFs, dashboards and custom applications. 340 + Staying close to the recommended LTS version helps reduce exposure to known issues and keeps 341 + the platform easier to maintain over time. 257 257 </p> 258 258 </article> 344 + </div> 345 + </div> 346 + </section> 259 259 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"> 260 260 <article class="widget"> 261 261 <div class="icon" aria-hidden="true"> 262 - <i class="fa fa- file-text-o"></i>263 - <h4> Upgrade notes</h4>364 + <i class="fa fa-list"></i> 365 + <h4>The assessment can include</h4> 264 264 </div> 265 265 <p> 266 - Practical documentation of the performed work, important decisions and recommended follow-up actions. 368 + Recommended target version, estimated upgrade effort, security and stability reasons to upgrade, 369 + infrastructure considerations, extension risks, customization risks, and suggested next steps. 267 267 </p> 268 268 </article> 269 269 </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> 270 270 </div> 271 271 </section> 272 272 273 - ## CTA274 - <section class="cta-section" aria-labelledby="cta-title">380 + ## RELATED SERVICES 381 + <section aria-labelledby="related-title"> 275 275 <div class="container"> 276 - <div class="cta-panel"> 277 - <h2 id="cta-title">Planning an XWiki upgrade?</h2> 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> 278 278 279 - <p>280 - Send your current XWikiversion,target versionif known,hostingsetupand any custom extensions orintegrations281 - that may affect theupgrade. A shortdescription isenough to startwith.282 - < /p>283 - 284 - < a class="btn btn-primary" href="$xwiki.getURL('contact.WebHome')">Request anupgrade review</a>285 - </ div>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> 286 286 </div> 287 287 </section> 288 - 289 289 {{/html}} 290 290 {{/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