Upgrading

Upgrading a XiVO is done by executing commands through a terminal on the server. You can connect to the server either through SSH or with a physical console.

To upgrade your XiVO to the latest version, you must use the xivo-upgrade script. You can start an upgrade with the command:

xivo-upgrade

Note

  • You can’t use xivo-upgrade if you have not run the wizard yet
  • Upgrading from a version prior to XiVO 1.2 is not supported.
  • When upgrading XiVO, you must also upgrade all associated XiVO Clients. There is currently no retro-compatibility on older XiVO Client versions.

This script will update XiVO and restart all services.

There are 2 options you can pass to xivo-upgrade:

  • -d to only download packages without installing them. This will still upgrade the package containing xivo-upgrade and xivo-service.
  • -f to force upgrade, without asking for user confirmation

xivo-upgrade uses the following environment variables:

Upgrade procedure

  • Consult the roadmaps starting from your current version to the current prod version.
  • Read all existing Upgrade Notes (see below) starting from your version to the latest version.
  • For custom setups, follow the required procedures described below (e.g. HA cluster).
  • To download the packages beforehand, run xivo-upgrade -d. This is not mandatory, but it does not require stopping any service, so it may be useful to reduce the downtime of the server while upgrading.
  • When ready, run xivo-upgrade which will start the upgrade process. Telephony services will be stopped during the process
  • When finished, check that all services are running (the list is displayed at the end of the upgrade).
  • Check that services are correctly working like SIP registration, ISDN link status, internal/incoming/outgoing calls, XiVO Client connections etc.

Version-specific upgrade procedures

Switch to xivo.solutions

To follow Avencall’s official releases you must switch to xivo.solutions mirrors. In order to do that follow the following procedure:

  1. Download the switch-to-xivo-solutions script:

    wget http://mirror.xivo.solutions/debian/tools/migration-tools/switch-to-xivo-solutions.sh
    chmod +x ./switch-to-xivo-solutions.sh
    
  2. Execute the script:

    ./switch-to-xivo-solutions.sh
    
    ...
    
    Your XiVO has been switched to xivo.solutions successfully.
    Votre XiVO a été basculé vers xivo.solutions avec succès.
    
  3. Update the sources list:

    apt-get update
    

Upgrading from XiVO 14.11 and before

When upgrading from XiVO 14.11 or earlier, you must do the following, before the normal upgrade:

sed -i 's/xivo\.fr/xivo.solutions/g' /etc/apt/sources.list.d/*.list

Upgrading from XiVO 14.01, 14.02, 14.03, 14.04 installed from the ISO

In those versions, xivo-upgrade keeps XiVO on the same version. You must do the following, before the normal upgrade:

echo "deb http://mirror.xivo.solutions/debian/ xivo-five main" > /etc/apt/sources.list.d/xivo-upgrade.list \
&& apt-get update \
&& apt-get install xivo-fai \
&& rm /etc/apt/sources.list.d/xivo-upgrade.list \
&& apt-get update

Upgrading from XiVO 13.24 and before

When upgrading from XiVO 13.24 or earlier, you must do the following, before the normal upgrade:

  1. Ensure that the file /etc/apt/sources.list is not configured on archive.debian.org. Instead, it must be configured with a non-archive mirror, but still on the squeeze distribution, even if it is not present on this mirror. For example:

    deb http://ftp.us.debian.org/debian squeeze main
    
  2. Add archive.debian.org in another file:

    cat > /etc/apt/sources.list.d/squeeze-archive.list <<EOF
    deb http://archive.debian.org/debian/ squeeze main
    EOF
    

And after the upgrade:

rm /etc/apt/sources.list.d/squeeze-archive.list

Upgrading from XiVO 13.03 and before

When upgrading from XiVO 13.03 or earlier, you must do the following, before the normal upgrade:

wget http://mirror.xivo.solutions/xivo_current.key -O - | apt-key add -

Upgrading from XiVO 12.13 and before

When upgrading from XiVO 12.13 or earlier, you must do the following, before the normal upgrade:

apt-get update
apt-get install debian-archive-keyring

Upgrading from XiVO 1.2.1 and before

Upgrading from 1.2.0 or 1.2.1 requires a special procedure before executing xivo-upgrade:

apt-get update
apt-get install xivo-upgrade
/usr/bin/xivo-upgrade

Upgrading a cluster

Here are the steps for upgrading a cluster, i.e. two XiVO with High Availability (HA):

  1. On the master : deactivate the database replication by commenting the cron in /etc/cron.d/xivo-ha-master

  2. On the slave, deactivate the xivo-check-master-status script cronjob by commenting the line in /etc/cron.d/xivo-ha-slave

  3. On the slave, start the upgrade:

    xivo-slave:~$ xivo-upgrade
    
  4. When the slave has finished, start the upgrade on the master:

    xivo-master:~$ xivo-upgrade
    
  5. When done, launch the database replication manually:

    xivo-master:~$ xivo-master-slave-db-replication <slave ip>
    
  6. Reactivate the cronjobs (see steps 1 and 2)

Upgrading to/from an archive version

Upgrading from i386 (32 bits) to amd64 (64 bits)

Troubleshooting

Postgresql

When upgrading XiVO, if you encounter problems related to the system locale, see PostgreSQL localization errors.

xivo-upgrade

If xivo-upgrade fails or aborts in mid-process, the system might end up in a faulty condition. If in doubt, run the following command to check the current state of xivo’s firewall rules:

iptables -nvL

If, among others, it displays something like the following line (notice the DROP and 5060):

0     0 DROP       udp  --  *      *       0.0.0.0/0            0.0.0.0/0           udp dpt:5060

Then your XiVO will not be able to register any SIP phones. In this case, you must delete the DROP rules with the following command:

iptables -D INPUT -p udp --dport 5060 -j DROP

Repeat this command until no more unwanted rules are left.

Upgrade Notes

2016.04

Consult the 2016.04 Roadmap

Upgrading from 2016.03:

xivo-dist xivo-2016.04
xivo-upgrade

For upgrade from older versions see Version-specific upgrade procedures.

2016.03

To upgrade to this version, use the switch-to-xivo-solutions script:

wget http://mirror.xivo.solutions/debian/tools/migration-tools/switch-to-xivo-solutions.sh
chmod +x ./switch-to-xivo-solutions.sh
./switch-to-xivo-solutions.sh

At the end the script should say:

Your XiVO has been switched to xivo.solutions successfully.
Votre XiVO a été basculé vers xivo.solutions avec succès.

Then you have to points towards this version:

xivo-dist xivo-2016.03
apt-get update

And finally do the normal upgrade procedure.

16.08.2

Consult the 16.08.2 release post

This release fixes a number of known issues that were present in the 16.08. Mainly it:

  • ships with asterisk 13.10.0 which fixes a number of crashes, instabilities and memory leak,
  • fixes a number of upgrade problems,
  • fixes a status (presence, phone) update problem in XiVO Client,
  • add the possibility to create a XiVO Client login in the format name@domain.tld

16.08

Consult the 16.08 Roadmap

  • CTI Protocol is now in version 2.2

  • Some security features have been added to the XiVO provisioning server. To benefit from these new features, you’ll need to update your xivo-provd plugins to meet the system requirements.

    If you have many phones that are connected to your XiVO through a NAT equipment, you should review the default configuration to make sure that the IP address of your NAT equipment don’t get banned unintentionally by your XiVO.

  • Newly created groups and queues now ignore call forward requests from members by default. Previously, call forward requests from members were always followed. This only applies to call forward configured directly on the member’s phone: call forward configured via *21 have always been ignored in these cases.

    Note that during the upgrade, the previous behaviour is kept for already existing queues and groups.

    This behaviour is now configurable per queue/group, via the “Ignore call forward requests from members” option under the “Application” tab. We recommend enabling this option.

16.07

Consult the 16.07 Roadmap

  • If you were affected by the bug #6213, i.e. if your agent login time statistics were incorrect since your upgrade to XiVO 15.20 or later, and you want to fix your statistics for that period of time, you’ll need to manually apply a fix.

16.06

Consult the 16.06 Roadmap

16.05

Consult the 16.05 Roadmap

  • The view, add, edit, delete and deleteall actions of the “lines” web service provided by the web interface have been removed. As a reminder, note that the web services provided by the web interface are deprecated.

16.04

Consult the 16.04 Roadmap

  • CTI Protocol is now in version 2.1
  • The field Rightcall Code from Services -> IPBX -> IPBX Settings -> Users under Services tab will overwrite all password call permissions for the user.
  • Faxes stored on FTP servers are now converted to PDF by default. See Using the FTP backend if you want to keep the old behavior of storing faxes as TIFF files.

16.03

Consult the 16.03 Roadmap

  • The new section Services ‣ Statistics ‣ Switchboard in the web interface will only be visible by a non-root administrator after adding the corresponding permissions in the administrator configuration.
  • Update the switchboard configuration page for the statistics in Configuration for multiple switchboards.
  • The API for associating a line to a device has been replaced. Consult the xivo-confd REST API changelog for further details
  • The configuration parameters of xivo_ldap_user plugin of xivo-auth has been changed. See xivo_ldap plugin.
  • The user’s email is now a unique constraint. Every duplicate email will be deleted during the migration. (This does not apply to the voicemail’s email)

16.02

Consult the 16.02 Roadmap

  • The experimental xivo_ldap_voicemail plugin of xivo-auth has been removed. Use the new xivo_ldap plugin.
  • Bus messages in the xivo exchange are now sent with the content-type application/json. Some libraries already do the message conversion based the content-type. Kombu users will receive a python dictionnary instead of a string containing json when a message is received.
  • xivo-ctid encryption is automatically switched on for every XiVO server and XiVO Client >= 16.02. If you really don’t want encryption, you must disable it manually on the server after the upgrade. In that case, XiVO Clients will ask whether to accept the connection the first time.

16.01

Consult the 16.01 Roadmap

  • The page Configuration ‣ Management ‣ Web Services Access ‣ Acces rights has been removed. Consequently, every Web Services Access has now all access rights on the web services provided by the web interface. These web services are deprecated and will be removed soon.
  • During the upgrade, if no CA certificates were trusted at the system level, all the CA certificates from the ca-certificates package will be added. This is done to resolve an issue with installations from the ISO and PXE. In the (rare) case you manually configured the ca-certificates package to trust no CA certificates at all, you’ll need to manually reconfigure it via dpkg-reconfigure ca-certificates after the upgrade.
  • xivo-ctid uses xivo-auth to authenticate users. See Authentication.
  • the service_discovery section of the xivo-ctid configuration has changed. If you have set up Contact and Presence Sharing, you should update your xivo-ctid configuration.
  • the CTI Protocol is now versioned and a message will be displayed if the server and a client have incompatible protocol versions.

15.20

Consult the 15.20 Roadmap

  • Debian has been upgraded from version 7 (wheezy) to 8 (jessie).
  • CSV webservices in the web interface have been removed. Please use the xivo-confd REST API instead.
  • The CSV import format has been changed. Consult CSV Migration for further details.
  • xivo-ctid now uses STARTTLS for the client connections.
    • For users already using the CTIS protocol the client can be configured to use the default port (5003)

Please consult the following detailed upgrade notes for more information:

15.19

Consult the 15.19 Roadmap

  • The sound file /usr/share/asterisk/sounds/fr_FR/une.wav has been moved to /usr/share/asterisk/sounds/fr_FR/digits/1F.wav.
  • If you would like to use the new “transfer to voicemail” feature from the People Xlet, you’ll need to update your directory definition and your directory display, i.e.:
    • edit your “internal” directory definition (Services / CTI server / Directories / Definitions) and add a field “voicemail” with value “voicemail_number”
    • edit your display (Services / CTI server / Directories / Display filters) and add a row with title “Voicemail”, field type “voicemail” and field name “voicemail”
    • restart xivo-dird
  • It is now possible to send an email to a user with a configured email address in the people xlet. See Views to add the appropriate field to your configured displays.
  • The Contacts xlet (aka. Search) has been removed in favor of the People Xlet. You may need to do some manual configuration in the directories for the People Xlet to be fully functional. See the detailed upgrade notes for more details.
  • If you need context separation in the People Xlet, you will have to manually configure xivo-dird to keep it working, see Context separation. This procedure is only temporary, later versions will handle the context separation automatically.
  • xivo-agentd now uses mandatory token authentication for its REST API. If you have custom development using this service, update your program accordingly.
  • Some actions that used to be available in the contact xlets are not implemented in the people xlet yet.
    • Cancel transfer is only available using the switchboard xlet
    • Hanging up a call is only possible using the switchboard xlet
    • Call interception is not available anymore
    • Conference room invitation is not available anymore

Please consult the following detailed upgrade notes for more information:

15.18

Consult the 15.18 Roadmap

  • The provd_pycli command (deprecated in 15.06) has been removed in favor of xivo-provd-cli. If you have custom scripts referencing provd_pycli, you’ll need to update them.
  • The xivo-agentctl command (deprecated in 15.06) has been removed in favor of xivo-agentd-cli. If you have custom scripts referencing xivo-agentctl, you’ll need to update them.
  • xivo-agentd now uses HTTPS. If you have custom development using this service, update your configuration accordingly. The xivo-agentd-client library, used to interact with xivo-agentd, has also been updated to use HTTPS by default.
  • xivo-confd ports 50050 and 50051 have been removed. Please use 9486 and 9487 instead

Configuration File Upgrade Notes

The file format of configuration files for daemons exposing an HTTP/S API has changed. The following services have been affected :

  • xivo-agentd
  • xivo-amid
  • xivo-auth
  • xivo-confd
  • xivo-ctid
  • xivo-dird
  • xivo-dird-phoned

Ports and listening addresses are now organised in the following fashion:

rest_api:
  https:
    enabled: true
    port: 9486
    listen: 0.0.0.0
    certificate: /usr/share/xivo-certs/server.crt
    private_key: /usr/share/xivo-certs/server.key
    ciphers: "ALL:!aNULL:!eNULL:!LOW:!EXP:!RC4:!3DES:!SEED:+HIGH:+MEDIUM"
  http:
    enabled: true
    port: 9487
    listen: 127.0.0.1

If you have any custom configuration files for these daemons, please modify them accordingly. Consult Network for further details on which network services are available for each daemon.

15.17

Consult the 15.17 Roadmap

  • Online call recording is now done via automixmon instead of automon. This has no impact unless you have custom dialplan that is passing directly the “w” or “W” option to the Dial or Queue application. In these cases, you should modify your dialplan to pass the “x” or “X” option instead.
  • The remote directory service available from supported phones is now provided by the new unified directory service, i.e. xivo-dird. Additional upgrade steps are required to get the full benefit of the new directory service; see the detailed upgrade notes.
  • The field enableautomon has been renamed to enableonlinerec in the users web services provided by the web-interface (these web services are deprecated).
  • The agent status dashboard now shows that an agent is calling or receiving a non ACD call while in wrapup or paused.
  • SIP endpoints created through the REST API will not appear in the web interface until they have been associated with a line
  • Due to limitations in the database, only a limited number of optional parameters can be configured on a SIP endpoint. Consult the xivo-confd REST API changelog for further details

Please consult the following detailed upgrade notes for more information:

15.16

Consult the 15.16 Roadmap

  • The directory column type “mobile” was removed in favor of the new “callable” type. If you have hand-written configuration files for xivo-dird, in section “views”, subsection “displays”, all keys “type” with value “mobile” must be changed to value “callable”.
  • The xivo-auth backend interface has changed, get_acls is now get_consul_acls. All unofficial back ends must be adapted and updated. No action is required for “normal” installations.
  • Voicemails can now be deleted even if they are associated to a user.

15.15

Consult the 15.15 Roadmap

Voicemail Upgrade Notes

  • Voicemail webservices in the web interface have been removed. Please use the xivo-confd REST API instead.
  • Voicemail IMAP configuration has been migrated to the new Advanced tab.
  • Voicemail option Disable password checking has been converted to Ask password. The value has also been inverted. (e.g. If Disable password checking was false, Ask password is true.) Ask password is activated by default.
  • After an upgrade, if ever you have errors when searching for voicemails, please try clearing cookies in your web browser.
  • A voicemail must be dissociated from any user prior to being deleted. Voicemail are dissociated by editing the user and clicking on the Delete voicemail button in the Voicemail tab. This constraint will disappear in future versions.
  • Deleting a user will dissociate any voicemail that was attached, but will not delete it nor any messages.
  • Creating a line is no longer necessary when attaching a voicemail to a user.
  • The following fields have been modified when importing a CSV file:
Old name New name Required ? New default value
voicemailmailbox voicemailnumber yes  
voicemailskippass voicemailaskpassword no 1
  voicemailcontext yes  

Directories

  • Concatenated fields in directories are now done in the directory definitions instead of the displays
  • The field column in directory displays are now field names from the directory definition. No more {db-*} are required
  • In the directory definitions fields can be modified using a python format string with the fields comming from the source.
  • Most of the configuration for xivo-dird is now generated from xivo-confgen using the values in the web interface.
  • The remote directory xlet has been removed in favor of the new people xlet.

See Directories and Integration of XiVO dird with the rest of XiVO for more details

15.14

  • Consult the 15.14 Roadmap
  • Default password for xivo-polycom-4.0.4 plugin version >= 1.3 is now 9486 (i.e. the word “xivo” on a telephone keypad).
  • Default password for xivo-polycom-5.3.0 plugin version >= 1.4 is now 9486.
  • Caller id management for users in confd has changed. Consult the xivo-confd REST API changelog.
  • The Local Directory Xlet is replaced with the People Xlet. Contacts are automatically migrated to the server. Note that the CSV format for importing contacts has changed (see People Xlet for more information).

15.13

  • Consult the 15.13 Roadmap
  • Asterisk has been upgraded from version 11.17.1 to 13.4.0, which is a major Asterisk upgrade.
  • An ARI user has been added to /etc/asterisk/ari.conf. If you have configured Asterisk HTTP server to bind on a publicly reachable address (in /etc/asterisk/http.conf), then you should update your configuration to prevent unauthorized access on your Asterisk.
  • The xivo-dird configuration option source_to_display_columns has been removed in favor of the new option format_columns. All source configuration using the source_to_display_columns must be updated. A migration script will automatically modify source configuration in the /etc/xivo-dird/sources.d directory.

Please consult the following detailed upgrade notes for more information:

15.12

  • Consult the 15.12 Roadmap
  • The certificate used for HTTPS in the web interface will be regenerated if the default certificate was used. Your browser will complain about the new certificate, and it is safe to accept it (see #3656). See also HTTPS certificate.
  • If you have an HA configuration, then you should run xivo-sync -i on the master node to setup file synchronization between the master and the slave. File synchronization will then be done automatically every hour via rsync and ssh.
  • xivo-auth and xivo-dird now use HTTPS, if you have custom development using these services, update your configuration accordingly.

15.11

  • Consult the 15.11 Roadmap
  • The call records older than 365 days will be periodically removed. The first automatic purge will occur in the night after the upgrade. See Purge Logs for more details.

15.10

15.09

15.08

  • Consult the 15.08 Roadmap
  • The Dialer Xlet has been integrated in Identity Xlet.

15.07

15.06

  • Consult the 15.06 Roadmap
  • The provd client has been moved into a new python package, xivo_provd_client. If you have custom scripts using this client, you’ll need to update them. See http://projects.xivo.io/issues/5469 for more information.
  • The provd_pycli command name has been deprecated in favor of xivo-provd-cli. These 2 commands do the same thing, the only difference being the name of the command. The provd_pycli command name will be removed in 15.18, so if you have custom scripts referencing provd_pycli, you’ll need to update them.
  • The xivo-agentctl command name has been deprecated in favor of xivo-agentd-cli. These 2 commands do the same thing, the only difference being the name of the command. The xivo-agentctl command name will be removed in 15.18, so if you have custom scripts referencing xivo-agentctl, you’ll need to update them.

15.05

  • Consult the 15.05 Roadmap
  • The Xlet identity has been modified to follow the new XiVO Client design which implies the removal of some details.

15.04

15.03

15.02

15.01

  • Consult the 15.01 Roadmap
  • The confd REST API is now more restrictive on HTTP headers. Particularly, the headers Accept and Content-Type must be set to (typically) application/json.
  • The following configuration files have been created:
    • /etc/xivo-agid/config.yml
    • /etc/xivo-call-logd/config.yml
    • /etc/xivo-amid/config.yml
    • /etc/xivo-agentd/config.yml