Update the repository
When you have migrated your configuration to the new IDM installation, you need to handle the data that is stored in your repository. There are two options to update a repository:
-
Create a new IDM 7.4 repository, then migrate your data to the new repository.
When you have upgraded the repository, or created a new repository, start the IDM server and test that all your scripts are working as expected, before migrating your data.
Upgrade an existing repository
Upgrading an existing repository means that you do not need to migrate data. However, you must run a series of scripts that modify the repository, to use the new features in IDM 7.4.
Because the repository upgrade scripts are incremental, you must review each major version upgrade after your current release. For example, when upgrading from 6.5.x to 7.4.x, review the upgrade process and scripts for 7.0.x, 7.1.x, 7.2.x, 7.3.x, and 7.4.x (this version). Repository upgrade procedures: |
Prepare an existing repository for IDM 7.4 as follows:
-
Shut down IDM, if it is running.
-
Clear all
configobjects
related tables. For example, in MySQL run:DELETE FROM openidm.configobjects; DELETE FROM openidm.configobjectproperties;
-
If you are using workflow, you must run the Flowable upgrade scripts for your database type. These upgrade scripts are incremental and must be run in order, starting with the correct script based on your current Flowable version.
-
To determine your current Flowable version, check the
/path/to/openidm/bundle/flowable-engine-versionNumber.jar
file in your old IDM installation. -
Run the upgrade scripts from
/path/to/openidm/db/database-type/scripts/updates/
in order, starting with your current flowable version:-
flowable.database-type.upgradestep.6.6.0.to.6.7.0.all.sql
-
flowable.database-type.upgradestep.6.7.0.to.6.7.1.all.sql
-
flowable.database-type.upgradestep.6.7.1.to.6.7.2.all.sql
-
flowable.database-type.upgradestep.6.7.2.to.6.8.0.all.sql
-
-
-
Launch IDM and run the following Groovy script to clear the
reconprogressstate
data in your repository:def result = openidm.query( "repo/reconprogressstate", [ "_queryFilter" : "true", "_fields" : "_id" ]).result; for ( item in result ) { openidm.delete("repo/reconprogressstate/" + item["_id"], null); } return result.size() + " reconprogressstate records deleted";
This script works for all repository types and can be sent as a REST call. For example:
curl \ --header "X-OpenIDM-Username: openidm-admin" \ --header "X-OpenIDM-Password: openidm-admin" \ --header "Content-Type: application/json" \ --request POST \ --data '{ "type":"groovy", "source":"def result = openidm.query(\"repo/reconprogressstate\", [ \"_queryFilter\" : \"true\", \"_fields\" : \"_id\" ]).result; for ( item in result ) { openidm.delete(\"repo/reconprogressstate/\" + item[\"_id\"], null); }; return result.size() + \" reconprogressstate records deleted\";" }' \ "http://localhost:8080/openidm/script?_action=eval" "1 reconprogressstate records deleted"
-
Verify that all scripts and functions behave as expected.
Create a new repository
-
Set up a new repository, following the steps in Select a repository. A new repository is already configured for all the new capabilities in IDM, but does require migrating existing data to that repository.
If you create a new repository, you must still update your configuration files to use the new features.
-
After you have set up the new repository, migrate your data to that repository.