Manual Migration from Academus to Toro Portal

Knowledge Base: Academus 2.0, Academus 2.1
Updated: May 29, 2008

How can I MANUALLY migrate from Academus 2.x to uPortal 2.6.1-GA and the open source Toro components?

Manual Migration Procedure

This describes what activities the migration tool performs in the event you need to execute them manually.

Extract previous install settings

Create a properties file (previous-settings.properties) that contains these properties and previous settings as specified in previous settings.

Backup old Tomcat Directory

Rename INSTALLDIR/unicon/Academus/portal-tomcat-a to INSTALLDIR/unicon/Academus/portal-tomcat-a.old

Install Pre-installed Tomcat/Toro bundle

1) Locate and unzip the portal-tomcat-a.zip file that is located in the
toro-migrator-1.0.0-rc-1.jar file.  Unzip into the directory INSTALLDIR/unicon/Academus.

2) Copy INSTALLDIR/unicon/Academus/portal-tomcat-a.old/conf/server.xml to
INSTALLDIR/unicon/Academus/portal-tomcat-a/conf/server.xml

3) If migrating from Academus 2.0, remove the following elements from
INSTALLDIR/unicon/Academus/portal-tomcat-a/conf/server.xml
    /Server/GlobalNamingResources/Resource[@name='jdbc/PortalDb']
    /Server/GlobalNamingResources/ResourceParams[@name='jdbc/PortalDb']
    /Server/Service/Engine/Host/Context[@path='/portal']
    /Server/Service/Engine/Host/Context[@path='/AcademusApps']
    /Server/Service/Engine/Host/Context[@path='/blojsom']

4) Copy the following from INSTALLDIR/unicon/Academus/portal-tomcat-a.old to
INSTALLDIR/unicon/Academus/portal-tomcat-a
    webapps/portal/resources
    webapps/portal/html/help
    webapps/portal/WEB-INF/classes/net/unicon/portal/layout
    webapps/portal/media/org/jasig/portal/layout/AL_TabColumn
    webapps/portal/media/net/unicon/academusTheme/academus
    webapps/portal/WEB-INF/classes/org/jasig/portal/layout/AL_TabColumn

5) If a windows installation, copy the following from
INSTALLDIR/unicon/Academus/portal-tomcat-a.old to
INSTALLDIR/unicon/Academus/portal-tomcat-a
    jakarta
    lib
    conf/Jakarta_ISAPI.reg
    conf/wrapper.conf
    conf/workers.properties
    conf/uriworkermap.properties
    bin/wrapper.exe

Migrating Previous Portlet Configurations

Copy INSTALLDIR/unicon/Academus/portal-tomcat-a.old/webapps/AcademusApps/WEB-INF/classes/config/briefcase*
to INSTALLDIR/unicon/Academus/portal-tomcat-a/webapps/toro-briefcase-portlet/WEB-INF/classes/config

Copy INSTALLDIR/unicon/Academus/portal-tomcat-a.old/webapps/AcademusApps/WEB-INF/classes/config/content* 
to INSTALLDIR/unicon/Academus/portal-tomcat-a/webapps/toro-web-content-portlet/WEB-INF/classes/config

Copy INSTALLDIR/unicon/Academus/portal-tomcat-a.old/webapps/AcademusApps/WEB-INF/classes/config/downloadservice.properties
to INSTALLDIR/unicon/Academus/portal-tomcat-a/webapps/toro-messaging-portlet/WEB-INF/classes/config

Copy INSTALLDIR/unicon/Academus/portal-tomcat-a.old/webapps/AcademusApps/WEB-INF/classes/config/downloadservice.properties
to INSTALLDIR/unicon/Academus/portal-tomcat-a/webapps/toro-portlets-common/WEB-INF/classes/config

Copy INSTALLDIR/unicon/Academus/portal-tomcat-a.old/webapps/AcademusApps/WEB-INF/classes/config/encryption.xml
to INSTALLDIR/unicon/Academus/portal-tomcat-a/webapps/toro-briefcase-portlet/WEB-INF/classes/config

Copy INSTALLDIR/unicon/Academus/portal-tomcat-a.old/webapps/AcademusApps/WEB-INF/classes/config/encryption.xml
to INSTALLDIR/unicon/Academus/portal-tomcat-a/webapps/toro-gateway-portlet/WEB-INF/classes/config

Copy INSTALLDIR/unicon/Academus/portal-tomcat-a.old/webapps/AcademusApps/WEB-INF/classes/config/encryption.xml
to INSTALLDIR/unicon/Academus/portal-tomcat-a/webapps/toro-portlets-common/WEB-INF/classes/config

Copy INSTALLDIR/unicon/Academus/portal-tomcat-a.old/webapps/AcademusApps/WEB-INF/classes/config/messaging*
to INSTALLDIR/unicon/Academus/portal-tomcat-a/webapps/toro-messaging-portlet/WEB-INF/classes/config

Copy INSTALLDIR/unicon/Academus/portal-tomcat-a.old/webapps/AcademusApps/WEB-INF/classes/config/messaging*
to INSTALLDIR/unicon/Academus/portal-tomcat-a/webapps/toro-portlets-common/WEB-INF/classes/config

Copy INSTALLDIR/unicon/Academus/portal-tomcat-a.old/webapps/AcademusApps/WEB-INF/classes/config/permissions*
to INSTALLDIR/unicon/Academus/portal-tomcat-a/webapps/toro-permissions-portlet/WEB-INF/classes/config

Copy INSTALLDIR/unicon/Academus/portal-tomcat-a.old/webapps/AcademusApps/WEB-INF/classes/config/xhtmlfilter.properties
to INSTALLDIR/unicon/Academus/portal-tomcat-a/webapps/toro-web-content-portlet/WEB-INF/classes/config

Copy INSTALLDIR/unicon/Academus/portal-tomcat-a.old/webapps/blojsom
to INSTALLDIR/unicon/Academus/portal-tomcat-a/webapps/toro-blojsom

Migrating Gateway Portlets

For each //param-value[text()='net.unicon.academus.apps.gateway.GatewayPortlet'] node in INSTALLDIR/unicon/Academus/portal-tomcat-a.old/webapps/AcademusApps/WEB-INF/web.xml, a servlet and servlet mapping needs to be added to INSTALLDIR/unicon/Academus/portal-tomcat-a/webapps/toro-gateway-portlet/WEB-INF/web.xml:

Get the SERVLET_NAME from servlet-name
Get the PORTLET_GUID from init-param/param-name[text()='portlet-guid']/../param-value

Then add these elements to web.xml in their appropriate positions:

<servlet>
    <servlet-name>SERVLET_NAME</servlet-name>
    <display-name>SERVLET_NAME Wrapper</display-name>
    <description>Automated generated Portlet Wrapper</description>
    <servlet-class>org.jasig.portal.container.PortletServlet</servlet-class>
    <init-param>
        <param-name>portlet-class</param-name>
        <param-value>net.unicon.academus.apps.gateway.GatewayPortlet</param-value>
    </init-param>
    <init-param>
        <param-name>portlet-guid</param-name>
        <param-value>toro-gateway-portlet.SERVLET_NAME</param-value>
    </init-param>
</servlet>

<servlet-mapping>
    <servlet-name>SERVLET_NAME</servlet-name>
    <url-pattern>/SERVLET_NAME/*</url-pattern>
</servlet-mapping>


Copy over the gateway portlet configurations. For each configPath(CONFIG_PATH) init-param value in INSTALLDIR/unicon/Academus/portal-tomcat-a.old/webapps/AcademusApps/WEB-INF/web.xml:

copy INSTALLDIR/unicon/Academus/portal-tomcat-a.old/webapps/AcademusApps/CONFIG_PATH to
INSTALLDIR/unicon/Academus/portal-tomcat-a/webapps/toro-gateway-portlet/CONFIG_PATH

Update each Gateway Portlet guid in the database from PORTLET_GUID to toro-gateway-portlet.SERVLET_NAME:

update up_channel_param set chan_parm_val='toro-gateway-portlet.SERVLET_NAME'
where chan_parm_nm='portletDefinitionId' and chan_parm_val = 'PORTLET_GUID'");

Migration Permissions Portlet Settings

For each IMPORT_SOURCE (//*[name()='portlet-access']/*[name()='import']/@src) in INSTALLDIR/unicon/Academus/portal-tomcat-a.old/webapps/AcademusApps/WEB-INF/classes/config/permissions-portlet.xml:

Copy INSTALLDIR/unicon/Academus/portal-tomcat-a.old/webapps/AcademusApps/WEB-INF/classes/IMPORT_SOURCE
to INSTALLDIR/unicon/Academus/portal-tomcat-a/webapps/toro-permissions-portlet/WEB-INF/classes/IMPORT_SOURCE

Migrate Blojsom

For each INSTALLDIR/unicon/Academus/portal-tomcat-a/webapps/toro-blojsom/WEB-INF/*/blog.properties:

Replace blojsom/ with toro-blojsom/ in blog-base-url and blog-url properties

In INSTALLDIR/unicon/Academus/portal-tomcat-a/webapps/toro-blojsom/WEB-INF/academus_config.xml:

Replace java:comp/env/jdbc/blojsom with java:comp/env/jdbc/PortalDb

Migration Channel Configurations

Copy the following files from INSTALLDIR/unicon/Academus/portal-tomcat-a.old/webapps/portal/WEB-INF/classes/properties to INSTALLDIR/unicon/Academus/portal-tomcat-a/webapps/portal/WEB-INF/classes/properties:

AcademusImportService.properties
jms-content.properties
jms_cache.properties
academus-apps-factory.properties
rad.properties
academus-apps-lms.properties
rmi.properties
academus-apps.properties
session-policy
academus-lms.properties
unicon-service.properties
academus-portal.properties
velocity.properties
common-factory.properties
version.properties
factoryImpl.properties

Migration uPortal Settings

Copy the following files from INSTALLDIR/unicon/Academus/portal-tomcat-a.old/webapps/portal/WEB-INF/classes/properties to /unicon/Academus/portal-tomcat-a/webapps/portal/WEB-INF/classes/properties:

EntityPropertyRegistry.xml
Logger.properties
browser.mappings
drop_group_entity.xml
global_dictionary.properties
global_dictionary_ja_JP.properties
media.properties
mime.properties
portal.properties
proxyportlet.xml
rdbm.properties
resin.conf
sample-jaas.conf
security.properties
serializer.properties
services.xml
uPortal.xml
worker.properties
PermissionsManagerRegistry.xml
groups
container

Copy the following files from INSTALLDIR/unicon/Academus/portal-tomcat-a.old/webapps/portal to /unicon/Academus/portal-tomcat-a/webapps/portal:

changepassword.jsp
cscr.jsp
hidden.html
index.html
index_option2.html
index_option3.html
main.html
Copy INSTALLDIR/unicon/Academus/portal-tomcat-a.old/webapps/portal/WEB-INF/classes/log4j.properties 
to INSTALLDIR/unicon/Academus/portal-tomcat-a/webapps/portal/WEB-INF/classes/log4j.properties

Append the following to INSTALLDIR/unicon/Academus/portal-tomcat-a/webapps/portal/WEB-INF/classes/properties/browser.mappings:

# Google probing bot
Googlebot/2.*=1

Set the following properties in INSTALLDIR/unicon/Academus/portal-tomcat-a/webapps/portal/WEB-INF/classes/properties/academus-portal.properties:

net.unicon.portal.cscr.useCSCR=false

Set the following properties in INSTALLDIR/unicon/Academus/portal-tomcat-a/webapps/portal/WEB-INF/classes/properties/rdbm.properties:

poolPreparedStatements=true
jdbcUsePool=true

Set the following properties in INSTALLDIR/unicon/Academus/portal-tomcat-a/webapps/portal/WEB-INF/classes/properties/portal.properties:

org.jasig.portal.services.HttpClientManager.poolSize=20
org.jasig.portal.PortalSessionManager.unauthenticatedUserSessionTimeout=0
org.jasig.portal.channels.portlet.CPortletAdapter.uniqueContainerName=Pluto-in-uPortal
org.jasig.portal.layout.UserLayoutStoreFactory.implementation=org.jasig.portal.layout.dlm.RDBMDistributedLayoutStore
org.jasig.portal.layout.UserLayoutManagerFactory.coreImplementation=org.jasig.portal.layout.dlm.DistributedLayoutManager
org.jasig.portal.RDBMServices.PortalDatasourceJndiName=PortalDb
org.jasig.portal.services.HttpClientManager.connectionTimeout=5000
org.jasig.portal.channels.adminnav.AdminNavigation.implementation=org.jasig.portal.channels.adminnav.provider.ListModel
org.jasig.portal.layout.restrictions.IRestrictionManager.implementation=org.jasig.portal.layout.restrictions.alm.ALRestrictionManager
org.jasig.portal.RDBMServices.jndiRetryDelay=60000
org.jasig.portal.PooledDataSourceFactory.implementation=org.jasig.portal.rdbm.pool.DBCPDataSourceFactory
org.jasig.portal.RDBMServices.baseJndiContext=java:comp/env/jdbc
org.jasig.portal.services.HttpClientManager.hostConnections=2

Remove the following properties from INSTALLDIR/unicon/Academus/portal-tomcat-a/webapps/portal/WEB-INF/classes/properties/portal.properties:

org.jasig.portal.services.stats.StatsRecorderSettings.recordChannelInstantiated
org.jasig.portal.services.stats.StatsRecorderSettings.recordChannelMovedInLayout
org.jasig.portal.services.stats.StatsRecorderSettings.recordFolderRemovedFromLayout
org.jasig.portal.services.stats.StatsRecorderSettings.recordChannelDefinitionRemoved
org.jasig.portal.services.stats.StatsRecorderSettings.recordFolderMovedInLayout
org.jasig.portal.services.StatsRecorder.threadPool_maxThreads
org.jasig.portal.services.stats.StatsRecorderSettings.recordSessionCreated
org.jasig.portal.services.stats.StatsRecorderSettings.recordLogout
org.jasig.portal.services.stats.StatsRecorderSettings.recordLogin
org.jasig.portal.services.stats.StatsRecorderSettings.recordChannelRemovedFromLayout
org.jasig.portal.services.StatsRecorder.threadPool_threadPriority
org.jasig.portal.services.stats.StatsRecorderSettings.recordChannelRendered
org.jasig.portal.services.stats.StatsRecorderSettings.recordFolderAddedToLayout
org.jasig.portal.services.stats.StatsRecorderSettings.recordFolderUpdatedInLayout
org.jasig.portal.services.stats.StatsRecorderSettings.recordChannelAddedToLayout
org.jasig.portal.services.stats.StatsRecorderFactory.implementation
org.jasig.portal.services.StatsRecorder.threadPool_initialThreads
org.jasig.portal.UserLayoutStoreFactory.implementation
org.jasig.portal.RDBMServices.usePreparedStatements
org.jasig.portal.services.stats.StatsRecorderSettings.recordSessionDestroyed
org.jasig.portal.services.stats.StatsRecorderSettings.recordChannelUpdatedInLayout
org.jasig.portal.services.stats.StatsRecorderSettings.recordChannelDefinitionPublished
org.jasig.portal.services.stats.StatsRecorderSettings.recordChannelTargeted
org.jasig.portal.services.stats.StatsRecorderSettings.recordChannelDefinitionModified

Apache Migrations

Add the following JkMount directives to the INSTALLDIR/unicon/Academus/portal-apache/config/httpd.conf file:

JkMount /toro-blojsom/blog/* worker1
JkMount /toro-blojsom/xmlrpc/* worker1
JkMount /toro-blojsom/commentapi/* worker1
JkMount /toro-blojsom/atomapi/* worker1
JkMount /toro-portlets-common/services/* worker1
JkMount /toro-portlets-common/download worker1
JkMount /toro-portlets-common/downloadService worker1
JkMount /toro-portlets-common/spellcheck worker1
JkMount /toro-messaging-portlet/services/* worker1
JkMount /toro-briefcase-portlet/rendering/jsp/*.jsp worker1
JkMount /toro-gateway-portlet/rendering/jsp/*.jsp worker1
JkMount /toro-messaging-portlet/rendering/jsp/*.jsp worker1
JkMount /toro-permissions-portlet/rendering/jsp/*.jsp worker1
JkMount /toro-web-content-portlet/rendering/jsp/*.jsp worker1

Remove the following JkMount directives from INSTALLDIR/unicon/Academus/portal-apache/config/httpd.conf file:

JkMount /AcademusApps/*
JkMount /blojsom/*

Add the following Redirects to the appropriate VirtualHost. Get PREVIOUS_PORTAL_URL from the previous Redirect settings:

Redirect /toro-briefcase-portlet/WEB-INF PREVIOUS_PORTAL_URL
Redirect /toro-gateway-portlet/WEB-INF PREVIOUS_PORTAL_URL
Redirect /toro-messaging-portlet/WEB-INF PREVIOUS_PORTAL_URL
Redirect /toro-permissions-portlet/WEB-INF PREVIOUS_PORTAL_URL
Redirect /toro-portlets-common/WEB-INF PREVIOUS_PORTAL_URL
Redirect /toro-web-content-portlet/WEB-INF PREVIOUS_PORTAL_URL
Redirect /toro-blojsom/WEB-INF PREVIOUS_PORTAL_URL

Remove the following Redirects from the appropriate VirtualHost:

Redirect /AcademusApps/*
Redirect /blojsom/*

IIS/Tomcat Migrations (Windows)

Remove the following mounts from INSTALLDIR/unicon/Academus/portal-tomcat-a/conf/uriworkermap.properties:

/AcademusApps*
/blojsom*

Add the following mounts to INSTALLDIR/unicon/Academus/portal-tomcat-a/conf/uriworkermap.properties:

/toro-blojsom/blog/*=worker1
/toro-blojsom/xmlrpc/*=worker1
/toro-blojsom/commentapi/*=worker1
/toro-blojsom/atomapi/*=worker1
/toro-portlets-common/services/*=worker1
/toro-portlets-common/download=worker1
/toro-portlets-common/downloadService=worker1
/toro-portlets-common/spellcheck=worker1
/toro-messaging-portlet/services/*=worker1
/toro-briefcase-portlet/rendering/jsp/*.jsp=worker1
/toro-gateway-portlet/rendering/jsp/*.jsp=worker1
/toro-messaging-portlet/rendering/jsp/*.jsp=worker1
/toro-permissions-portlet/rendering/jsp/*.jsp=worker1
/toro-web-content-portlet/rendering/jsp/*.jsp=worker1

Retokenize Tomcat

Replace the tokens in the following files with the values obtained from "Extract previous install settings":

unicon/Academus/portal-tomcat-a/conf/Standalone/localhost/portal.xml
unicon/Academus/portal-tomcat-a/conf/Standalone/localhost/toro-blojsom.xml
unicon/Academus/portal-tomcat-a/conf/Standalone/localhost/toro-briefcase-portlet.xml
unicon/Academus/portal-tomcat-a/conf/Standalone/localhost/toro-gateway-portlet.xml
unicon/Academus/portal-tomcat-a/conf/Standalone/localhost/toro-messaging-portlet.xml
unicon/Academus/portal-tomcat-a/conf/Standalone/localhost/toro-permissions-portlet.xml
unicon/Academus/portal-tomcat-a/conf/Standalone/localhost/toro-web-content-portlet.xml
unicon/Academus/portal-tomcat-a/webapps/portal/WEB-INF/classes/properties/ldap.xml
unicon/Academus/portal-tomcat-a/webapps/portal/WEB-INF/classes/properties/personDirectory.xml
unicon/Academus/portal-tomcat-a/webapps/portal/WEB-INF/classes/properties/ToroPersonDirs.xml
unicon/Academus/portal-tomcat-a/webapps/toro-blojsom/WEB-INF/default/blog.properties
unicon/Academus/portal-tomcat-a/webapps/toro-blojsom/WEB-INF/web.xml
unicon/Academus/portal-tomcat-a/webapps/toro-gateway-portlet/WEB-INF/classes/config/blog-default.xml
unicon/Academus/portal-tomcat-a/webapps/toro-gateway-portlet/WEB-INF/classes/config/blog-EXAMPLE.xml
unicon/Academus/portal-tomcat-a/webapps/toro-portlets-common/WEB-INF/web.xml
unicon/Academus/portal-tomcat-a/webapps/toro-briefcase-portlet/WEB-INF/classes/log4j.properties
unicon/Academus/portal-tomcat-a/webapps/toro-gateway-portlet/WEB-INF/classes/log4j.properties
unicon/Academus/portal-tomcat-a/webapps/toro-messaging-portlet/WEB-INF/classes/log4j.properties
unicon/Academus/portal-tomcat-a/webapps/toro-permissions-portlet/WEB-INF/classes/log4j.properties
unicon/Academus/portal-tomcat-a/webapps/toro-portlets-common/WEB-INF/classes/log4j.properties
unicon/Academus/portal-tomcat-a/webapps/toro-web-content-portlet/WEB-INF/classes/log4j.properties

Execute DB Migrations

Execute the platform specific sql migration script contained in toro-migrator-1.0.0-rc-1.jar. PREVIOUS_VERSION is either sphinx48 or toro13.

PREVIOUS_VERSION-to-toro-db-migration-PLATFORM.sql

Execute Cernunnos migrations

import/migrate.crn import org.jasig.portal.FilePatternPhrase.USE_DEFAULT_VALUE
import/import.crn import org.jasig.portal.FilePatternPhrase.USE_DEFAULT_VALUE

Migrate Other Web Applications

Copy over any installed web application from INSTALLDIR/unicon/Academus/portal-tomcat-a.old/webapps to INSTALLDIR/unicon/Academus/portal-tomcat-a/webapps. Also if any of these web applications depend on shared libraries, these will also need to be copied over.

Set File Permissions (*nix)

Run the following commands to restore permissions
chown -R nobody:nobody INSTALLDIR/unicon/Academus
chown -R nobody:nobody INSTALLDIR/unicon/tools
chmod -R a+x INSTALLDIR/unicon/Academus/portal-tomcat-a/bin
AttachmentSize
migrator-properties.txt3 KB
previous-settings.txt6.32 KB