Changes for page XWiki Migrations

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

From version 8.2
edited by Agnease
on 2026/05/22 14:16
Change comment: There is no comment for this version
To version 10.1
edited by Agnease
on 2026/05/25 16:40
Change comment: There is no comment for this version

Summary

Details

Page properties
Content
... ... @@ -1,27 +1,18 @@
1 1  {{velocity}}
2 2  #set ($discard = $xwiki.ssx.use('PublicWebSite.WebHome'))
3 3  {{html clean="false"}}
4 -
5 5   ## PAGE HEADER
6 - <section class="hero hero-centered service-hero" aria-labelledby="hero-title">
5 + <section class="hero hero-centered" aria-labelledby="hero-title">
7 7   <div class="container hero-inner">
8 8   <div class="hero-kicker">
9 9   <i class="fa fa-exchange" aria-hidden="true"></i>
10 10   XWiki migration services
11 11   </div>
12 -
13 13   <h1 id="hero-title">Migrate knowledge into XWiki with structure and continuity</h1>
14 -
15 15   <p class="lead">
16 16   Move content from Confluence, SharePoint, MediaWiki, file-based documentation or legacy systems into XWiki
17 17   while preserving hierarchy, attachments, links, permissions and long-term maintainability.
18 18   </p>
19 -
20 - <p class="hero-support">
21 - We help organizations plan and execute migrations that go beyond copying pages: hierarchy, attachments,
22 - links, permissions, metadata, macros, templates and redirects all need to be considered.
23 - </p>
24 -
25 25   <div class="hero-actions">
26 26   <a class="btn btn-primary" href="$xwiki.getURL('contact.WebHome')">Discuss a migration</a>
27 27   <a class="btn btn-secondary" href="#migration-process">See the migration approach</a>
... ... @@ -28,382 +28,310 @@
28 28   </div>
29 29   </div>
30 30   </section>
31 -
32 32   ## WHY MIGRATION NEEDS CARE
23 + #set ($migrationReasonItems = [{
24 + 'title': 'Preserve structure',
25 + 'icon': 'sitemap',
26 + 'content': 'Keep spaces, hierarchies, navigation and page relationships understandable after the move.',
27 + 'items': [
28 + 'Space and page hierarchy mapping',
29 + 'Navigation and landing page planning',
30 + 'Related content and category structure'
31 + ]
32 + },{
33 + 'title': 'Protect continuity',
34 + 'icon': 'link',
35 + 'content': 'Reduce disruption by handling links, attachments, redirects, permissions and known content dependencies.',
36 + 'items': [
37 + 'Attachment and link preservation',
38 + 'Redirect and URL transition planning',
39 + 'Permission model review'
40 + ]
41 + },{
42 + 'title': 'Improve maintainability',
43 + 'icon': 'database',
44 + 'content': 'Use the migration as an opportunity to clean up content, introduce metadata and prepare better structures.',
45 + 'items': [
46 + 'Templates and structured data',
47 + 'Metadata and tagging strategy',
48 + 'Content cleanup recommendations'
49 + ]
50 + }])
33 33   <section aria-labelledby="why-migration-title">
34 34   <div class="container">
35 35   <h2 id="why-migration-title">A migration is more than moving pages</h2>
36 -
37 37   <p class="section-intro">
38 38   Documentation platforms usually contain years of accumulated knowledge, links, attachments, permissions,
39 39   templates and habits. A successful migration should preserve what matters while improving how the knowledge
40 40   is organized and maintained in XWiki.
41 41   </p>
42 -
43 43   <div class="pathways">
44 - <article class="pathway-card">
45 - <div class="pathway-icon">
46 - <i class="fa fa-sitemap" aria-hidden="true"></i>
47 - </div>
48 - <h3>Preserve structure</h3>
49 - <p>
50 - Keep spaces, hierarchies, navigation and page relationships understandable after the move.
51 - </p>
52 - <ul>
53 - <li>Space and page hierarchy mapping</li>
54 - <li>Navigation and landing page planning</li>
55 - <li>Related content and category structure</li>
56 - </ul>
57 - </article>
58 -
59 - <article class="pathway-card">
60 - <div class="pathway-icon">
61 - <i class="fa fa-link" aria-hidden="true"></i>
62 - </div>
63 - <h3>Protect continuity</h3>
64 - <p>
65 - Reduce disruption by handling links, attachments, redirects, permissions and known content dependencies.
66 - </p>
67 - <ul>
68 - <li>Attachment and link preservation</li>
69 - <li>Redirect and URL transition planning</li>
70 - <li>Permission model review</li>
71 - </ul>
72 - </article>
73 -
74 - <article class="pathway-card">
75 - <div class="pathway-icon">
76 - <i class="fa fa-database" aria-hidden="true"></i>
77 - </div>
78 - <h3>Improve maintainability</h3>
79 - <p>
80 - Use the migration as an opportunity to clean up content, introduce metadata and prepare better structures.
81 - </p>
82 - <ul>
83 - <li>Templates and structured data</li>
84 - <li>Metadata and tagging strategy</li>
85 - <li>Content cleanup recommendations</li>
86 - </ul>
87 - </article>
60 + #foreach ($entry in $migrationReasonItems)
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 + <p>$entry.content</p>
69 + <ul>
70 + #foreach ($item in $entry.items)
71 + <li>$item</li>
72 + #end
73 + </ul>
74 + </article>
75 + #end
88 88   </div>
89 89   </div>
90 90   </section>
91 -
92 92   ## MIGRATION SOURCES
80 + #set ($migrationSourceItems = [{
81 + 'title': 'Confluence to XWiki',
82 + 'icon': 'book',
83 + 'content': 'Migration of pages, spaces, attachments, links and content that may include macros or Confluence-specific formatting.'
84 + },{
85 + 'title': 'SharePoint to XWiki',
86 + 'icon': 'windows',
87 + 'content': 'Migration planning for document libraries, wiki-like content, intranet pages and knowledge structures.'
88 + },{
89 + 'title': 'MediaWiki to XWiki',
90 + 'icon': 'globe',
91 + 'content': 'Migration of wiki pages, links, categories, attachments and content that may require syntax or structure conversion.'
92 + },{
93 + 'title': 'Files and folders',
94 + 'icon': 'folder-open',
95 + 'content': 'Migration from file shares, exported documentation, PDFs, Word files or folder-based knowledge repositories.'
96 + },{
97 + 'title': 'Legacy knowledge systems',
98 + 'icon': 'archive',
99 + 'content': 'Extraction and restructuring of content from older internal tools, portals or custom documentation systems.'
100 + },{
101 + 'title': 'Mixed-source migrations',
102 + 'icon': 'random',
103 + 'content': 'Consolidation of content from multiple sources into a more coherent XWiki knowledge platform.'
104 + }])
93 93   <section class="services" aria-labelledby="migration-sources-title">
94 94   <div class="container">
95 95   <h2 id="migration-sources-title">Common migration sources</h2>
96 -
97 97   <p class="section-intro">
98 98   Each source system has different export formats, content models and limitations. The migration approach
99 99   depends on the quality of the source data, the expected XWiki structure and the amount of transformation needed.
100 100   </p>
101 -
102 102   <div class="services-grid">
103 - <article class="service">
104 - <div class="service-icon" aria-hidden="true">
105 - <i class="fa fa-book"></i>
106 - </div>
107 - <div class="service-body">
108 - <h4>Confluence to XWiki</h4>
109 - <p>
110 - Migration of pages, spaces, attachments, links and content that may include macros or Confluence-specific formatting.
111 - </p>
112 - </div>
113 - </article>
114 -
115 - <article class="service">
116 - <div class="service-icon" aria-hidden="true">
117 - <i class="fa fa-windows"></i>
118 - </div>
119 - <div class="service-body">
120 - <h4>SharePoint to XWiki</h4>
121 - <p>
122 - Migration planning for document libraries, wiki-like content, intranet pages and knowledge structures.
123 - </p>
124 - </div>
125 - </article>
126 -
127 - <article class="service">
128 - <div class="service-icon" aria-hidden="true">
129 - <i class="fa fa-globe"></i>
130 - </div>
131 - <div class="service-body">
132 - <h4>MediaWiki to XWiki</h4>
133 - <p>
134 - Migration of wiki pages, links, categories, attachments and content that may require syntax or structure conversion.
135 - </p>
136 - </div>
137 - </article>
138 -
139 - <article class="service">
140 - <div class="service-icon" aria-hidden="true">
141 - <i class="fa fa-folder-open"></i>
142 - </div>
143 - <div class="service-body">
144 - <h4>Files and folders</h4>
145 - <p>
146 - Migration from file shares, exported documentation, PDFs, Word files or folder-based knowledge repositories.
147 - </p>
148 - </div>
149 - </article>
150 -
151 - <article class="service">
152 - <div class="service-icon" aria-hidden="true">
153 - <i class="fa fa-archive"></i>
154 - </div>
155 - <div class="service-body">
156 - <h4>Legacy knowledge systems</h4>
157 - <p>
158 - Extraction and restructuring of content from older internal tools, portals or custom documentation systems.
159 - </p>
160 - </div>
161 - </article>
162 -
163 - <article class="service">
164 - <div class="service-icon" aria-hidden="true">
165 - <i class="fa fa-random"></i>
166 - </div>
167 - <div class="service-body">
168 - <h4>Mixed-source migrations</h4>
169 - <p>
170 - Consolidation of content from multiple sources into a more coherent XWiki knowledge platform.
171 - </p>
172 - </div>
173 - </article>
113 + #foreach ($entry in $migrationSourceItems)
114 + <article class="service">
115 + <div class="service-icon" aria-hidden="true">
116 + <i class="fa fa-$entry.icon"></i>
117 + </div>
118 + <div class="service-body">
119 + <h4>$entry.title</h4>
120 + <p>$entry.content</p>
121 + </div>
122 + </article>
123 + #end
174 174   </div>
175 175   </div>
176 176   </section>
177 -
178 178   ## MIGRATION PROCESS
128 + #set ($migrationProcessItems = [{
129 + 'title': 'Assess the source content',
130 + 'content': 'Review structure, volume, attachments, links, permissions, formatting, macros, metadata and export options.'
131 + },{
132 + 'title': 'Define the target XWiki structure',
133 + 'content': 'Decide spaces, page hierarchy, templates, metadata, permissions, naming rules and navigation strategy.'
134 + },{
135 + 'title': 'Run a sample migration',
136 + 'content': 'Migrate a representative subset of content to identify conversion issues and validate the approach.'
137 + },{
138 + 'title': 'Refine conversion and cleanup rules',
139 + 'content': 'Adjust mappings, formatting, link handling, attachments, macros, categories and content cleanup decisions.'
140 + },{
141 + 'title': 'Execute and validate the migration',
142 + 'content': 'Run the migration, review key content areas, verify attachments and links, and document remaining follow-up work.'
143 + }])
179 179   <section id="migration-process" class="split-section" aria-labelledby="process-title">
180 180   <div class="container">
181 181   <div class="split-grid">
182 182   <div class="split-copy">
183 183   <h2 id="process-title">A practical migration approach</h2>
184 -
185 185   <p>
186 186   A good migration starts with understanding how the source content is used today and how it should work
187 187   in XWiki after the move. The objective is not only to transfer data, but to create a usable knowledge
188 188   platform that people can navigate, search and maintain.
189 189   </p>
190 -
191 191   <p>
192 192   Migrations are best handled iteratively: assess the source, run a sample migration, validate the result,
193 193   adjust the transformation rules and then proceed with a controlled migration plan.
194 194   </p>
195 195   </div>
196 -
197 197   <ol class="process-list">
198 - <li>
199 - <strong>Assess the source content</strong>
200 - Review structure, volume, attachments, links, permissions, formatting, macros, metadata and export options.
201 - </li>
202 - <li>
203 - <strong>Define the target XWiki structure</strong>
204 - Decide spaces, page hierarchy, templates, metadata, permissions, naming rules and navigation strategy.
205 - </li>
206 - <li>
207 - <strong>Run a sample migration</strong>
208 - Migrate a representative subset of content to identify conversion issues and validate the approach.
209 - </li>
210 - <li>
211 - <strong>Refine conversion and cleanup rules</strong>
212 - Adjust mappings, formatting, link handling, attachments, macros, categories and content cleanup decisions.
213 - </li>
214 - <li>
215 - <strong>Execute and validate the migration</strong>
216 - Run the migration, review key content areas, verify attachments and links, and document remaining follow-up work.
217 - </li>
160 + #foreach ($entry in $migrationProcessItems)
161 + <li>
162 + <strong>$entry.title</strong>
163 + $entry.content
164 + </li>
165 + #end
218 218   </ol>
219 219   </div>
220 220   </div>
221 221   </section>
222 -
223 223   ## WHAT CAN BE INCLUDED
171 + #set ($migrationIncludedItems = [{
172 + 'title': 'Content conversion',
173 + 'icon': 'file-text-o',
174 + 'content': 'Page content, syntax, formatting, links, images, attachments and other reusable knowledge assets.'
175 + },{
176 + 'title': 'Structure mapping',
177 + 'icon': 'sitemap',
178 + 'content': 'Spaces, page hierarchy, navigation, naming rules, landing pages and organization of knowledge areas.'
179 + },{
180 + 'title': 'Permissions review',
181 + 'icon': 'lock',
182 + 'content': 'Review and mapping of access rights where the source system contains meaningful permission rules.'
183 + },{
184 + 'title': 'Metadata strategy',
185 + 'icon': 'tags',
186 + 'content': 'Tags, categories, templates, XWiki classes or structured data to improve long-term maintainability.'
187 + }])
224 224   <section aria-labelledby="included-title">
225 225   <div class="container">
226 226   <h2 id="included-title">What can be included</h2>
227 -
228 228   <p class="section-intro">
229 229   The exact migration scope depends on the source system and the quality of the exported content. A migration
230 230   engagement can include both technical conversion and practical information architecture work.
231 231   </p>
232 -
233 233   <div class="widgets">
234 - <article class="widget">
235 - <div class="icon" aria-hidden="true">
236 - <i class="fa fa-file-text-o"></i>
237 - <h4>Content<br />conversion</h4>
238 - </div>
239 - <p>
240 - Page content, syntax, formatting, links, images, attachments and other reusable knowledge assets.
241 - </p>
242 - </article>
243 -
244 - <article class="widget">
245 - <div class="icon" aria-hidden="true">
246 - <i class="fa fa-sitemap"></i>
247 - <h4>Structure<br />mapping</h4>
248 - </div>
249 - <p>
250 - Spaces, page hierarchy, navigation, naming rules, landing pages and organization of knowledge areas.
251 - </p>
252 - </article>
253 -
254 - <article class="widget">
255 - <div class="icon" aria-hidden="true">
256 - <i class="fa fa-lock"></i>
257 - <h4>Permissions<br />review</h4>
258 - </div>
259 - <p>
260 - Review and mapping of access rights where the source system contains meaningful permission rules.
261 - </p>
262 - </article>
263 -
264 - <article class="widget">
265 - <div class="icon" aria-hidden="true">
266 - <i class="fa fa-tags"></i>
267 - <h4>Metadata<br />strategy</h4>
268 - </div>
269 - <p>
270 - Tags, categories, templates, XWiki classes or structured data to improve long-term maintainability.
271 - </p>
272 - </article>
196 + #foreach ($entry in $migrationIncludedItems)
197 + <article class="widget">
198 + <div class="icon" aria-hidden="true">
199 + <i class="fa fa-$entry.icon"></i>
200 + <h4>$entry.title</h4>
201 + </div>
202 + <p>$entry.content</p>
203 + </article>
204 + #end
273 273   </div>
274 274   </div>
275 275   </section>
276 -
277 277   ## IMPORTANT CONSIDERATIONS
209 + #set ($migrationConsiderationItems = [{
210 + 'title': 'Macros and special content',
211 + 'icon': 'code',
212 + 'content': 'Source-specific macros, embeds, widgets or dynamic content may require conversion, replacement or redesign.'
213 + },{
214 + 'title': 'Links and redirects',
215 + 'icon': 'link',
216 + 'content': 'Internal links, external references, old URLs and bookmarks should be reviewed to reduce broken navigation.'
217 + },{
218 + 'title': 'Search and findability',
219 + 'icon': 'search',
220 + 'content': 'Content organization, titles, metadata and navigation affect how easily users find migrated knowledge.'
221 + },{
222 + 'title': 'User adoption',
223 + 'icon': 'user',
224 + 'content': 'A technically successful migration still needs clear navigation, familiar entry points and user guidance.'
225 + },{
226 + 'title': 'Validation effort',
227 + 'icon': 'check-square-o',
228 + 'content': 'Important spaces and high-value content should be reviewed after migration to catch conversion issues.'
229 + },{
230 + 'title': 'Cutover planning',
231 + 'icon': 'clock-o',
232 + 'content': 'Timing, source freeze, final migration, redirects and communication should be planned before go-live.'
233 + }])
278 278   <section class="services" aria-labelledby="considerations-title">
279 279   <div class="container">
280 280   <h2 id="considerations-title">Important migration considerations</h2>
281 -
282 282   <p class="section-intro">
283 283   Not every element from the source system maps perfectly to XWiki. The migration plan should distinguish
284 284   between what can be converted automatically, what needs manual cleanup and what should be redesigned.
285 285   </p>
286 -
287 287   <div class="services-grid">
288 - <article class="service">
289 - <div class="service-icon" aria-hidden="true">
290 - <i class="fa fa-code"></i>
291 - </div>
292 - <div class="service-body">
293 - <h4>Macros and special content</h4>
294 - <p>
295 - Source-specific macros, embeds, widgets or dynamic content may require conversion, replacement or redesign.
296 - </p>
297 - </div>
298 - </article>
299 -
300 - <article class="service">
301 - <div class="service-icon" aria-hidden="true">
302 - <i class="fa fa-link"></i>
303 - </div>
304 - <div class="service-body">
305 - <h4>Links and redirects</h4>
306 - <p>
307 - Internal links, external references, old URLs and bookmarks should be reviewed to reduce broken navigation.
308 - </p>
309 - </div>
310 - </article>
311 -
312 - <article class="service">
313 - <div class="service-icon" aria-hidden="true">
314 - <i class="fa fa-search"></i>
315 - </div>
316 - <div class="service-body">
317 - <h4>Search and findability</h4>
318 - <p>
319 - Content organization, titles, metadata and navigation affect how easily users find migrated knowledge.
320 - </p>
321 - </div>
322 - </article>
323 -
324 - <article class="service">
325 - <div class="service-icon" aria-hidden="true">
326 - <i class="fa fa-user"></i>
327 - </div>
328 - <div class="service-body">
329 - <h4>User adoption</h4>
330 - <p>
331 - A technically successful migration still needs clear navigation, familiar entry points and user guidance.
332 - </p>
333 - </div>
334 - </article>
335 -
336 - <article class="service">
337 - <div class="service-icon" aria-hidden="true">
338 - <i class="fa fa-check-square-o"></i>
339 - </div>
340 - <div class="service-body">
341 - <h4>Validation effort</h4>
342 - <p>
343 - Important spaces and high-value content should be reviewed after migration to catch conversion issues.
344 - </p>
345 - </div>
346 - </article>
347 -
348 - <article class="service">
349 - <div class="service-icon" aria-hidden="true">
350 - <i class="fa fa-clock-o"></i>
351 - </div>
352 - <div class="service-body">
353 - <h4>Cutover planning</h4>
354 - <p>
355 - Timing, source freeze, final migration, redirects and communication should be planned before go-live.
356 - </p>
357 - </div>
358 - </article>
242 + #foreach ($entry in $migrationConsiderationItems)
243 + <article class="service">
244 + <div class="service-icon" aria-hidden="true">
245 + <i class="fa fa-$entry.icon"></i>
246 + </div>
247 + <div class="service-body">
248 + <h4>$entry.title</h4>
249 + <p>$entry.content</p>
250 + </div>
251 + </article>
252 + #end
359 359   </div>
360 360   </div>
361 361   </section>
362 -
363 363   ## RELATED SERVICES
257 + #set ($relatedMigrationServiceItems = [{
258 + 'title': 'XWiki Development & Integrations',
259 + 'url': 'services.xwiki-development-integrations',
260 + 'content': 'Custom applications, workflows, dashboards, integrations and structured knowledge solutions built on top of XWiki.',
261 + 'linkLabel': 'View development services'
262 + },{
263 + 'title': 'XWiki Support & Maintenance',
264 + 'url': 'services.xwiki-maintenance-support',
265 + 'content': 'Ongoing technical care for production environments after the migration is completed.',
266 + 'linkLabel': 'View support services'
267 + }])
364 364   <section class="resource-strip" aria-labelledby="related-title">
365 365   <div class="container">
366 366   <h2 id="related-title">Related XWiki services</h2>
367 -
368 368   <p class="section-intro">
369 369   Migration work often connects with custom development, support and upgrade planning.
370 370   </p>
371 -
372 372   <div class="resource-grid">
373 - <article class="resource-card">
374 - <h4>XWiki Development &amp; Integrations</h4>
375 - <p>
376 - Custom applications, workflows, dashboards, integrations and structured knowledge solutions built on top of XWiki.
377 - </p>
378 - <a href="$xwiki.getURL('services.xwiki-development-integrations')">View development services</a>
379 - </article>
380 -
381 - <article class="resource-card">
382 - <h4>XWiki Support &amp; Maintenance</h4>
383 - <p>
384 - Ongoing technical care for production environments after the migration is completed.
385 - </p>
386 - <a href="$xwiki.getURL('services.xwiki-maintenance-support')">View support services</a>
387 - </article>
275 + #foreach ($entry in $relatedMigrationServiceItems)
276 + <article class="resource-card">
277 + <h4>$entry.title</h4>
278 + <p>$entry.content</p>
279 + <a href="$xwiki.getURL($entry.url)">$entry.linkLabel</a>
280 + </article>
281 + #end
388 388   </div>
389 389   </div>
390 390   </section>
391 -
285 + ## RELATED SERVICES
286 + #set ($relatedUpgradeServiceItems = [{
287 + 'title': 'XWiki Support & Maintenance',
288 + 'url': 'services.xwiki-maintenance-support',
289 + 'content': 'Ongoing technical care for production XWiki environments, including troubleshooting, maintenance planning and upgrade readiness.',
290 + 'linkLabel': 'View support services'
291 + },{
292 + 'title': 'XWiki Security Review',
293 + 'url': 'services.xwiki-security-review',
294 + 'content': 'Security-aware review of XWiki versions, extensions, permissions, authentication and upgrade exposure.',
295 + 'linkLabel': 'View security review'
296 + }])
297 + <section class="resource-strip" aria-labelledby="related-title">
298 + <div class="container">
299 + <h2 id="related-title">Related XWiki services</h2>
300 + <p class="section-intro">
301 + Upgrade work often connects with long-term maintenance, security review and production platform stability.
302 + </p>
303 + <div class="resource-grid">
304 + #foreach ($entry in $relatedUpgradeServiceItems)
305 + <article class="resource-card">
306 + <h4>$entry.title</h4>
307 + <p>$entry.content</p>
308 + <a href="$xwiki.getURL($entry.url)">$entry.linkLabel</a>
309 + </article>
310 + #end
311 + </div>
312 + </div>
313 + </section>
392 392   ## CTA
393 393   <section class="cta-section" aria-labelledby="cta-title">
394 394   <div class="container">
395 395   <div class="cta-panel">
396 396   <h2 id="cta-title">Planning a migration to XWiki?</h2>
397 -
398 398   <p>
399 399   Send a short description of the source system, approximate content volume, export options and the type of
400 400   XWiki structure you want to achieve. A sample export or representative content area is often enough to start.
401 401   </p>
402 -
403 403   <a class="btn btn-primary" href="$xwiki.getURL('contact.WebHome')">Discuss a migration</a>
404 404   </div>
405 405   </div>
406 406   </section>
407 -
408 408  {{/html}}
409 409  {{/velocity}}