diff --git a/app/snom/app_config.php b/app/snom/app_config.php
index 06e253f5d8..0d7bd1c3d8 100644
--- a/app/snom/app_config.php
+++ b/app/snom/app_config.php
@@ -47,6 +47,38 @@
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
$apps[$x]['default_settings'][$y]['default_setting_description'] = "Base URL for Snom Firmware. Download from https://service.snom.com/display/wiki/Deskphones+Firmware";
$y++;
+ $apps[$x]['default_settings'][$y]['default_setting_uuid'] = "ad401a74-8e71-4e6b-bd1f-613f46d79357";
+ $apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
+ $apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "snom_firmware_d862";
+ $apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
+ $apps[$x]['default_settings'][$y]['default_setting_value'] = "snomD862-10.1.170.11.bin";
+ $apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
+ $apps[$x]['default_settings'][$y]['default_setting_description'] = "Filename of the D862 firmware";
+ $y++;
+ $apps[$x]['default_settings'][$y]['default_setting_uuid'] = "1682389e-5021-413f-aa6a-1683e535e3b6";
+ $apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
+ $apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "snom_firmware_d865";
+ $apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
+ $apps[$x]['default_settings'][$y]['default_setting_value'] = "snomD865-10.1.170.11.bin";
+ $apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
+ $apps[$x]['default_settings'][$y]['default_setting_description'] = "Filename of the D865 firmware";
+ $y++;
+ $apps[$x]['default_settings'][$y]['default_setting_uuid'] = "8b234d78-77a7-42ce-a99a-43b687b7eae4";
+ $apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
+ $apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "snom_firmware_d815";
+ $apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
+ $apps[$x]['default_settings'][$y]['default_setting_value'] = "snomD815-10.1.170.11.bin";
+ $apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
+ $apps[$x]['default_settings'][$y]['default_setting_description'] = "Filename of the D815 firmware";
+ $y++;
+ $apps[$x]['default_settings'][$y]['default_setting_uuid'] = "120afb68-09e3-4dc6-bd31-d62da2add64f";
+ $apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
+ $apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "snom_firmware_d812";
+ $apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
+ $apps[$x]['default_settings'][$y]['default_setting_value'] = "snomD812-10.1.170.11.bin";
+ $apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
+ $apps[$x]['default_settings'][$y]['default_setting_description'] = "Filename of the D812 firmware";
+ $y++;
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "99459d0c-f366-11e9-a713-2a2ae2dbcce4";
$apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "snom_firmware_d785";
@@ -122,7 +154,6 @@
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "9945b97c-f366-11e9-a713-2a2ae2dbcce4";
$apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "snom_firmware_d375";
- $apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
$apps[$x]['default_settings'][$y]['default_setting_value'] = "snomD375-10.1.42.14.bin";
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
$apps[$x]['default_settings'][$y]['default_setting_description'] = "Filename of the D375 firmware";
diff --git a/resources/templates/provision/snom/D812/{$mac}.xml b/resources/templates/provision/snom/D812/{$mac}.xml
new file mode 100644
index 0000000000..ba37755c87
--- /dev/null
+++ b/resources/templates/provision/snom/D812/{$mac}.xml
@@ -0,0 +1,108 @@
+
+
+
+
+ {if isset($snom_language)}{$snom_language}{else}English{/if}
+ {if isset($snom_language)}{$snom_language}{else}English{/if}
+ {if isset($snom_tone_scheme)}{$snom_tone_scheme}{else}USA{/if}
+ {if isset($snom_ntp_server)}{$snom_ntp_server}{else}0.pool.ntp.org{/if}
+ 3600
+ {$snom_time_zone}
+ {if isset($snom_dhcp)}{$snom_dhcp}{/if}
+ snomD785-{substr($mac, -6)}
+ 20
+ 15
+ 5
+ display_name_number
+ on
+ on
+ off
+ {if isset($snom_dialtone_on_hold)}{$snom_dialtone_on_hold}{else}false{/if}
+
+ alert-internal
+ {if isset($snom_alert_internal)}{$snom_alert_internal}{else}Ringer1{/if}
+ alert-external
+ {if isset($snom_alert_external)}{$snom_alert_external}{else}Ringer1{/if}
+ alert-group
+ {if isset($snom_alert_group)}{$snom_alert_group}{else}Ringer1{/if}
+
+ {if isset($snom_wallpaper_url_d812)}{$snom_wallpaper_url_d812}{else}{$snom_wallpaper_url}{/if}
+
+ {if isset($snom_exp_wallpaper_url_d812)}{$snom_exp_wallpaper_url_d812}{else}{$snom_exp_wallpaper_url}{/if}
+
+ silent
+ stutter
+ on
+ off
+ off
+ {if isset($snom_quick_transfer)}{$snom_quick_transfer}{else}new_call{/if}
+ {if isset($snom_transfer_dialing_on_transfer)}{$snom_transfer_dialing_on_transfer}{else}blind{/if}
+ {if isset($snom_transfer_dialing_on_other)}{$snom_transfer_dialing_on_other}{else}blind{/if}
+ F_HOLD F_TRANSFER F_CONFERENCE
+
+ {if isset($snom_update_policy)}{$snom_update_policy}{else}auto_update{/if}
+ {$snom_firmware_url}{$snom_firmware_d812}
+ {$snom_firmware_url}{$snom_firmware_uxm}
+ {if isset($snom_provision_url)}{$snom_provision_url}{else}https://{$domain_name}{$project_path}/app/provision/index.php?mac={$mac}{/if}
+ {if isset($snom_provision_timer_seconds)}{$snom_provision_timer_seconds}{else}0{/if}
+ {$http_auth_username}
+ {$http_auth_password}
+
+ {if isset($admin_password) }
+ {$admin_name}
+ {$admin_password}
+ 5
+ on
+ {$admin_password}
+ {$admin_password}
+ {else}
+ on
+ 0000
+ 0000
+ {/if}
+
+ {foreach $lines as $row}
+ {if $row.enabled}on{else}off{/if}
+ {$row.display_name}
+ {$row.user_id}
+ {$row.password}
+ {$row.server_address}:{$row.sip_port}
+ {if $row.outbound_proxy_primary == ""}{$row.server_address}{else}{$row.outbound_proxy_primary}{/if}:{$row.sip_port};transport={if $row.sip_transport == 'tcp' || $row.sip_transport == 'tls'}{$row.sip_transport}{else}udp{/if},{if $row.outbound_proxy_secondary == ""}{else}{$row.outbound_proxy_secondary}:{$row.sip_port};transport={if $row.sip_transport == 'tcp' || $row.sip_transport == 'tls'}{$row.sip_transport}{else}udp{/if}{/if}
+ {$row.register_expires}
+ {if $row.shared_line == "on"}on{else}off{/if}
+ Default
+ off
+ {$voicemail_number}
+ on
+ off
+ {$stun_server}{if isset($stun_port)}:{$stun_port}{/if}
+ {$snom_stun_interval}
+ {if isset($snom_codec)}{$snom_codec}{else}g722,pcmu,pcma,gsm,g723,g726-32,aal2-g726-32,g729,telephone-event{/if}
+ {if isset($snom_keepalive)}{$snom_keepalive}{else}5{/if}
+ {if $row@index eq 11}{break}{/if}
+ {/foreach}
+
+
+
+
+
+ {assign var="maxKeys" value=77 - count($lines)}
+ {foreach $lines as $row}
+ line
+ {if $row@index eq 11}{break}{/if}
+ {/foreach}
+ {foreach $keys["line"] as $row}
+ {$row.device_key_type} {$row.device_key_value}
+ {if $row@index eq $maxKeys}{break}{/if}
+ {/foreach}
+
+
+
+ {foreach $contacts as $row}
+ -
+ {$row.contact_name_given} {$row.contact_name_family}
+ {if $row.category == "extensions"}{$row.phone_extension}{else}{$row.phone_number}{/if}
+
+ {/foreach}
+
+
diff --git a/resources/templates/provision/snom/D815/{$mac}.xml b/resources/templates/provision/snom/D815/{$mac}.xml
new file mode 100644
index 0000000000..a51cfd5ff2
--- /dev/null
+++ b/resources/templates/provision/snom/D815/{$mac}.xml
@@ -0,0 +1,108 @@
+
+
+
+
+ {if isset($snom_language)}{$snom_language}{else}English{/if}
+ {if isset($snom_language)}{$snom_language}{else}English{/if}
+ {if isset($snom_tone_scheme)}{$snom_tone_scheme}{else}USA{/if}
+ {if isset($snom_ntp_server)}{$snom_ntp_server}{else}0.pool.ntp.org{/if}
+ 3600
+ {$snom_time_zone}
+ {if isset($snom_dhcp)}{$snom_dhcp}{/if}
+ snomD815-{substr($mac, -6)}
+ 20
+ 15
+ 5
+ display_name_number
+ on
+ on
+ off
+ {if isset($snom_dialtone_on_hold)}{$snom_dialtone_on_hold}{else}false{/if}
+
+ alert-internal
+ {if isset($snom_alert_internal)}{$snom_alert_internal}{else}Ringer1{/if}
+ alert-external
+ {if isset($snom_alert_external)}{$snom_alert_external}{else}Ringer1{/if}
+ alert-group
+ {if isset($snom_alert_group)}{$snom_alert_group}{else}Ringer1{/if}
+
+ {if isset($snom_wallpaper_url_d815)}{$snom_wallpaper_url_d815}{else}{$snom_wallpaper_url}{/if}
+
+ {if isset($snom_exp_wallpaper_url_d815)}{$snom_exp_wallpaper_url_d815}{else}{$snom_exp_wallpaper_url}{/if}
+
+ silent
+ stutter
+ on
+ off
+ off
+ {if isset($snom_quick_transfer)}{$snom_quick_transfer}{else}new_call{/if}
+ {if isset($snom_transfer_dialing_on_transfer)}{$snom_transfer_dialing_on_transfer}{else}blind{/if}
+ {if isset($snom_transfer_dialing_on_other)}{$snom_transfer_dialing_on_other}{else}blind{/if}
+ F_HOLD F_TRANSFER F_CONFERENCE
+
+ {if isset($snom_update_policy)}{$snom_update_policy}{else}auto_update{/if}
+ {$snom_firmware_url}{$snom_firmware_d815}
+ {$snom_firmware_url}{$snom_firmware_uxm}
+ {if isset($snom_provision_url)}{$snom_provision_url}{else}https://{$domain_name}{$project_path}/app/provision/index.php?mac={$mac}{/if}
+ {if isset($snom_provision_timer_seconds)}{$snom_provision_timer_seconds}{else}0{/if}
+ {$http_auth_username}
+ {$http_auth_password}
+
+ {if isset($admin_password) }
+ {$admin_name}
+ {$admin_password}
+ 5
+ on
+ {$admin_password}
+ {$admin_password}
+ {else}
+ on
+ 0000
+ 0000
+ {/if}
+
+ {foreach $lines as $row}
+ {if $row.enabled}on{else}off{/if}
+ {$row.display_name}
+ {$row.user_id}
+ {$row.password}
+ {$row.server_address}:{$row.sip_port}
+ {if $row.outbound_proxy_primary == ""}{$row.server_address}{else}{$row.outbound_proxy_primary}{/if}:{$row.sip_port};transport={if $row.sip_transport == 'tcp' || $row.sip_transport == 'tls'}{$row.sip_transport}{else}udp{/if},{if $row.outbound_proxy_secondary == ""}{else}{$row.outbound_proxy_secondary}:{$row.sip_port};transport={if $row.sip_transport == 'tcp' || $row.sip_transport == 'tls'}{$row.sip_transport}{else}udp{/if}{/if}
+ {$row.register_expires}
+ {if $row.shared_line == "on"}on{else}off{/if}
+ Default
+ off
+ {$voicemail_number}
+ on
+ off
+ {$stun_server}{if isset($stun_port)}:{$stun_port}{/if}
+ {$snom_stun_interval}
+ {if isset($snom_codec)}{$snom_codec}{else}g722,pcmu,pcma,gsm,g723,g726-32,aal2-g726-32,g729,telephone-event{/if}
+ {if isset($snom_keepalive)}{$snom_keepalive}{else}5{/if}
+ {if $row@index eq 11}{break}{/if}
+ {/foreach}
+
+
+
+
+
+ {assign var="maxKeys" value=77 - count($lines)}
+ {foreach $lines as $row}
+ line
+ {if $row@index eq 11}{break}{/if}
+ {/foreach}
+ {foreach $keys["line"] as $row}
+ {$row.device_key_type} {$row.device_key_value}
+ {if $row@index eq $maxKeys}{break}{/if}
+ {/foreach}
+
+
+
+ {foreach $contacts as $row}
+ -
+ {$row.contact_name_given} {$row.contact_name_family}
+ {if $row.category == "extensions"}{$row.phone_extension}{else}{$row.phone_number}{/if}
+
+ {/foreach}
+
+
diff --git a/resources/templates/provision/snom/D862/{$mac}.xml b/resources/templates/provision/snom/D862/{$mac}.xml
new file mode 100644
index 0000000000..d35150fe18
--- /dev/null
+++ b/resources/templates/provision/snom/D862/{$mac}.xml
@@ -0,0 +1,108 @@
+
+
+
+
+ {if isset($snom_language)}{$snom_language}{else}English{/if}
+ {if isset($snom_language)}{$snom_language}{else}English{/if}
+ {if isset($snom_tone_scheme)}{$snom_tone_scheme}{else}USA{/if}
+ {if isset($snom_ntp_server)}{$snom_ntp_server}{else}0.pool.ntp.org{/if}
+ 3600
+ {$snom_time_zone}
+ {if isset($snom_dhcp)}{$snom_dhcp}{/if}
+ snomD785-{substr($mac, -6)}
+ 20
+ 15
+ 5
+ display_name_number
+ on
+ on
+ off
+ {if isset($snom_dialtone_on_hold)}{$snom_dialtone_on_hold}{else}false{/if}
+
+ alert-internal
+ {if isset($snom_alert_internal)}{$snom_alert_internal}{else}Ringer1{/if}
+ alert-external
+ {if isset($snom_alert_external)}{$snom_alert_external}{else}Ringer1{/if}
+ alert-group
+ {if isset($snom_alert_group)}{$snom_alert_group}{else}Ringer1{/if}
+
+ {if isset($snom_wallpaper_url_d862)}{$snom_wallpaper_url_d862}{else}{$snom_wallpaper_url}{/if}
+
+ {if isset($snom_exp_wallpaper_url_d862)}{$snom_exp_wallpaper_url_d862}{else}{$snom_exp_wallpaper_url}{/if}
+
+ silent
+ stutter
+ on
+ off
+ off
+ {if isset($snom_quick_transfer)}{$snom_quick_transfer}{else}new_call{/if}
+ {if isset($snom_transfer_dialing_on_transfer)}{$snom_transfer_dialing_on_transfer}{else}blind{/if}
+ {if isset($snom_transfer_dialing_on_other)}{$snom_transfer_dialing_on_other}{else}blind{/if}
+ F_HOLD F_TRANSFER F_CONFERENCE
+
+ {if isset($snom_update_policy)}{$snom_update_policy}{else}auto_update{/if}
+ {$snom_firmware_url}{$snom_firmware_d862}
+ {$snom_firmware_url}{$snom_firmware_uxm}
+ {if isset($snom_provision_url)}{$snom_provision_url}{else}https://{$domain_name}{$project_path}/app/provision/index.php?mac={$mac}{/if}
+ {if isset($snom_provision_timer_seconds)}{$snom_provision_timer_seconds}{else}0{/if}
+ {$http_auth_username}
+ {$http_auth_password}
+
+ {if isset($admin_password) }
+ {$admin_name}
+ {$admin_password}
+ 5
+ on
+ {$admin_password}
+ {$admin_password}
+ {else}
+ on
+ 0000
+ 0000
+ {/if}
+
+ {foreach $lines as $row}
+ {if $row.enabled}on{else}off{/if}
+ {$row.display_name}
+ {$row.user_id}
+ {$row.password}
+ {$row.server_address}:{$row.sip_port}
+ {if $row.outbound_proxy_primary == ""}{$row.server_address}{else}{$row.outbound_proxy_primary}{/if}:{$row.sip_port};transport={if $row.sip_transport == 'tcp' || $row.sip_transport == 'tls'}{$row.sip_transport}{else}udp{/if},{if $row.outbound_proxy_secondary == ""}{else}{$row.outbound_proxy_secondary}:{$row.sip_port};transport={if $row.sip_transport == 'tcp' || $row.sip_transport == 'tls'}{$row.sip_transport}{else}udp{/if}{/if}
+ {$row.register_expires}
+ {if $row.shared_line == "on"}on{else}off{/if}
+ Default
+ off
+ {$voicemail_number}
+ on
+ off
+ {$stun_server}{if isset($stun_port)}:{$stun_port}{/if}
+ {$snom_stun_interval}
+ {if isset($snom_codec)}{$snom_codec}{else}g722,pcmu,pcma,gsm,g723,g726-32,aal2-g726-32,g729,telephone-event{/if}
+ {if isset($snom_keepalive)}{$snom_keepalive}{else}5{/if}
+ {if $row@index eq 11}{break}{/if}
+ {/foreach}
+
+
+
+
+
+ {assign var="maxKeys" value=77 - count($lines)}
+ {foreach $lines as $row}
+ line
+ {if $row@index eq 11}{break}{/if}
+ {/foreach}
+ {foreach $keys["line"] as $row}
+ {$row.device_key_type} {$row.device_key_value}
+ {if $row@index eq $maxKeys}{break}{/if}
+ {/foreach}
+
+
+
+ {foreach $contacts as $row}
+ -
+ {$row.contact_name_given} {$row.contact_name_family}
+ {if $row.category == "extensions"}{$row.phone_extension}{else}{$row.phone_number}{/if}
+
+ {/foreach}
+
+
diff --git a/resources/templates/provision/snom/D865/{$mac}.xml b/resources/templates/provision/snom/D865/{$mac}.xml
new file mode 100644
index 0000000000..d35150fe18
--- /dev/null
+++ b/resources/templates/provision/snom/D865/{$mac}.xml
@@ -0,0 +1,108 @@
+
+
+
+
+ {if isset($snom_language)}{$snom_language}{else}English{/if}
+ {if isset($snom_language)}{$snom_language}{else}English{/if}
+ {if isset($snom_tone_scheme)}{$snom_tone_scheme}{else}USA{/if}
+ {if isset($snom_ntp_server)}{$snom_ntp_server}{else}0.pool.ntp.org{/if}
+ 3600
+ {$snom_time_zone}
+ {if isset($snom_dhcp)}{$snom_dhcp}{/if}
+ snomD785-{substr($mac, -6)}
+ 20
+ 15
+ 5
+ display_name_number
+ on
+ on
+ off
+ {if isset($snom_dialtone_on_hold)}{$snom_dialtone_on_hold}{else}false{/if}
+
+ alert-internal
+ {if isset($snom_alert_internal)}{$snom_alert_internal}{else}Ringer1{/if}
+ alert-external
+ {if isset($snom_alert_external)}{$snom_alert_external}{else}Ringer1{/if}
+ alert-group
+ {if isset($snom_alert_group)}{$snom_alert_group}{else}Ringer1{/if}
+
+ {if isset($snom_wallpaper_url_d862)}{$snom_wallpaper_url_d862}{else}{$snom_wallpaper_url}{/if}
+
+ {if isset($snom_exp_wallpaper_url_d862)}{$snom_exp_wallpaper_url_d862}{else}{$snom_exp_wallpaper_url}{/if}
+
+ silent
+ stutter
+ on
+ off
+ off
+ {if isset($snom_quick_transfer)}{$snom_quick_transfer}{else}new_call{/if}
+ {if isset($snom_transfer_dialing_on_transfer)}{$snom_transfer_dialing_on_transfer}{else}blind{/if}
+ {if isset($snom_transfer_dialing_on_other)}{$snom_transfer_dialing_on_other}{else}blind{/if}
+ F_HOLD F_TRANSFER F_CONFERENCE
+
+ {if isset($snom_update_policy)}{$snom_update_policy}{else}auto_update{/if}
+ {$snom_firmware_url}{$snom_firmware_d862}
+ {$snom_firmware_url}{$snom_firmware_uxm}
+ {if isset($snom_provision_url)}{$snom_provision_url}{else}https://{$domain_name}{$project_path}/app/provision/index.php?mac={$mac}{/if}
+ {if isset($snom_provision_timer_seconds)}{$snom_provision_timer_seconds}{else}0{/if}
+ {$http_auth_username}
+ {$http_auth_password}
+
+ {if isset($admin_password) }
+ {$admin_name}
+ {$admin_password}
+ 5
+ on
+ {$admin_password}
+ {$admin_password}
+ {else}
+ on
+ 0000
+ 0000
+ {/if}
+
+ {foreach $lines as $row}
+ {if $row.enabled}on{else}off{/if}
+ {$row.display_name}
+ {$row.user_id}
+ {$row.password}
+ {$row.server_address}:{$row.sip_port}
+ {if $row.outbound_proxy_primary == ""}{$row.server_address}{else}{$row.outbound_proxy_primary}{/if}:{$row.sip_port};transport={if $row.sip_transport == 'tcp' || $row.sip_transport == 'tls'}{$row.sip_transport}{else}udp{/if},{if $row.outbound_proxy_secondary == ""}{else}{$row.outbound_proxy_secondary}:{$row.sip_port};transport={if $row.sip_transport == 'tcp' || $row.sip_transport == 'tls'}{$row.sip_transport}{else}udp{/if}{/if}
+ {$row.register_expires}
+ {if $row.shared_line == "on"}on{else}off{/if}
+ Default
+ off
+ {$voicemail_number}
+ on
+ off
+ {$stun_server}{if isset($stun_port)}:{$stun_port}{/if}
+ {$snom_stun_interval}
+ {if isset($snom_codec)}{$snom_codec}{else}g722,pcmu,pcma,gsm,g723,g726-32,aal2-g726-32,g729,telephone-event{/if}
+ {if isset($snom_keepalive)}{$snom_keepalive}{else}5{/if}
+ {if $row@index eq 11}{break}{/if}
+ {/foreach}
+
+
+
+
+
+ {assign var="maxKeys" value=77 - count($lines)}
+ {foreach $lines as $row}
+ line
+ {if $row@index eq 11}{break}{/if}
+ {/foreach}
+ {foreach $keys["line"] as $row}
+ {$row.device_key_type} {$row.device_key_value}
+ {if $row@index eq $maxKeys}{break}{/if}
+ {/foreach}
+
+
+
+ {foreach $contacts as $row}
+ -
+ {$row.contact_name_given} {$row.contact_name_family}
+ {if $row.category == "extensions"}{$row.phone_extension}{else}{$row.phone_number}{/if}
+
+ {/foreach}
+
+