SoulMigration - Seamless Application State Migration

Today, mobile users frequently switch between heterogeneous devices depending on their location, preferences, and current needs. Each time a user switches to another device the working context is lost and has to be manually reestablished on the new device. With the growing number of devices per user and an increasing need for mobility this becomes a cumbersome task.

SoulMigration is an architecture for seamless cross-application migration between heterogeneous devices. Our architecture automates and simplifies the migration process by providing the means to extract the current state information of an application, discover possible target devices, migrate the state to a target device, and finally reestablish the previous working state. By this it gives the users the impression of a seamless working environment.


Our architecture consists of two parts. On the one hand we have the framework, which offers the functionality for capturing and resuming states, as well as user interaction patterns, and must be included in any application using SoulMigration. The Migration Manager, on the other hand, is a separate piece of software running on every device and handling device discovery and connections, as well as (de-)serialization, transfer, and management of application states and their propagation to a suitable target application.

Abstract Application State Definition

In our point of view the current state of an application comprises not only the data users work on, i.e. documents, files, the Email we are writing or the current score in a game, but also application settings regarding the layout, optional functions like spellchecking enabled or not, as well as history functions such as a undo/redo button. We therefore capture the current application state on application level during runtime whenever the migration process is initiated.

Due to the heterogeneity of devices and platforms we cannot presume that a specific application is available on each device. But typically several different implementations exist for applications like text editors, web browsers, audio players, etc. for all prevalent platforms, e.g. iOS, Android, Linux, Windows, etc. We therefore focus our work on such functionally similar applications which offer the same kind of service to the user.

We developed an abstract application state definition, which describes the current state of an application in an application independent way. This definition holds key-value-pairs of mandatory and optional features of an application along with type information of each feature and a semantical description. 
We introduce a semi-hierarchical structure for state definitions of functionally similar applications in order to support each application individually rather than dictating one overall state definition. In this semi-hierarchical structure an existing state definition can be extended only in the following way:

  • previously defined features cannot be redefined, instead a new feature has to be added
  • features that are previously marked as mandatory have to remain mandatory
  • features that are previously marked as optional can be set to be mandatory

The following syntax diagram describes our abstract application state definition:

We will provide code generation for iOS and Android from abstract application state definitions here soon.


Sebastian Jansen, Klaus Wehrle

Helge Reelfs, Jan Rüth, Christopher Blum, Marc Wu, Peter Hansen

- Impressum -