Skip to content

Migration from 3.0.x to 3.1.0

This section is meant to provide useful help in migrating your OpenSIPS installations from the 3.0.0 version to 3.1.0.

You can find the all the new additions in the 3.1.0 release compiled under this page. The ChangeLog may help your understanding of the migration / update process.


You can migrate your 3.0.x MySQL DB to the 3.1.x format using the opensips-cli tool :

Terminal window
$ opensips-cli -x database migrate 3.0_to_3.1 opensips_3_0 opensips_3_1

where :

  • opensips_3_0 is the existing DB name corresponding to version 3.0.x format
  • opensips_3_1 is the DB name to be created for 3.1.x format

See the opensips-cli documentation for more details.


The following is the full list of backwards-incompatible syntax or functional changes in the OpenSIPS configuration script:

  • the listen parameter was renamed as socket parameter, with the same definition and behavior.
  • the tcp_listen_backlog parameter was renamed as tcp_socket_backlog parameter, with the same definition and behavior.
  • script variable $fs to be replaced with $socket_out
  • script variable $Ri to be replaced with $socket_in(ip)
  • script variable $Rp to be replaced with $socket_in(port)
  • script variable $af to be replaced with $socket_in(af)
  • script variables $proto/$pr to be replaced with $socket_in(proto)
  • the auto_aliases is now by default off, so if you had no setting of it in the old script you should set it explicitly to “on” to keep the same behavior.
  • The following alias names were dropped:
    • rewritehost() for sethost()
    • rewritehostport() for sethostport()
    • rewriteuser() for setuser()
    • rewriteuserpass() for setuserpass()
    • rewriteport() for setport()
    • rewriteuri() for seturi()
  • cache_raw_query()‘s last parameter is now an unquoted variable
  • construct_uri()‘s user, port and extra are now optional parameters
  • isflagset()‘s, resetflag()‘s and setflag()‘s parameter is now a quoted string
  • isbflagset()‘s, resetbflagset()‘s and setbflagset()‘s flag parameter is now a quoted string
  • the order of isbflagset()‘s, resetbflagset()‘s and setbflagset()‘s flag and branch_idx parameters has been inverted
  • raise_event()‘s third parameter should now be always provided if you want the raised event to include attributes (eg. raise_event("E_MY_EVENT", $avp(attr-val)) calls should be replaced with raise_event("E_MY_EVENT", , $avp(attr-val)) calls)
  • the migration requirements caused by the the changes in the core functions parameter interface have been described above; nevertheless you can also check the 2-4 to 3-0 module functions migration guidelines described here as the changes are similar.
  • the “qop” parameter of the www_challenge() and proxy_challenge() functions is now optional and accepts the values: auth, auth-int or both (separated by ’,’).
  • dropped the replication_mode module parameter.
  • the $DLG_did format has been changed from printing the entry:id of the dialog to hex(entry).hex(id), just as the Record-Route parameter is added
  • the dlg_list MI command no longer outputs the DB id as the ID of the dialog, but a hex(entry).hex(id) representation of its id. The DB id field has been moved in the db_id node.
  • the dlg_end_dlg MI command no longer receives the DB id as an identifier for finding the dialog to terminate, but the same hex(entry).hex(id) printed by the $DLG_did variable and by the dlg_list command.
  • the carrier flags have shifted as seen below. This breaks the code of any provisioning UIs written for OpenSIPS 3.0 which are using the old flags (e.g. OpenSIPS Control Panel 8.3.0).
    • WEIGHT_ROUTING (removed, replaced by the new sort_alg column)
    • USE_FIRST_GW (2 -> 1)
    • DISABLED (4 -> 2)
    • DIRTY (8 -> 4)
  • the “W” flag of do_routing() has been removed in favour of specifying it via the database (specifically, the dr_rules.sort_alg column). If you were using weight-based routing before, you need to update all of your dr_rules to use the “W” sorting algorithm instead of “N” (“None”, the current default).
  • The event payload is now formated as a JSON-RPC notification instead of the custom OpenSIPS line oriented formatting, so you have to change the parsing of the event in your external applications.
  • the event_jsonrpc module has been renamed to event_stream. you have to replace your modparam("event_jsonrpc"... lines with modparam("event_stream"... lines
  • the transport protocol token from the event socket has been changed from jsonrpc to tcp (for example, you have to use tcp:127.0.0.1:8080/block_ip instead of jsonrpc:127.0.0.1:8080/block_ip).
  • The event payload is now formated as a JSON-RPC notification instead of the custom OpenSIPS line oriented formatting, so you have to change the parsing of the event in your external applications.
  • switch to string values instead of integers for the cluster_federation_mode module parameter (disabled instead of 0 and on-demand-sharing instead of 1)
  • the server_address module parameter has been dropped - its functionality was replaced by the new contact_user parameter.
  • the tls_handshake_timeout and tls_send_timeout parameters have been moved from the tls_mgm module to the proto_tls module. Check out the new documentation here]. To migrate your script, you should replace any of your lines as it follows:
# Before 3.1 was modparam("tls_mgm", "tls_handshake_timeout", 200)
modparam("proto_tls", "tls_handshake_timeout", 200)
# Before 3.1 was modparam("tls_mgm", "tls_send_timeout", 200)
modparam("proto_tls", "tls_send_timeout", 200)
  • the tls_handshake_timeout and tls_send_timeout from the tls_mgm module have been removed, thus they can no longer be used to tune the proto_wss module. Instead of those parameters, we’ve added the wss_tls_handshake_timeout and wss_send_timeout, that are now part of the proto_wss module. To migrate your script, you should replace any of your lines as it follows:
# Before 3.1 was modparam("tls_mgm", "tls_handshake_timeout", 200)
modparam("proto_wss", "wss_tls_handshake_timeout", 200)
# Before 3.1 was modparam("tls_mgm", "tls_send_timeout", 200)
modparam("proto_wss", "wss_send_timeout", 200)
  • the default tls_method has been changed from SSLv23 to TLSv1_2. Therefore if you were not setting the tls_method parameter in your script, you will now have to explicitly set it: modparam("tls_mgm", "tls_method", "[default]SSLv23")
  • fr_timer and fr_inv_timer are now completely removed (not just deprecated). Use fr_timeout and fr_inv_timeout instead!