What’s new in EMG 7

Database-driven configuration

EMG 7 can use a configuration from a database. When the keyword DBCONFIG is present, EMG will use a minimal server.cfg and generate additional configuration files from the database tables.

EMG Portal 2 supports managing the configuration in the database.

The command “emgd -initdbconfig” can be run to import an existing server.cfg configuration into a database.

PDU log in database

The keyword PDULOGDB will enable logging of pdus in the database (table “pdulog”) in the same way as ROUTELOGDB enables the messagelog (table “routelog”).

EMG Portal supports displaying the pdu log in order to facilitate troubleshooting.

EMG watchdog

A new separate watchdog script has been implemented to monitor the EMG server (emgd) status and available disk space on server. It also features an integrated http server which can be used by external applications (such as EMG Portal) to control the emgd process, browse EMG server log files and more. Upon startup, shutdown and any issues discovered e-mail notifications will be sent to one or more specified e-mail addresses.

Max queue size per connector

A maximum queue size can be set per connector via the new connector keyword MAXQUEUESIZE.

If a message is routed to a connector where this keyword is set and the max limit has been reached the connector will be treated as unavailable and fail-over will occur if defined.

If no fail-over is defined or can be performed the message will be rejected with a “queue full” or “busy” depending on protocol.


The window size specifies how many unacknowledged operations is permitted before sending of messages is paused.

The default value in EMG is 1 but with WINDOWSIZE=auto, and under sustained load, EMG will try to increase the window size step by step as long as the throughput improves. When throughput decreases the window size is decreased as well.

New debug log file

The general log file grows much faster than any other log file when running in debug mode.

In EMG 7 the debug output has been moved from “general” log file into its own “debug” log file and only log level INFO and higher is written to the “general” log file.

Log file rotation improved

The “debug” log file has been assigned its own log file rotation keyword, LOGROTATE_DEBUG. Thereby a bit more control over the log file rotation is possible:

# Keep a max of 20 debug log files, each up to 100 MB
# For other log files a max of 10 files, each up to 20 MB, is kept

Also the “security” log file has been removed. The entries that previously was written to “security” are now written to “general”.

DLRMINMATCHLENGTH now defaults to 0

When matching deliver reports (dlrs) in SMPP EMG 6 tried to match the last three digits in the source and destination addresses in addition to the smsc id.

In EMG 7 this check has been disabled by changing the default to 0. It can be reenabled by using DLRMINMATCHLENGTH=3.

DEFAULT_SMSCOP for HTTP (outgoing) now defaults to 3

The default operation for outgoing HTTP connectors has been changed from 1 (GET) to 3 (POST).

Reseller support

Database support has been added to support a future reseller view in EMG Portal and to support related billing.

Database changes

See “Schema changes” below.

Migrating to EMG 7.0

Binary compatibility

EMG 7.0 is only available for Linux 64-bit (compiled on CentOS 6.6).

Schema changes

New tables

“pdulog”, “cfg_general”, “cfg_connectors”, “cfg_connectoroptions”, “cfg_plugins”, “cfg_satpools”.

New columns

emguser: “parent_id”

routelog: “charge_reseller”, “charge_reseller_id”, “charcode”

Database migration

The schema of the routelog table has changed and it thereby needs to be migrated when upgrading to EMG 7.0. Since the routelog table can contain a large number of entries it can take a considerable amount of time to apply the migration. A rough estimation would be that about 1 million rows can be converted per minute. It may be wise to perform the migration in a test environment before applying it to a production database.


C plugins need to be re-compiled using the EMG 7 SDK. Perl plugins should not be affected.