# How to change session backend

LemonLDAP::NG provides a script to change session backend. This script will help you transfer existing persistent sessions (or offline sessions) when migrating from one backend to another, or when adding indexes to a browseable session backend. It is available in LemonLDAP::NG utilities directory (`convertSessions`).

## How it works

The `convertSessions` utility requires you to create a job configuration file with the following content:

    # This example migrates psessions from the default File backend to a PostgreSQL database
    [sessions_from]
    storageModule = Apache::Session::File
    storageModuleOptions = {    \
          'Directory' => '/var/lib/lemonldap-ng/psessions',     \
          'LockDirectory' => '/var/lib/lemonldap-ng/psessions/lock', \
    }
    # Only convert some session types
    # sessionKind = Persistent, SSO

    [sessions_to]
    storageModule = Apache::Session::Browseable::Postgres
    storageModuleOptions = {    \
        'DataSource' => 'DBI:Pg:database=lemonldapdb;host=pg.example.com', \
        'UserName' => 'lemonldaplogin', \
        'Password' => 'lemonldappw', \
        'Commit' => 1, \
        'Index' => 'ipAddr _whatToTrace user', \
        'TableName' => 'psessions', \
    }

## Invocation

`convertSessions -c job.ini`

Options:

- `-c`: job configuration file (mandatory)

- `-r oldkey=newkey`: rename session keys during conversion (optional, can be given multiple times)

- `-x key`: remove session keys during conversion (optional, can be given multiple times)

- `-i`: ignore errors. By default errors will stop the script execution

- `-d`: print debugging output