Migrating Applications

Reusing components (forms, pages, connections, etc.) of an application is a very common scenario and saves business users and developers a lot of time when designing a mobile app. In Miracle Studio, there is an out-of-the-box feature to migrate apps from one application instance to another.

Benefits of Migrate Feature

Following are some of the benefits of the Migrate feature in Miracle Studio:

Reusing Application Components

Let’s say you have created a number of applications on Miracle mobile platform in the past. While creating a new application, you don’t want to re-create the same pages or forms again. You can use the Migrate feature to copy pages, connections, notifications and application settings across mobile apps.

Isolated Environments

For any business-critical mobile app in an Enterprise environment, it is highly recommended to keep production environment of app completely isolated from the development & testing environments.

Likewise, the development team and business users who validate app functionality would always want to work in isolated instances of apps, so that they may carry on with their activities without disrupting the production applications.

The Migrate feature in Miracle Studio supports this scenario very well. You may create totally independent application environments for development, testing & production, and whenever you want to promote new changes from Development to Staging, or from Staging to Production, you can do it through this one-click migration utility.

Migrating a Mobile Application

In order to migrate an app, we need to have:

Source app: The app version or instance in which we have made changes and now we want to publish this new version to a different instance, e.g. staging or production.

Target app: The app version or instance which is live at the moment on staging or production, and we now want to update this version with new pages, forms and connectors.

Example

For the sake of explanation, we have created a set of apps namely Test, Test2 and Test3, as our environments Development, Staging & Production, respectively. We have added few pages in Test and now we will demonstrate how this app can be migrated from Test to Test2.

By default MiracleStudio considers your currently active app as the Source app. We click on Migrate Apps sub-menu on the left-hand panel and on Migrate Apps page select the target app as Test2. The target app is completely blank at the moment, with no elements in it.

Once you have selected the target app, upon pressing the Show Details button, MiracleStudio will start comparing target app with the source app and after few moments it will present a list of components that can be migrated from Test to Test2.

After making your selections, when you click on Select for Migration, you would encounter certain indicators:

Items that are available in Source app, but do not exist in Target app appear with [ADD] post-fix, i.e. these items will be added to the Target

Items that are completely identical in Source app and Target app appear with [IDENTICAL] post-fix, i.e. on such items there will be no effect of migration.

Items that are available in both app instances, and Source app has a new versions of these items, appear with [UPDATE] post-fix, i.e. such items will be updated in the Target

We can choose which components we want to migrate from Source app to Target app simply by clicking on the check boxes available adjacent to that components. On pressing the Migrate Now button, MiracleStudio will start migrating Source app to Target app. As soon as the migration is completed, a confirmation mark will appear on the screen.

Migration of Parent and Child Pages

When a page that’s not associated with a parent page is migrated, a parent page is created for it. When parent pages are migrated, their child pages do not accompany them.

Automatic Migration of Dependencies

When an item is selected for migration which happens to have dependencies (e.g. Asset as icon for category), the dependencies are automatically marked for migration if not selected.