Wiki source code of XWiki Upgrade Services

Version 9.6 by Alex Cotiuga on 2026/05/25 16:11

Hide last authors
Alex Cotiuga 1.2 1 {{velocity}}
Alex Cotiuga 1.4 2 #set ($discard = $xwiki.ssx.use('PublicWebSite.WebHome'))
3 {{html clean="false"}}
Alex Cotiuga 2.2 4 ## PAGE HEADER
Alex Cotiuga 9.5 5 <section class="hero hero-centered" aria-labelledby="hero-title">
Alex Cotiuga 2.1 6 <div class="container hero-inner">
Alex Cotiuga 2.2 7 <div class="hero-kicker">
8 <i class="fa fa-refresh" aria-hidden="true"></i>
9 XWiki upgrade services
10 </div>
11 <h1 id="hero-title">Safe XWiki LTS upgrades for production environments</h1>
Alex Cotiuga 2.1 12 <p class="lead">
Alex Cotiuga 9.3 13 Upgrade XWiki safely with a clear plan, compatibility checks and reduced production risk,
14 even for instances with custom extensions, integrations and workflows.
Alex Cotiuga 2.2 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>
Alex Cotiuga 1.2 19 </div>
20 </div>
21 </section>
Alex Cotiuga 2.2 22 ## WHY UPGRADES MATTER
Alex Cotiuga 9.5 23 #set ($upgradeReasonItems = [{
24 'title': 'Reduce security exposure',
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 ]
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 ]
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 }])
Alex Cotiuga 2.2 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">
Alex Cotiuga 9.5 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>
Alex Cotiuga 2.2 68
Alex Cotiuga 9.5 69 <p>$entry.content</p>
Alex Cotiuga 2.2 70
Alex Cotiuga 9.5 71 <ul>
72 #foreach ($item in $entry.items)
73 <li>$item</li>
74 #end
75 </ul>
76 </article>
77 #end
Alex Cotiuga 1.2 78 </div>
79 </div>
80 </section>
Alex Cotiuga 2.2 81 ## COMMON SITUATIONS
Alex Cotiuga 9.5 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',
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.'
106 }])
Alex Cotiuga 2.2 107 <section class="services" aria-labelledby="situations-title">
Alex Cotiuga 1.2 108 <div class="container">
Alex Cotiuga 2.2 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">
Alex Cotiuga 9.5 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>
Alex Cotiuga 1.2 120
Alex Cotiuga 9.5 121 <div class="service-body">
122 <h4>$entry.title</h4>
123 <p>$entry.content</p>
124 </div>
125 </article>
126 #end
Alex Cotiuga 1.2 127 </div>
128 </div>
129 </section>
Alex Cotiuga 2.2 130 ## PROCESS
Alex Cotiuga 9.5 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 }])
Alex Cotiuga 2.2 147 <section id="upgrade-process" class="split-section" aria-labelledby="process-title">
Alex Cotiuga 2.1 148 <div class="container">
Alex Cotiuga 2.2 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>
Alex Cotiuga 2.4 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.
Alex Cotiuga 2.2 160 </p>
161 </div>
162 <ol class="process-list">
Alex Cotiuga 9.5 163 #foreach ($entry in $upgradeProcessItems)
164 <li>
165 <strong>$entry.title</strong>
166 $entry.content
167 </li>
168 #end
Alex Cotiuga 2.2 169 </ol>
170 </div>
171 </div>
172 </section>
173 ## DELIVERABLES
Alex Cotiuga 9.5 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 }])
Alex Cotiuga 2.2 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.
Alex Cotiuga 2.1 197 </p>
Alex Cotiuga 2.2 198 <div class="widgets">
Alex Cotiuga 9.5 199 #foreach ($entry in $upgradeDeliverableItems)
200 <article class="widget">
201 <div class="icon" aria-hidden="true">
202 <i class="fa fa-$entry.icon"></i>
203 <h4>$entry.title</h4>
204 </div>
205 <p>$entry.content</p>
206 </article>
207 #end
Alex Cotiuga 2.2 208 </div>
Alex Cotiuga 2.1 209 </div>
210 </section>
Alex Cotiuga 2.2 211 ## CTA
212 <section class="cta-section" aria-labelledby="cta-title">
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>
221 </div>
222 </div>
223 </section>
Alex Cotiuga 1.2 224 {{/html}}
225 {{/velocity}}