This guide is intended to help you move TAO 3.1 from one server to another without data loss.

For older installations see:

  • Server Migration 2.5.
  • Server Migration 3.0.


  • (Optional) Please upgrade to the latest version of TAO first (Installation and Upgrading).
  • This guide assumes you have not heavily modified your configuration. If you are using alternative storage implementations (such as NoSql), the migration might be more complex.
  • This guide assumes that the technology stack did not change. There might be additional issues if you would like to migrate between different Operating Systems (Windows->Linux) or Databases (MySql => Postgres)

Old Server

  • Copy the entire TAO data and config directory from the old server (by default found in config and data).
  • Create a dump of the database making sure to include the routines (if you are using mysql, use mysqldump -R).

New Server

File migration

* Replace the config and data directory and to set the correct file owner/rights.

* Modify config/generis.conf.php to reflect your new domain and directories. (Do NOT change GENERIS_INSTANCE_NAME or LOCAL_NAMESPACE.)

* watch out for the trailing slashes when writing paths !


* Modify config/generis/filesystem.conf.php to reflect your new file paths. For this change the filesPath and the root of each adapter:

return new oat\oatbox\filesystem\FileSystemService(array(
    'filesPath' => 'NEW_FILE_DIRECTORY_HERE',
    'adapters' => array(
        'fileUploadDirectory' => array(
            'class' => 'Local',
            'options' => array(
                'root' => 'NEW_FILE_DIRECTORY_HERE/tao/upload'
        'public' => array(
            'class' => 'Local',
            'options' => array(
                'root' => 'NEW_FILE_DIRECTORY_HERE/tao/public'

* Modify config/generis/persistences.conf.php to reflect your new database configuration.

'default' => array(
    'driver' => 'pdo_mysql',
    'host' => 'localhost',
    'dbname' => 'DbName',
    'user' => 'DbUserName',
    'password' => 'DbPassword',

* Update the directory path value in config/tao/websource_[CODE].conf.php to point to your new TAO data directory. (Do NOT modify fsUri.)

return array(
    'className' => 'oat\\tao\\model\\websource\\TokenWebSource',
    'options' => array(
        'secret' => 'a0c2ef52398c24d5347109f930d907d3',
        'path' => '/opt/newTaoDataDirectory/tao/public/',
        'ttl' => 1440,
        'fsUri' => 'http://YOUR_LOCAL_NAMESPACE#i1231456789',
        'id' => '55a53f75bf715',


  • (Mandatory) Clear the cache of the file sources by emptying the folder NEW_FILES_PATH/data/generis/cache/. This can be achieved using the following command: rm -rf NEW_FILES_PATH/data/generis/cache/*.
  • (Optional) Execute NEW_FILES_PATH/tao/scripts/taoUpdate.php to ensure all extensions are up to date and to regenerate the translation files