Changes for page XWiki Upgrade Services

Last modified by Agnease on 2026/05/25 16:11

From version 9.2
edited by Agnease
on 2026/05/22 14:09
Change comment: There is no comment for this version
To version 1.6
edited by Agnease
on 2026/05/01 12:23
Change comment: There is no comment for this version

Summary

Details

Page properties
Title
... ... @@ -1,1 +1,1 @@
1 -XWiki Upgrade Services
1 +xwiki-upgrades
Content
... ... @@ -2,289 +2,109 @@
2 2  #set ($discard = $xwiki.ssx.use('PublicWebSite.WebHome'))
3 3  {{html clean="false"}}
4 4  
5 - ## PAGE HEADER
6 - <section class="hero hero-centered service-hero" aria-labelledby="hero-title">
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
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>
11 11   </div>
12 12  
13 - <h1 id="hero-title">Safe XWiki LTS upgrades for production environments</h1>
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>
24 - </div>
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 25   </div>
26 26   </section>
27 27  
28 - ## WHY UPGRADES MATTER
29 - <section aria-labelledby="why-upgrade-title">
30 - <div class="container">
31 - <h2 id="why-upgrade-title">Why regular XWiki upgrades matter</h2>
36 + ## VALUE CARDS
37 + #set ($upgradeCards = [{
38 + 'title': 'Stay secure',
39 + 'icon': 'shield',
40 + 'content': 'Reduce exposure to known vulnerabilities fixed in newer XWiki versions.'
41 + },{
42 + 'title': 'Upgrade safely',
43 + 'icon': 'refresh',
44 + 'content': 'Plan the upgrade with backups, validation, rollback options, and minimal downtime.'
45 + },{
46 + 'title': 'Avoid surprises',
47 + 'icon': 'puzzle-piece',
48 + 'content': 'Review extensions, custom code, authentication, PDF export, and infrastructure before production.'
49 + }])
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.
37 - </p>
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>
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>
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>
51 + <section class="compact-section" aria-labelledby="why-title">
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)
56 + <article class="widget">
57 + <div class="icon" aria-hidden="true">
58 + <i class="fa fa-$entry.icon"></i>
59 + <h4>$entry.title</h4>
60 + </div>
61 + <p>$entry.content</p>
62 + </article>
63 + #end
84 84   </div>
85 85   </div>
86 86   </section>
87 87  
88 - ## COMMON SITUATIONS
89 - <section class="services" aria-labelledby="situations-title">
68 + ## TWO COLUMN SUMMARY
69 + <section class="services compact-section" aria-labelledby="summary-title">
90 90   <div class="container">
91 - <h2 id="situations-title">Common situations we handle</h2>
71 + <h2 id="summary-title">Upgrade support for real XWiki environments</h2>
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.
96 - </p>
97 -
98 - <div class="services-grid">
73 + <div class="services-grid compact-grid">
99 99   <article class="service">
100 - <div class="service-icon" aria-hidden="true">
101 - <i class="fa fa-clock-o"></i>
75 + <div class="service-icon">
76 + <i class="fa fa-exclamation-triangle" aria-hidden="true"></i>
102 102   </div>
103 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>
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>
108 108   </div>
109 109   </article>
110 110  
111 111   <article class="service">
112 - <div class="service-icon" aria-hidden="true">
113 - <i class="fa fa-puzzle-piece"></i>
91 + <div class="service-icon">
92 + <i class="fa fa-check-square-o" aria-hidden="true"></i>
114 114   </div>
115 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>
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>
120 120   </div>
121 121   </article>
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>
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>
170 170   </div>
171 171   </div>
172 172   </section>
173 173  
174 - ## PROCESS
175 - <section id="upgrade-process" class="split-section" aria-labelledby="process-title">
176 - <div class="container">
177 - <div class="split-grid">
178 - <div class="split-copy">
179 - <h2 id="process-title">A practical upgrade approach</h2>
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>
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>
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>
215 - </div>
216 - </div>
217 - </section>
218 -
219 - ## DELIVERABLES
220 - <section aria-labelledby="deliverables-title">
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.
227 - </p>
228 -
229 - <div class="widgets">
230 - <article class="widget">
231 - <div class="icon" aria-hidden="true">
232 - <i class="fa fa-search"></i>
233 - <h4>Upgrade review</h4>
234 - </div>
235 - <p>
236 - Review of the current version, installed extensions, customizations, authentication and hosting constraints.
237 - </p>
238 - </article>
239 -
240 - <article class="widget">
241 - <div class="icon" aria-hidden="true">
242 - <i class="fa fa-map"></i>
243 - <h4>Upgrade plan</h4>
244 - </div>
245 - <p>
246 - Recommended target version, risk areas, validation checklist, downtime expectations and rollback approach.
247 - </p>
248 - </article>
249 -
250 - <article class="widget">
251 - <div class="icon" aria-hidden="true">
252 - <i class="fa fa-check-circle"></i>
253 - <h4>Post-upgrade validation</h4>
254 - </div>
255 - <p>
256 - Verification of key pages, rights, authentication, extensions, jobs, PDFs, dashboards and custom applications.
257 - </p>
258 - </article>
259 -
260 - <article class="widget">
261 - <div class="icon" aria-hidden="true">
262 - <i class="fa fa-file-text-o"></i>
263 - <h4>Upgrade notes</h4>
264 - </div>
265 - <p>
266 - Practical documentation of the performed work, important decisions and recommended follow-up actions.
267 - </p>
268 - </article>
269 - </div>
270 - </div>
271 - </section>
272 -
273 - ## CTA
274 - <section class="cta-section" aria-labelledby="cta-title">
275 - <div class="container">
276 - <div class="cta-panel">
277 - <h2 id="cta-title">Planning an XWiki upgrade?</h2>
278 -
279 - <p>
280 - Send your current XWiki version, target version if known, hosting setup and any custom extensions or integrations
281 - that may affect the upgrade. A short description is enough to start with.
282 - </p>
283 -
284 - <a class="btn btn-primary" href="$xwiki.getURL('contact.WebHome')">Request an upgrade review</a>
285 - </div>
286 - </div>
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
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