FOP2 support for simple licensing issue. Are they alive?

FreePBX 16.0.26 / all modules current

On Thursday, November 17, 2022 at 09:25:43 AM PST, I wrote FOP2 support:

Yesterday I upgraded my FreePBX 15 server running on a Virtualbox virtual machine to a freshly installed FreePBX 16 on a second virtual machine, and migrated my FreePBX 15 settings using an earlier backup. After installing FOP2 on the FreePBX 16 virtual machine, when I ran the command below to register FOP2 I received the following error message:

Serial code not available for registration. It was reused 3 or more times. You must request a manual reset.

I am therefore requesting a manual reset for code ABCD1234XYZ

I received an instant automatic reply from FOP2 support. After the weekend, I wrote again:

Hey guys, I’m waiting for a response. I don’t need an automatic reply, I need a human to look at this.

Another instant automatic reply. This isn’t a difficult problem. I’m not at all impressed with the response time. Is FOP2 support even alive?

I see there are instructions–albeit somewhat old–in the FreePBX wiki to back up FOP2 on FreePBX 15:

Backup fop2 using FreePBX 15 Backup Module

(Backup fop2 using FreePBX 15 Backup Module - FreePBX Documentation - Documentation)

Using the FreePBX 15 Backup module with a couple of scripts you can backup fop2 and all its information with the use of custom files/directories and a couple of scripts.

Within your Backup job, add the following custom files/directories:

  • Directory: /usr/local/fop2
  • Directory: /var/www/html/fop2
  • File: /var/lib/asterisk/astdb.sqlite3

Now create the following Pre-Backup Hook script:

DBUSER=cat /etc/freepbx.conf | sed 's/ //g' | grep AMPDBUSER | tail -n 1 | cut -d\" -f4
DBPASS=cat /etc/freepbx.conf | sed 's/ //g' | grep AMPDBPASS | tail -n 1 | cut -d\" -f4
mysqldump --add-drop-table -u $DBUSER -p$DBPASS asterisk $(mysql -u $DBUSER -p$DBPASS -D asterisk -Bse “SHOW TABLES LIKE ‘fop2%’”) > /usr/local/fop2/fop2_backup.sql

Now create the following Post Restore Hook script:

DBUSER=cat /etc/freepbx.conf | sed 's/ //g' | grep AMPDBUSER | tail -n 1 | cut -d\" -f4
DBPASS=cat /etc/freepbx.conf | sed 's/ //g' | grep AMPDBPASS | tail -n 1 | cut -d\" -f4
mysql -u $DBUSER -p$DBPASS asterisk < /usr/local/fop2/fop2_backup.sql
fwconsole restart
sleep 30
systemctl restart fop2


  • The Pre-backup and Post-restore scripts need to be owned by the Asterisk user (chown asterisk:asterisk /path/to/script/file) and must be executable (chmod +x /path/to/script/file).
  • My advice would be to place these scripts inside /usr/local/fop2 as they will be included in the backup and therefore move over automatically.
  • If you a backing up and restoring to a Warm Spare Server, then you want to exclude fop2.lic and fop2_server from the /usr/local/fop2 directory. (Each server should have it’s own fop2_server and licence (plus its own copy of any licence plugs you use)
  • Other non-fop2 information in the AstDB will be restored.
  • Restoring will restart FreePBX on the destination server and therefore active calls on that server will be dropped. If you are doing this as part of a warm spare then there will be no calls on that server so this isn’t a problem.

Has anyone tried backing up FOP2 on FreePBX 15 using these instructions (or others) and then restoring the backup on FreePBX 16? Does the FOP2 license get clobbered?

Since I’m using a Virtualbox VM I suppose it wouldn’t be terribly complicated to test this myself using a clone or two.