{"id":202,"date":"2026-10-12T19:11:03","date_gmt":"2026-10-12T19:11:03","guid":{"rendered":"http:\/\/www.scmgalaxy.com\/tutorials\/2010\/03\/17\/upgrading-continuum\/"},"modified":"2026-10-12T19:11:03","modified_gmt":"2026-10-12T19:11:03","slug":"upgrading-continuum","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/blog\/upgrading-continuum\/","title":{"rendered":"Apache Continuum 1.2.x to 1.3.x Upgrade Guide: Backup\/Restore, CLI Mapping, and DB Sequence Fixes"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-4195\" src=\"http:\/\/www.scmgalaxy.com\/tutorials\/wp-content\/uploads\/2010\/03\/continuum.png\" alt=\"continuum-upgrade\" width=\"600\" height=\"400\" srcset=\"https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2010\/03\/continuum.png 600w, https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2010\/03\/continuum-300x200.png 300w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Originally published on 2010-03-17; fully revised and updated.<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This guide covers the legacy upgrade path from <strong>Continuum 1.2.x<\/strong> to the <strong>1.3.x<\/strong> line. It is intended for administrators who need a safe migration of build history and metadata, with explicit steps for export\/import, environment variable changes, and post-import database sequence checks.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What changes in this upgrade path<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">According to the original upgrade notes, two Continuum databases matter during migration: the <strong>builds database<\/strong> and the <strong>users database<\/strong>.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>From 1.2.x to 1.3.2, the users database is described as unchanged, so it can be reused.<\/li><li>The builds database has model changes and should be migrated through the Data Management CLI export\/import process.<\/li><li>If you used <code>APP_BASE<\/code> in 1.2, rename it to <code>CONTINUUM_BASE<\/code> in 1.3.<\/li><li>For 1.3.4 and above, Jetty was upgraded; if base and install directories are separated, update library entries in <code>$CONTINUUM_BASE\/conf\/wrapper.conf<\/code> from the new distribution.<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Upgrade workflow<\/h2>\n\n\n\n<pre class=\"mermaid\">\nflowchart TD\n    A[Stop old Continuum] --> B[Export builds data to XML]\n    B --> C[Start new Continuum once to create schema]\n    C --> D[Stop new Continuum]\n    D --> E[Import builds XML into new schema]\n    E --> F{Import source is 1.3.1}\n    F -- yes --> G[Import without strict]\n    F -- no --> H[Import with strict]\n    G --> I[Verify and fix SEQUENCE_TABLE NEXT_VAL]\n    H --> I[Verify and fix SEQUENCE_TABLE NEXT_VAL]\n    I --> J[Start new Continuum and validate]\n<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Pick the correct Data Management CLI version<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">You need one CLI version suitable for exporting from the old schema and one for importing into the new schema.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>CLI JAR version<\/th><th>Use it for<\/th><th>Download URL<\/th><\/tr><\/thead><tbody><tr><td>1.3.2<\/td><td>Import into Continuum 1.3.2-era schema<\/td><td><a href=\"http:\/\/repo1.maven.org\/maven2\/org\/apache\/continuum\/data-management-cli\/1.3.2\/data-management-cli-1.3.2-app.jar\">data-management-cli-1.3.2-app.jar<\/a><\/td><\/tr><tr><td>1.2.3.1<\/td><td>Export from 1.2.2 or 1.2.3 (workaround for bug in 1.2\/1.2.2\/1.2.3 tools)<\/td><td><a href=\"http:\/\/repo1.maven.org\/maven2\/org\/apache\/continuum\/data-management-cli\/1.2.3.1\/data-management-cli-1.2.3.1-app.jar\">data-management-cli-1.2.3.1-app.jar<\/a><\/td><\/tr><tr><td>1.1<\/td><td>Export from 1.2<\/td><td><a href=\"http:\/\/repo1.maven.org\/maven2\/org\/apache\/maven\/continuum\/data-management-cli\/1.1\/data-management-cli-1.1-app.jar\">data-management-cli-1.1-app.jar<\/a><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Export builds data from the old Continuum instance<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>Stop the old Continuum instance.<\/li><li>Run the export command to produce <code>builds.xml<\/code> in a backup directory.<\/li><\/ul>\n\n\n<pre class=\"wp-block-code\"><span><code class=\"hljs language-bash\">java -Xmx512m -jar data-management-cli-1.2.x-app.jar -buildsJdbcUrl jdbc:derby:${old.continuum.home}\/data\/databases\/continuum -mode EXPORT -directory backups<\/code><\/span><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Replace the JAR filename with the exact exporter version you downloaded (for example, 1.2.3.1 or 1.1 as mapped above).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Import builds data into the new Continuum instance<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>Start the new Continuum version once so it creates the target schema.<\/li><li>Do not configure it yet; stop it again.<\/li><li>Run the import command against the new builds database.<\/li><\/ul>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript language-bash\">java -Xmx512m -jar data-management-cli<span class=\"hljs-number\">-1.3<\/span><span class=\"hljs-number\">.2<\/span>-app.jar -buildsJdbcUrl jdbc:derby:${<span class=\"hljs-keyword\">new<\/span>.continuum.home}\/data\/databases\/continuum -mode IMPORT -directory backups -strict<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\"><strong>Note:<\/strong> If importing from 1.3.1 to 1.3.x, remove <code>-strict<\/code> to ignore unrecognized tags caused by model differences.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Verify and repair SEQUENCE_TABLE values<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Before first startup after import, connect with a SQL client such as <a href=\"http:\/\/squirrel-sql.sourceforge.net\/\">SQuirreL SQL<\/a> and confirm that every <code>NEXT_VAL<\/code> in <code>SEQUENCE_TABLE<\/code> is greater than the maximum ID in its corresponding table.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Example SQL from the original guide:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript language-sql\">UPDATE SEQUENCE_TABLE <span class=\"hljs-keyword\">set<\/span> NEXT_VAL = (select max(systemconfiguration_id)+1 from SYSTEMCONFIGURATION) WHERE SEQUENCE_NAME='org.apache.maven.continuum.model.system.SystemConfiguration';\nUPDATE SEQUENCE_TABLE <span class=\"hljs-keyword\">set<\/span> NEXT_VAL = (select max(id)+1 from BUILDQUEUE) WHERE SEQUENCE_NAME='org.apache.maven.continuum.model.project.BuildQueue';\nUPDATE SEQUENCE_TABLE <span class=\"hljs-keyword\">set<\/span> NEXT_VAL = (select max(id)+1 from SCHEDULE) WHERE SEQUENCE_NAME='org.apache.maven.continuum.model.project.Schedule';\nUPDATE SEQUENCE_TABLE <span class=\"hljs-keyword\">set<\/span> NEXT_VAL = (select max(id)+1 from BUILDDEFINITION) WHERE SEQUENCE_NAME='org.apache.maven.continuum.model.project.BuildDefinition';\nUPDATE SEQUENCE_TABLE <span class=\"hljs-keyword\">set<\/span> NEXT_VAL = (select max(id)+1 from LOCALREPOSITORY) WHERE SEQUENCE_NAME='org.apache.continuum.model.repository.LocalRepository';\nUPDATE SEQUENCE_TABLE <span class=\"hljs-keyword\">set<\/span> NEXT_VAL = (select max(id)+1 from PROJECTGROUP) WHERE SEQUENCE_NAME='org.apache.maven.continuum.model.project.ProjectGroup';\nUPDATE SEQUENCE_TABLE <span class=\"hljs-keyword\">set<\/span> NEXT_VAL = (select max(scmresult_id)+1 from SCMRESULT) WHERE SEQUENCE_NAME='org.apache.maven.continuum.model.scm.ScmResult';\nUPDATE SEQUENCE_TABLE <span class=\"hljs-keyword\">set<\/span> NEXT_VAL = (select max(projectdependency_id)+1 from PROJECTDEPENDENCY) WHERE SEQUENCE_NAME='org.apache.maven.continuum.model.project.ProjectDependency';\nUPDATE SEQUENCE_TABLE <span class=\"hljs-keyword\">set<\/span> NEXT_VAL = (select max(id)+1 from BUILDDEFINITIONTEMPLATE) WHERE SEQUENCE_NAME='org.apache.maven.continuum.model.project.BuildDefinitionTemplate';\nUPDATE SEQUENCE_TABLE <span class=\"hljs-keyword\">set<\/span> NEXT_VAL = (select max(id)+1 from ABSTRACTPURGECONFIGURATION) WHERE SEQUENCE_NAME='org.apache.continuum.model.repository.AbstractPurgeConfiguration';<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Final startup and validation<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>Start the new Continuum instance.<\/li><li>Confirm user authentication against the existing users database.<\/li><li>Run a sample build and verify new build records are written correctly.<\/li><li>If IDs collide or inserts fail, re-check <code>SEQUENCE_TABLE<\/code> values.<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Common pitfalls<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>Using the wrong export CLI version for 1.2.x source databases.<\/li><li>Forgetting to rename <code>APP_BASE<\/code> to <code>CONTINUUM_BASE<\/code>.<\/li><li>Skipping <code>wrapper.conf<\/code> library updates when moving to 1.3.4+ with separate base\/install directories.<\/li><li>Importing with <code>-strict<\/code> when source data contains tags not recognized by target schema.<\/li><li>Starting Continuum before fixing sequence values after import.<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Reference: <a href=\"http:\/\/continuum.apache.org\/docs\/1.3.6\/installation\/upgrade.html\">http:\/\/continuum.apache.org\/docs\/1.3.6\/installation\/upgrade.html<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>A practical upgrade path for Apache Continuum 1.2.x to 1.3.x using the Data Management CLI. Includes version-to-version JAR selection, export\/import commands, and required SEQUENCE_TABLE corrections.<\/p>\n","protected":false},"author":1,"featured_media":4195,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_joinchat":[],"footnotes":""},"categories":[2],"tags":[3665,3676,3677,3678,3674,3681,3680,3113,3682,3679,3553,593,1097,284,226,3675],"class_list":["post-202","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorised","tag-continuum","tag-continuum-upgradation","tag-continuum-upgradation-guide","tag-continuum-upgradation-tutorial","tag-continuum-upgrade","tag-continuum-upgrade-help","tag-continuum-upgrade-reference","tag-how-to","tag-how-to-upgrade-new-verrsion-of-continuum","tag-instruction-for-continuum-upgrade","tag-procedure","tag-process","tag-tips","tag-update","tag-upgrade","tag-upgrade-continuum-from-1-2-x-to-1-3-3"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/202","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/comments?post=202"}],"version-history":[{"count":4,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/202\/revisions"}],"predecessor-version":[{"id":79032,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/202\/revisions\/79032"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media\/4195"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media?parent=202"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/categories?post=202"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/tags?post=202"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}