Data migration framework

Last modified by Eduard Moraru on 2022/02/25 09:25



Documents stored in XWiki can contain structured data, in the form of XObjects. The structure of these XObjects are defined by XClasses, that can also be created in XWiki documents. Learn more about how XWiki manages XClasses and XObjects here.

Most of the application that we create inside XWiki depends on this model, as it is really easy to access and edit (through a simple page edition). However, once a data model (through XClasses) is defined by an application, it is hard to rework it. On the contrary to databases where it is possible to create migration scripts, XWiki does not provide a migration framework in its core.

Technical structure

The goal of this project is to make improvements to an already existing migration framework (see the documentation and the code). The existing framework can be divided in three components :

  • The core of the framework : its APIs and its main components
  • Migrators : we define a migrator as "something that will execute a migration in the wiki". A migrator could migrate XClasses from one model to another (as explained above), migrate a document content to another document, etc ... the idea is also to help application developers creating their own migrators specific to their use case.
  • The development toolkit : a set of scripts and services that can help an XWiki application developer creating new migrations for his application.


As part of this project, you will contribute in the following :

  • Creating new migrators in the framework itself
  • Make sure that migrations can be executed when upgrading an extension
  • Improve the development toolkit of the migrator to help application developers create new migrations
  • Improve the testing strategy of the whole framework


A good knowledge of the Java language is needed along with some experience in development in general. You don't need to fully understand the complete structure of XWiki before starting this project.

Other resources





Get Connected