Upgrading a Corda OS node to Corda Enterprise

A Corda Community Edition node can be upgraded to Corda Enterprise. If the same database is to be reused, the most complicated steps are ensuring custom CorDapps contain Liquibase database management scripts and adding these scripts into the database change log table.

The migration from an H2 database to a 3rd party commercial database, while upgrading to Corda Enteprise, requires a third party tool to migrate data.

To upgrade Corda Community Edition to Corda Enterprise within the same major release version, follow the Corda node upgrade procedure. The database upgrade steps need to be replaced by those specified below, depending if you are reusing an existing database or Migrating from the H2 database to another database vendor.

  • Ensure CorDapps contain Liquibase database management scripts. You can check if the CorDapp JAR contains Liquibase scripts as described in Database update. If the Cordapp stores data in the custom tables (consult with the CorDapp developer/provider) and it doesn’t contain Liquibase scripts, follow the procedure to add the script retrospectively.

  • Generate CorDapp changesets against an empty database.Any custom tables required by CorDapps will have been created manually or by Hibernate upon node startup. Because of this, the database doesn’t contain an entry in the DATABASECHANGELOG table (usually created by the Liquibase runner). This step aims to add the required log as if these tables were created by Liquibase.First, you need to run Corda Database Management Tool to obtain DDL statements created by Liquibase. You should run the tool against an empty database, not the database you are reusing.To run the tool use the following command:

java -jar tools-database-manager-|release|.jar dry-run -b path_to_configuration_directory

The option -b points to the base directory (the directory containing a node.conf file, and the drivers and cordapps subdirectories). The generated script named migrationYYYYMMDDHHMMSS.sql will be present in the current directory. This script contains all of the statements to create the data structures (e.g. tables/indexes) for CorDapps, and inserts to the Liquibase management table DATABASECHANGELOG. For a description of the options, refer to the Corda Database Management Tool manual.

  • Run selected insert statements to update Liquibase database change logIn the generated script, find all inserts into DATABASECHANGELOG table related to your CorDapp, you can search for – Changeset migration/ lines, where references the Liquibase Script file name from the CorDapp. The SQL insert related to a changeset will follow the – Changeset migration/ comment, for example:
-- Changeset migration/yo-schema-v1.changelog-master.sql::initial_schema_for_YoSchemaV1::R3.Corda.Generated
INSERT INTO PUBLIC.DATABASECHANGELOG (ID, AUTHOR, FILENAME, DATEEXECUTED, ORDEREXECUTED, MD5SUM, DESCRIPTION, COMMENTS, EXECTYPE, CONTEXTS, LABELS, LIQUIBASE, DEPLOYMENT_ID) VALUES ('initial_schema_for_YoSchemaV1', 'R3.Corda.Generated', 'migration/yo-schema-v1.changelog-master.sql', NOW(), 74, '7:2d4e1d5d7165a8edc848208d0707eb24', 'sql', '', 'EXECUTED', NULL, NULL, '3.5.3', '2862877878');

Copy selected insert statements and execute them on the database, using the correct schema name.

The procedure for migrating from H2 to a commercial database is as follows:

CorDapps, contracts and states written for Corda 4.x are compatible with Corda Enterprise Edition 4.9, so upgrading existing Corda Community Edition nodes should be a simple case of updating the Corda JAR file. See Upgrading a node for general instructions on upgrading your node. For developer information on recompiling CorDapps against Corda Enterprise, See Upgrading a CorDapp to a newer platform version.

To reuse an existing database, follow the same database instructions as upgrading within the same Corda version.

To migrate from a H2 database to another database, follow the same database instructions as upgrading within the same Corda version.

R3 have trialled the third-party commercial tool Full Convert for migrating from a H2 database to a 3rd party commercial databases. It can be used via the GUI application or from the command-line, however it only runs on Windows: Vista SP2 and later, as well as Windows Server 2008 and later. The tool works by connecting to both databases simultaneously and migrates tables, their data, and other schema objects form one database to the other. It can be used to migrate from a H2 database by connecting to its database file.

Was this page helpful?

Thanks for your feedback!

Chat with us

Chat with us on our #docs channel on slack. You can also join a lot of other slack channels there and have access to 1-on-1 communication with members of the R3 team and the online community.

Propose documentation improvements directly

Help us to improve the docs by contributing directly. It's simple - just fork this repository and raise a PR of your own - R3's Technical Writers will review it and apply the relevant suggestions.

We're sorry this page wasn't helpful. Let us know how we can make it better!

Chat with us

Chat with us on our #docs channel on slack. You can also join a lot of other slack channels there and have access to 1-on-1 communication with members of the R3 team and the online community.

Create an issue

Create a new GitHub issue in this repository - submit technical feedback, draw attention to a potential documentation bug, or share ideas for improvement and general feedback.

Propose documentation improvements directly

Help us to improve the docs by contributing directly. It's simple - just fork this repository and raise a PR of your own - R3's Technical Writers will review it and apply the relevant suggestions.