A command line interface to migrate:
- content saved in an old version of Atoti UI, making it compatible with newer versions.
- Atoti Jupyter notebooks saved in an old version of Atoti, making them compatible with newer versions.
You need NodeJS to run it.
Create a folder in your workspace. Here, we call it "migration". Navigate to it.
mkdir migration
cd migration
The migration CLI requires two files:
- the file to migrate: it can be the server content stored in a JSON file, content.json or an Atoti Jupyter notebook, notebook.ipynb.
- a JSON file with the Atoti servers' information: servers.json
Let's create these files.
The content to migrate can be downloaded as a JSON file from Atoti Admin UI. If you are used to accessing Atoti UI at https://my-server.com/ui/index.html
, then you should be able to access Atoti Admin UI at https://my-server.com/admin/ui/index.html
.
ROLE_CS_ROOT
.
Right-click at the root of the file tree, and click Export. This will download a file called content.json. Move this file into your migration
folder.
pom.xml
.
💡 You can also import/export programatically. See the dedicated documentation for more details.
Create a file called servers.json
.
Copy and paste the snippet below into this file. It is not a valid JSON object. This is intended: we must replace a few things.
{
"my-server": {
"url": "https://my-server.com",
"dataModel": {}
}
}
💡 If you use Atoti UI to connect to several Atoti servers, then add an entry for each of them.
Replace "https://my-server.com"
by the URL of your Atoti server.
Choose a key to identify this server and replace "my-server"
by it. See the Atoti UI tutorial for more details about server keys.
Download the data model from your Atoti server. The URL of the relevant REST service ends with "discovery". You can find the documentation for this REST service here.
For instance, considering the Atoti server you used while going through the tutorial:
- it is deployed at https://activeui-tutorial-server.activeviam.com:9090/pivot
- its
discovery
service is accessible at https://activeui-tutorial-server.activeviam.com:9090/pivot/rest/v5/cube/discovery
The server response looks like this:
{
"status": "success",
"data": {
"catalogs": [...],
"contextValues": [...]
}
}
Copy the catalogs
and contextValues
and paste them into dataModel
in the servers.json
file. The rest of the response does not matter.
As an example, this would be the servers.json file if we were migrating the Atoti UI tutorial server. You can refer to it in order to make sure that your own servers.json
has the correct structure, but do not use this example file to run your migration: it would not work.
"contentServerVersion"
attribute at the root of your servers.json
file to that version:
{
"contentServerVersion": "5.10.12",
"my-server": {
"url": "https://my-server.com",
"dataModel": {}
}
}
At this stage, your migration
folder looks like this:
- content.json
- servers.json
Open a terminal in it and run the command below after adapting the --from-version
and --to-version
arguments as needed:
npx -- activeui-migration -i content.json -o migrated-content.json -s servers.json --from-version 4.3 --to-version 5.1
This command generates a file named migrated-content.json
in the same folder. It contains the migrated content, ready to be used in the target version of Atoti UI.
The CLI offers several options. You can see them all by running:
npx -- activeui-migration --help
In particular:
- The
--debug
and--stack
respectively allow for an error report generation and the stack of those errors. This is useful to understand and address any errors that may occur during the migration. - The
--remove-widgets
option to remove all widgets with the given keys during the migration. For example, suppose you have 200 Atoti UI 4 bookmarks in which you use Page Filters and/or Page Context Values. These plugins are no longer supported in Atoti UI 5 as it was deemed a better user experience to remove them altogether. If you want to follow this UX and remove these widgets programmatically, you can run the migration CLI with the extra option:
npx -- activeui-migration -i content.json -o migrated-content.json -s servers.json --from-version 4.3 --to-version 5.1 --remove-widgets "filters" "context-values"
Use Atoti Admin UI again, this time to import the migrated content.
Then follow the steps to run Atoti UI.
Finally open your dashboards, widgets, filters, ... Make sure they work as expected.
To migrate a Jupyter notebook, two files are necessary:
- notebook.ipynb, the notebook to migrate. This file must have the
.ipynb
extension. - servers.json, the JSON file containing the server information.
To get the servers information, follow the download the servers information section instructions.
Now that your migration folder contains all the required files, you can run the following command:
npx -- activeui-migration -i notebook.ipynb -o migrated-notebook.ipynb -s servers.json --from-version 0.7 --to-version 0.8
This command generates a file named migrated-notebook.json
in the same folder. It contains the migrated notebook with all its migrated widgets, ready to be used with the Atoti version you migrated to. You can see the run the CLI section to get more details about the command line and its options.
If you are migrating a project with custom Atoti UI extensions, then you must also update the code of these extensions. Learn how in our dedicated documentation pages:
- Migrating from Atoti UI 4 to 5.
- Migrating from Atoti UI 5.0 to 5.1.
This paragraph will help you if you maintain an Atoti UI extension, decided to change the state it relies on and are looking to migrate some saved content so that it works with the new version of your extension.
atoti-ui-migration
is an open source repository.
If you need to add/change migration logic, you can clone the repository and adapt the code as you please.
To run the CLI with your custom code, you must install and build the package yourself first.
Since it depends on private @activeviam
packages, you must login to ActiveViam's Artifactory registry.
To do so, run the following command where {username}
and {password}
must be replaced with your ActiveViam credentials:
curl -u '{username}:{password}' https://activeviam.jfrog.io/artifactory/api/npm/activeui-npm-release/auth/activeviam >> ~/.npmrc
With Windows cmd:
curl -u "{username}:{password}" https://activeviam.jfrog.io/artifactory/api/npm/activeui-npm-release/auth/activeviam >> %USERPROFILE%\.npmrc
After running this command, your .npmrc file should include the following lines:
@activeviam:registry=https://activeviam.jfrog.io/artifactory/api/npm/activeui-npm-release/
//activeviam.jfrog.io/artifactory/api/npm/activeui-npm-release/:_password={base64_encoded_password}
//activeviam.jfrog.io/artifactory/api/npm/activeui-npm-release/:username={username}
//activeviam.jfrog.io/artifactory/api/npm/activeui-npm-release/:email={email}
//activeviam.jfrog.io/artifactory/api/npm/activeui-npm-release/:always-auth=true