Changes for page xwiki-upgrades

Last modified by Alex Cotiugă on 2026/05/12 12:41

From version 1.6
edited by Alex Cotiugă
on 2026/05/01 12:23
Change comment: There is no comment for this version
To version 1.2
edited by Alex Cotiugă
on 2026/05/01 12:16
Change comment: There is no comment for this version

Summary

Details

Page properties
Content
... ... @@ -1,58 +1,76 @@
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 - ## 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>
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 21   </div>
22 + </div>
23 + </section>
22 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>
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>
33 33   </div>
34 34   </section>
35 35  
36 - ## VALUE CARDS
37 - #set ($upgradeCards = [{
38 - 'title': 'Stay secure',
48 + ## WHY UPGRADE
49 + #set ($whyUpgradeData = [{
50 + 'title': 'Security fixes',
39 39   'icon': 'shield',
40 - 'content': 'Reduce exposure to known vulnerabilities fixed in newer XWiki versions.'
52 + 'content': 'Older versions may miss important fixes that were introduced in later XWiki releases.'
41 41   },{
42 - 'title': 'Upgrade safely',
43 - 'icon': 'refresh',
44 - 'content': 'Plan the upgrade with backups, validation, rollback options, and minimal downtime.'
54 + 'title': 'Stability improvements',
55 + 'icon': 'check-square-o',
56 + 'content': 'Regular upgrades reduce accumulated bugs and keep the platform easier to maintain.'
45 45   },{
46 - 'title': 'Avoid surprises',
47 - 'icon': 'puzzle-piece',
48 - 'content': 'Review extensions, custom code, authentication, PDF export, and infrastructure before production.'
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.'
49 49   }])
50 50  
51 - <section class="compact-section" aria-labelledby="why-title">
67 + <section aria-labelledby="why-upgrade-title">
52 52   <div class="container">
53 - <h2 id="why-title">Keep your XWiki platform current and reliable</h2>
54 - <div class="widgets compact-widgets">
55 - #foreach ($entry in $upgradeCards)
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)
56 56   <article class="widget">
57 57   <div class="icon" aria-hidden="true">
58 58   <i class="fa fa-$entry.icon"></i>
... ... @@ -65,46 +65,316 @@
65 65   </div>
66 66   </section>
67 67  
68 - ## TWO COLUMN SUMMARY
69 - <section class="services compact-section" aria-labelledby="summary-title">
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">
70 70   <div class="container">
71 - <h2 id="summary-title">Upgrade support for real XWiki environments</h2>
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>
72 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>
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>
77 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>
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>
87 87   </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>
88 88   </article>
89 89  
90 - <article class="service">
91 - <div class="service-icon">
92 - <i class="fa fa-check-square-o" aria-hidden="true"></i>
334 + <article class="widget">
335 + <div class="icon" aria-hidden="true">
336 + <i class="fa fa-shield"></i>
337 + <h4>Security and stability</h4>
93 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>
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>
103 103   </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>
104 104   </article>
105 105   </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>
106 106   </div>
107 107   </section>
108 108  
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>
109 109  {{/html}}
110 110  {{/velocity}}
XWiki.StyleSheetExtension[0]
cache
... ... @@ -1,1 +1,0 @@
1 -long
code
... ... @@ -1,112 +1,0 @@
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,1 +1,0 @@
1 -currentPage