Version Upgrade¶
Version Upgrade can take several steps to perform. Below will show how to upgrade from specific versions.
4.4 to 5.0¶
- Switch branches
mv /var/www/fusionpbx /var/www/fusionpbx-4.4
cd /var/www && git clone https://github.com/fusionpbx/fusionpbx.git
chown -R www-data:www-data /var/www/fusionpbx
- Try Advanced -> Upgrade Schema if that fails use the the command line.
cd /var/www/fusionpbx
php /var/www/fusionpbx/core/upgrade/upgrade.php
- Refresh the browser if there are issues then logout and then back in.
- Update the following Dialplans.
If you have made any changes to these make notes on the changes before you delete them. So that the changes could be added back. For example valet park could have custom music on hold or a custom timeout for the valet park.
user_exists
call-direction
is_loopback
is_local
user_record
agent_status
group_intercept
extension-to-voicemail
vmain
vmain_user
tone_stream
recordings
valet_park
speed_dial
call-forward-all
call_screen
call_forward_not_registered
local_extension
voicemail
- Update these Dialplans by first selecting and deleting their entries from within the Dialplan Manager for all domains. Then, run Advanced -> Upgrade -> App Defaults to retrieve the new versions of the diaplans.
- If you have customized any provisioning templates makes sure to copy them from /var/www/fusionpbx-4.4/resources/templates/provision and copy them into the right vendor directory in /var/www/fusionpbx/resources/templates/provision. I you haven’t customized the provisioning templates you can skip this step.
- Update the language phrases. If you have added custom phrases be careful here not the case for most people.
rm -R -f /etc/freeswitch/lang
rm -R -f /etc/freeswitch/languages
cp -R /var/www/fusionpbx/resources/templates/conf/languages /etc/freeswitch
chown -R www-data:www-data /etc/freeswitch
fs_cli -x "reloadxml"
- New Follow Me does not use the extension dial string. Use the following SQL command to remove the extension dial string.
update v_follow_me set dial_string = null;
update v_extensions set dial_string = null, follow_me_destinations = null where dial_string <> 'error/user_busy';
update v_extensions set follow_me_enabled = 'true' where follow_me_uuid in (select follow_me_uuid from v_follow_me where follow_me_enabled = 'true');
\q
exit
- Rename the variables dialplan to domain-variables
su postgres
psql fusionpbx
update v_dialplans set dialplan_name = 'domain-variables' where dialplan_name = 'variables';
\q
exit
- Duplication in Default Settings
Go to Advanced -> Default Settings after running App Defaults to check for any duplicates. If you see duplicates that are not type of array this may have been caused from older versions of FusionPBX before we started using a Preset ID for each Default Settings. If you hover over the setting it says then says Default this is the default setting with the correct ID. If it says custom this is a unique UUID. Make sure to delete only duplicates that say custom otherwise when you run App Defaults again it will put the default setting back with the correct preset UUID>
- FAX Queue install
- Install as a service
cp /var/www/fusionpbx/app/fax_queue/resources/service/debian.service /etc/systemd/system/fax_queue.service
systemctl enable fax_queue
systemctl start fax_queue
systemctl daemon-reload
- or run as a cron job
crontab -e
* * * * * cd /var/www/fusionpbx && php /var/www/fusionpbx/app/fax_queue/resources/job/fax_queue.php
- Email Queue install
- Install as a service
cp /var/www/fusionpbx/app/email_queue/resources/service/debian.service /etc/systemd/system/email_queue.service
systemctl enable email_queue
systemctl start email_queue
systemctl daemon-reload
- or run as a cron job
crontab -e
* * * * * cd /var/www/fusionpbx && /usr/bin/php /var/www/fusionpbx/app/email_queue/resources/service/email_queue.php
Version 4.2 to 4.4¶
- Switch branches
mv /var/www/fusionpbx /var/www/fusionpbx-4.2
cd /var/www && git clone -b 4.4 https://github.com/fusionpbx/fusionpbx.git
chown -R www-data:www-data /var/www/fusionpbx
Note
Depending on when you installed the path /etc/fusionpbx might need created. A good way to tell is once you move the fusionpbx folder in step one and the FusionPBX is on a page with flags.
**Only** do this step if the folder **doesn't** already exist.
mkdir -p /etc/fusionpbx
mv /var/www/fusionpbx-4.2/resources/config.php /etc/fusionpbx
chown -R www-data:www-data /etc/fusionpbx/
- Then go to Advanced -> Upgrade and update the Source Code, Schema, Menu Defaults and Permission Defaults.
Note
config.lua needs to be read and write by the webserver in order for advanced > default settings to update config.lua with new path information. Make sure config.lua and config.php are in /etc/fuionpbx/ . Don’t miss this step chown -R www-data:www-data /etc/fusionpbx/
- Update the following Dialplans.
user_exists
user_record
call_forward_all
local_extension
- Update these Dialplans by first selecting and deleting their entries from within the Dialplan Manager for all domains. Then, run Advanced -> Upgrade -> App Defaults to retrieve the new versions of the diaplans.
- In the menu go to Status then SIP Status and press ‘Flush Cache’.
- Update old recordings set the record_name and record_path.
cd /usr/src
wget https://raw.githubusercontent.com/fusionpbx/fusionpbx-scripts/master/upgrade/record_path.php
php record_path.php
- Resave all Call Center Queues to update each call center queue dialplan. Then restart mod call center or FreeSWITCH.
- Advanced > Default Settings
The email section in Advanced > Default settings, changes have been made.
- You will find duplicates with a blank value. The duplicates must be updated with the existing info from the originals. These duplicates are the new and correct settings. You’ll have to update these blank ones with the existing values (like smtp server info) to the new default ones. Then delete the original ones.
- Don’t delete the blank entries. The code behind them are for version 4.4+ and the original ones are not.
Note
If you already deleted the blank ones, you’ll have to delete the email section then run Advanced > Upgrade > App Defaults check box. Then go back to Advanced > Default settings and set the email section back up.
Version 4.0 to 4.2¶
1. Update the source code. From the web interface go to the Menu -> Advanced > Upgrade page. Check the source box and the press execute. If you see a red bar it indicates there was a git conflict and you will need to update from console instead. If you don’t see the source box then you will need to update from the console.
cd /var/www/fusionpbx
git stash
git pull
chown -R www-data:www-data /var/www/fusionpbx
- If the page goes blank type in the url http://domain.com/logout.php This should bring you back to the login screen.
3. Udate the Schema. Advanced -> Upgrade Check the Schema box and then then press execute. https://domain.com/core/upgrade/index.php
- Check the box for App Defaults and run execute.
- Check the box for Menu Defaults and run execute. This will update the menu to the default menu. The menu should now look like this.

- Check the box for Permission Defaults and run execute. Permissions are store in a session to get new permissions logout and back in.
- Goto Dialplan > Dialplan Manager and delete “local_extension”. Then goto Advanced > Upgrade and only check box App Defaults and click execute. This will regenerate the new local_extension version.
- Go to Applications > Conference profiles. Edit each profile and replace $${hold_music} with local_stream://default
- Goto Advanced > Variables hold_music. Make sure it’s value is set as local_stream://default
Check Applications > Music On Hold to see if music is listed properly.
You should see in red default for the category and the kHz sub categories should be in blue.
If not, do the following
* Edit (Pencil icon on the right) the Category names to reflect default for 8, 16, 32, and 48kHz.
* After you click the pencil icon choose at the bottom the domain for the rates and click save.
* If the category is blank, you may have missed running Advanced > check box app defaults > execute or you may not have renamed autoload_configs/local_stream.conf.xml file to local_stream.conf.
* For custom music on hold check the path for the domain name and set select for the domain name to match the domain used in the path.
- Remove .xml from the end of the following file names
**Before**
autoload_configs/callcenter.conf.xml
autoload_configs/conference.conf.xml
autoload_configs/local_stream.conf.xml
**After**
autoload_configs/callcenter.conf
autoload_configs/conference.conf
autoload_configs/local_stream.conf
- Edit autoload_configs/lua.conf.xml adding “languages”. Restart of FreeSWITCH is required.
<param name="xml-handler-bindings" value="configuration,dialplan,directory,languages"/>
- Update Time Conditions (Bug Fix)
Goto Advanced > Upgrades page. Check box Update Source, execute.
Goto Advanced > Default settings > Category > delete the category: time condition presets.
Goto Advanced > Upgrade > check box App Defaults, execute.
Goto Advanced > Default settings. Click "Reload" at the top right. (This will get the new presets)
Next steps are for existing Time Conditions
Goto Apps > Time Conditions and edit the time conditions remove all holidays and hit save.
Select the holidays over again.
Note
Many of the provisioning templates were updated. If you use custom provisioning templates you should consider updating them with the new versions.
Version 3.8 to 4.0¶
Remove the comments from the script-directory in /usr/local/freeswitch/conf/autoload_configs/lua.conf.xml
If using the FreesWITCH package then remove $${base_dir} and set the full path to the scripts directory.
before: <!--<param name="script-directory" value="$${base_dir}/scripts/?.lua"/>-->
after: <param name="script-directory" value="/usr/local/freeswitch/scripts/?.lua"/>
Rebooting FreeSWITCH is required for this to take effect.
Version 3.6 to 3.8¶
Beyond the standard upgrade procedure just described, the following will also need to be performed:
uncomment: <param name="script-directory" value="$${base_dir}/scripts/?.lua"/>
in: /usr/local/freeswitch/conf/autoload_configs/lua.conf.xml
delete from v_group_permissions where domain_uuid is not null
and (
group_name = 'user'
or group_name = 'admin'
or group_name = 'superadmin'
or group_name = 'agent'
or group_name = 'public'
)
Remove all domain groups having the same names as the default global groups
(retains any custom domain groups)...
delete from v_groups where
domain_uuid is not null
and (
group_name = 'user'
or group_name = 'admin'
or group_name = 'superadmin'
or group_name = 'agent'
or group_name = 'public'
)
Empty the group_uuid field for any group user with a group_name value having
the same name as the default global groups (retains user assignments to custom domain groups)...
update v_group_users set group_uuid = null where
group_name = 'user'
or group_name = 'admin'
or group_name = 'superadmin'
or group_name = 'agent'
or group_name = 'public'
$sql = "select group_user_uuid, group_name ";
$sql .= "from v_group_users where group_uuid is null";
$prep_statement = $db->prepare(check_sql($sql));
$prep_statement->execute();
$result = $prep_statement->fetchAll(PDO::FETCH_NAMED);
$result_count = count($result);
unset($prep_statement);
if ($result_count > 0) {
foreach($result as $field) {
//note group user uuid
$group_user_uuid = $field['group_user_uuid'];
$group_name = $field['group_name'];
//get global group uuid
$sql = "select group_uuid from v_groups ";
$sql .= "where domain_uuid is null ";
$sql .= "and group_name = '".$group_name."' ";
$prep_statement = $db->prepare($sql);
$prep_statement->execute();
$sub_result = $prep_statement->fetch(PDO::FETCH_ASSOC);
$sub_result_count = count($sub_result);
unset ($prep_statement);
//set group uuid
if ($sub_result_count > 0) {
$sql = "update v_group_users ";
$sql .= "set group_uuid = '".$sub_result['group_uuid']."' ";
$sql .= "where group_user_uuid = '".$group_user_uuid."' ";
$count = $db->exec(check_sql($sql));
unset($sql);
}
}
}
Version 3.5 to 3.6¶
ALTER TABLE v_xml_cdr ADD json text;
Version 3.4 to 3.5¶
cd /var/www/fusionpbx
wget http://fusionpbx.googlecode.com/svn/branches/dev/scripts/upgrade/gateway_uuid.php
http://x.x.x.x/gateway_uuid.php
rm gateway_uuid.php
Version 3.3 to 3.4¶
cd /var/www/fusionpbx
wget https://github.com/fusionpbx/fusionpbx-scripts/tree/master/upgrade/hunt_group_export.php
http://x.x.x.x/hunt_group_export.php
rm -r hunt_group_export.php
cd /var/www/fusionpbx
wget https://github.com/fusionpbx/fusionpbx-scripts/tree/master/upgrade/ring_group_extensions.php
http://x.x.x.x/ring_group_extensions.php
rm ring_group_extensions.php
Version 3.2 to 3.3¶
Version 3.1.4 to 3.2¶
cd /var/www/fusionpbx
git pull
Advanced -> Upgrade Schema
x.x.x.x/core/menu/menu.php
Edit the menu make sure the language is set to en-us.
Press **Restore Default**
x.x.x.x/core/default_settings/default_settings.php
category: language
type: code
value: en-us
Migrating email to the new FusionPBX native voicemail.
wget https://github.com/fusionpbx/fusionpbx-scripts/tree/master/upgrade/voicemail_export.php
http://x.x.x.x/voicemail_export.php
Remove the export file
rm voicemail_export.php
Version 2 to 3.0¶
| When upgrading from previous versions, you may encounter the following issues:
Release Revisions
- r0001 is 1.0 release - 6 Nov 2009
- r2523 is 3.0 release - 3 May 2012
- r2585 is 3.0.4 release - 24 May 2012
- r2757 is 3.1 release - 18 Aug 2012
- r2777 is 3.1.1 release - 26 Aug 2012
- r2827 is 3.1.2 release - 12 Sep 2012
- r2897 is 3.1.3 release - 26 Sep 2012
- r2907 is 3.1.4 release - 27 Sep 2012
- r3694 is 3.2 release - 19 Jan 2013
- r3978 is 3.3 release - 1 May 2013
- r4605 is 3.4 release - 28 Sep 2013
- r6747 is 3.6.1 release - 22 Aug 2014
- r8481 is 3.8.3 release - 11 May 2014
- r793d386 is 4.0 release - Aug 2015
- r4fdb6e9 is 4.1 release - Dec 2015
- rxxxxxxx is 4.2 release - xxx 2016
SQLite¶
SQLite is the FreeSWITCH default. Databases are located in the freeswitch/db directory.
Postgres¶
Postgres native support will be in FreeSWITCH 1.2.4 but has been available in the Main GIT branch.
Dependencies¶
libpq and the associated dev packages are required
Configure¶
To enable PostgresSQL as a native client in FreeSWITCH you must enable it during the build when running configure. ** ./configure –enable-core-pgsql-support **
switch.conf.xml¶
Under the Settings area insert the following line
<param name=”core-db-dsn” value=”pgsql;hostaddr=127.0.0.1 dbname=freeswitch user=freeswitch password=’’ options=’-c client_min_messages=NOTICE’ application_name=’freeswitch’” />