diff --git a/lib/NGCP/Panel/I18N/ru.po b/lib/NGCP/Panel/I18N/ru.po
index cff86ccbac..4f33d80a85 100644
--- a/lib/NGCP/Panel/I18N/ru.po
+++ b/lib/NGCP/Panel/I18N/ru.po
@@ -102,7 +102,7 @@ msgstr ""
#: lib/NGCP/Panel/Controller/Billing.pm:84
#: lib/NGCP/Panel/Controller/Contact.pm:32
#: lib/NGCP/Panel/Controller/Contract.pm:25
-#: lib/NGCP/Panel/Controller/Contract.pm:389
+#: lib/NGCP/Panel/Controller/Contract.pm:392
#: lib/NGCP/Panel/Controller/Customer.pm:280
#: lib/NGCP/Panel/Controller/Customer.pm:286
#: lib/NGCP/Panel/Controller/Customer.pm:295
@@ -330,7 +330,7 @@ msgstr "Принять"
msgid "Access Restrictions"
msgstr "Ограничения доступа"
-#: lib/NGCP/Panel/Controller/Customer.pm:853
+#: lib/NGCP/Panel/Controller/Customer.pm:856
msgid "Account balance successfully changed!"
msgstr "Баланс счета успешно изменен!"
@@ -701,7 +701,7 @@ msgid "Billing Fees"
msgstr "Цены"
#: lib/NGCP/Panel/Controller/Contract.pm:29
-#: lib/NGCP/Panel/Controller/Contract.pm:392
+#: lib/NGCP/Panel/Controller/Contract.pm:395
#: lib/NGCP/Panel/Controller/Customer.pm:53
#: lib/NGCP/Panel/Controller/Reseller.pm:45
#: lib/NGCP/Panel/Utils/DbStrings.pm:678 share/templates/billing/list.tt:3
@@ -1084,7 +1084,7 @@ msgstr "Звоню"
msgid "Callthrough CLIs"
msgstr ""
-#: lib/NGCP/Panel/Controller/Customer.pm:914
+#: lib/NGCP/Panel/Controller/Customer.pm:917
msgid "Can't create a PBX group without having a pilot subscriber."
msgstr "Не могу создать PBX группу без основного абонента."
@@ -1294,7 +1294,7 @@ msgid "Contact Details"
msgstr "Детали контакта"
#: lib/NGCP/Panel/Controller/Contract.pm:27
-#: lib/NGCP/Panel/Controller/Contract.pm:391
+#: lib/NGCP/Panel/Controller/Contract.pm:394
#: lib/NGCP/Panel/Controller/Customer.pm:51
#: lib/NGCP/Panel/Controller/Customer.pm:98
#: lib/NGCP/Panel/Controller/Peering.pm:27
@@ -1387,8 +1387,8 @@ msgid "Contract #%1"
msgstr "Контракт #%1"
#. ($contract->id)
-#: lib/NGCP/Panel/Controller/Contract.pm:329
-#: lib/NGCP/Panel/Controller/Contract.pm:457
+#: lib/NGCP/Panel/Controller/Contract.pm:332
+#: lib/NGCP/Panel/Controller/Contract.pm:460
msgid "Contract #%1 successfully created"
msgstr "Контракт #%1 успешно создан"
@@ -1408,7 +1408,7 @@ msgstr "Контракт абонента не существует"
msgid "Contract successfully changed!"
msgstr "Контракт успешно изменен!"
-#: lib/NGCP/Panel/Controller/Contract.pm:228
+#: lib/NGCP/Panel/Controller/Contract.pm:231
msgid "Contract successfully terminated"
msgstr "Контракт успешно удален"
@@ -1707,7 +1707,7 @@ msgid ""
msgstr ""
"Клиентский Набор Звуков используемый для PBX автоответчика и анонсов клиента."
-#: lib/NGCP/Panel/Controller/Customer.pm:532
+#: lib/NGCP/Panel/Controller/Customer.pm:535
msgid "Customer successfully terminated"
msgstr "Клиент успешно удален"
@@ -2484,7 +2484,7 @@ msgid "Extension of CloudPBX Subscriber"
msgstr "Добавочный номер абонента CloudPBX"
#: lib/NGCP/Panel/Controller/Contract.pm:26
-#: lib/NGCP/Panel/Controller/Contract.pm:390
+#: lib/NGCP/Panel/Controller/Contract.pm:393
#: lib/NGCP/Panel/Controller/Customer.pm:49
#: lib/NGCP/Panel/Controller/Customer.pm:96
#: lib/NGCP/Panel/Controller/Reseller.pm:150
@@ -2535,7 +2535,7 @@ msgstr ""
msgid "Failed to clear audio cache."
msgstr "Не удалось очистить аудио кэш."
-#: lib/NGCP/Panel/Controller/Customer.pm:823
+#: lib/NGCP/Panel/Controller/Customer.pm:826
msgid "Failed to clear fraud interval"
msgstr ""
@@ -2556,11 +2556,11 @@ msgstr ""
msgid "Failed to create NCOS pattern"
msgstr ""
-#: lib/NGCP/Panel/Controller/Customer.pm:1160
+#: lib/NGCP/Panel/Controller/Customer.pm:1163
msgid "Failed to create PBX device"
msgstr "Не удалось создать PBX устройства"
-#: lib/NGCP/Panel/Controller/Customer.pm:981
+#: lib/NGCP/Panel/Controller/Customer.pm:984
msgid "Failed to create PBX group"
msgstr ""
@@ -2568,8 +2568,8 @@ msgstr ""
msgid "Failed to create administrator"
msgstr ""
-#: lib/NGCP/Panel/Utils/Preferences.pm:347
-msgid "Failed to create allowed_ip_grp."
+#: lib/NGCP/Panel/Utils/Preferences.pm:370
+msgid "Failed to create allowed_ip_grp"
msgstr ""
#: lib/NGCP/Panel/Controller/Billing.pm:255
@@ -2584,8 +2584,8 @@ msgstr ""
msgid "Failed to create contact"
msgstr ""
-#: lib/NGCP/Panel/Controller/Contract.pm:336
-#: lib/NGCP/Panel/Controller/Contract.pm:464
+#: lib/NGCP/Panel/Controller/Contract.pm:339
+#: lib/NGCP/Panel/Controller/Contract.pm:467
msgid "Failed to create contract"
msgstr ""
@@ -2625,8 +2625,8 @@ msgstr ""
msgid "Failed to create invoice."
msgstr "Не удалось создать счёт-фактуру."
-#: lib/NGCP/Panel/Utils/Preferences.pm:388
-msgid "Failed to create man_allowed_ip_grp."
+#: lib/NGCP/Panel/Utils/Preferences.pm:430
+msgid "Failed to create man_allowed_ip_grp"
msgstr ""
#: lib/NGCP/Panel/Controller/NumberBlock.pm:144
@@ -2646,8 +2646,8 @@ msgid "Failed to create peering server"
msgstr ""
#. ($attribute)
-#: lib/NGCP/Panel/Utils/Preferences.pm:424
-msgid "Failed to create preference %1."
+#: lib/NGCP/Panel/Utils/Preferences.pm:475
+msgid "Failed to create preference %1"
msgstr ""
#: lib/NGCP/Panel/Controller/Reseller.pm:101
@@ -2675,7 +2675,7 @@ msgstr ""
msgid "Failed to create speed dial slot"
msgstr ""
-#: lib/NGCP/Panel/Controller/Customer.pm:738
+#: lib/NGCP/Panel/Controller/Customer.pm:741
#: lib/NGCP/Panel/Controller/Subscriber.pm:196
msgid "Failed to create subscriber"
msgstr ""
@@ -2704,7 +2704,7 @@ msgstr ""
msgid "Failed to delete NCOS pattern"
msgstr ""
-#: lib/NGCP/Panel/Controller/Customer.pm:1324
+#: lib/NGCP/Panel/Controller/Customer.pm:1327
msgid "Failed to delete PBX device"
msgstr "Не удалось удалить PBX устройство"
@@ -2778,9 +2778,9 @@ msgid "Failed to delete peering server"
msgstr ""
#. ($attribute)
-#: lib/NGCP/Panel/Utils/Preferences.pm:527
-#: lib/NGCP/Panel/Utils/Preferences.pm:538
-msgid "Failed to delete preference %1."
+#: lib/NGCP/Panel/Utils/Preferences.pm:612
+#: lib/NGCP/Panel/Utils/Preferences.pm:632
+msgid "Failed to delete preference %1"
msgstr ""
#: lib/NGCP/Panel/Controller/Subscriber.pm:3084
@@ -2839,12 +2839,12 @@ msgstr "Не удалось найти пользователя голосово
msgid "Failed to generate client certificate."
msgstr "Не удалось создать сертификат клиента"
-#: lib/NGCP/Panel/Utils/Preferences.pm:335
-msgid "Failed to generate ip group sequence."
+#: lib/NGCP/Panel/Utils/Preferences.pm:348
+msgid "Failed to generate ip group sequence"
msgstr ""
-#: lib/NGCP/Panel/Utils/Preferences.pm:376
-msgid "Failed to generate manual ip group sequence."
+#: lib/NGCP/Panel/Utils/Preferences.pm:408
+msgid "Failed to generate manual ip group sequence"
msgstr ""
#: lib/NGCP/Panel/Controller/Customer.pm:255
@@ -2896,8 +2896,8 @@ msgstr "Не удалось сохранить метаданные счёт-ф
msgid "Failed to store invoice template"
msgstr "Не удалось сохранить шаблон счёт-фактуры."
-#: lib/NGCP/Panel/Controller/Contract.pm:235
-#: lib/NGCP/Panel/Controller/Customer.pm:539
+#: lib/NGCP/Panel/Controller/Contract.pm:238
+#: lib/NGCP/Panel/Controller/Customer.pm:542
msgid "Failed to terminate contract"
msgstr ""
@@ -2925,11 +2925,11 @@ msgstr ""
msgid "Failed to update NCOS pattern"
msgstr ""
-#: lib/NGCP/Panel/Controller/Customer.pm:1294
+#: lib/NGCP/Panel/Controller/Customer.pm:1297
msgid "Failed to update PBX device"
msgstr "Не удалось обновить PBX устройство"
-#: lib/NGCP/Panel/Controller/Customer.pm:1066
+#: lib/NGCP/Panel/Controller/Customer.pm:1069
msgid "Failed to update PBX group"
msgstr ""
@@ -3010,11 +3010,11 @@ msgid "Failed to update peering server"
msgstr ""
#. ($attribute)
-#: lib/NGCP/Panel/Utils/Preferences.pm:458
-#: lib/NGCP/Panel/Utils/Preferences.pm:483
-#: lib/NGCP/Panel/Utils/Preferences.pm:508
-#: lib/NGCP/Panel/Utils/Preferences.pm:551
-msgid "Failed to update preference %1."
+#: lib/NGCP/Panel/Utils/Preferences.pm:522
+#: lib/NGCP/Panel/Utils/Preferences.pm:554
+#: lib/NGCP/Panel/Utils/Preferences.pm:586
+#: lib/NGCP/Panel/Utils/Preferences.pm:654
+msgid "Failed to update preference %1"
msgstr ""
#: lib/NGCP/Panel/Controller/Subscriber.pm:2879
@@ -3235,7 +3235,7 @@ msgstr "Блокировать при достижении дневного ли
msgid "Fraud daily notify"
msgstr "Информировать при достижении дневного лимита"
-#: lib/NGCP/Panel/Controller/Customer.pm:782
+#: lib/NGCP/Panel/Controller/Customer.pm:785
msgid "Fraud settings successfully changed!"
msgstr "Настройки информирования о мошенничестве успешно изменены!"
@@ -3643,7 +3643,7 @@ msgstr "Обнаружен некорректный id для тарифной
msgid "Invalid contact id detected"
msgstr "Обнаружен некорректный id контакта"
-#: lib/NGCP/Panel/Controller/Contract.pm:377
+#: lib/NGCP/Panel/Controller/Contract.pm:380
#: lib/NGCP/Panel/Controller/Invoice.pm:81
#: lib/NGCP/Panel/Controller/Sound.pm:101
msgid "Invalid contract id detected"
@@ -3692,8 +3692,8 @@ msgid "Invalid file type detected, only WAV supported"
msgstr "Обнаружен некорректный тип файла, поддерживается только WAV"
#. ($type)
-#: lib/NGCP/Panel/Controller/Customer.pm:763
-#: lib/NGCP/Panel/Controller/Customer.pm:804
+#: lib/NGCP/Panel/Controller/Customer.pm:766
+#: lib/NGCP/Panel/Controller/Customer.pm:807
msgid "Invalid fraud interval '%1'!"
msgstr "Некорректный интервал мошенничества '%1'!"
@@ -3737,8 +3737,8 @@ msgstr "Обнаружен некорректный id для контракта
msgid "Invalid profile id detected!"
msgstr "Обнаружен некорректный id профиля!"
-#: lib/NGCP/Panel/Controller/Customer.pm:1132
-#: lib/NGCP/Panel/Controller/Customer.pm:1265
+#: lib/NGCP/Panel/Controller/Customer.pm:1135
+#: lib/NGCP/Panel/Controller/Customer.pm:1268
msgid "Invalid provisioning subscriber id detected."
msgstr "Обнаружен некорректный id автоконфигурации абонента."
@@ -4102,6 +4102,10 @@ msgstr "Редактировать набор звуков %1"
msgid "Manage Time Sets"
msgstr "Редактировать наборы периодов"
+#: lib/NGCP/Panel/Utils/Preferences.pm:401
+msgid "Manual ip group sequence successfully generated"
+msgstr ""
+
#: lib/NGCP/Panel/Utils/DbStrings.pm:144
msgid "Manually defined allowed source IPs"
msgstr "Ручной список разрешенных IP адресов"
@@ -4201,8 +4205,8 @@ msgid ""
"to the application server and intra-PBX calls."
msgstr ""
-#: lib/NGCP/Panel/Controller/Customer.pm:568
-#: lib/NGCP/Panel/Controller/Customer.pm:899
+#: lib/NGCP/Panel/Controller/Customer.pm:571
+#: lib/NGCP/Panel/Controller/Customer.pm:902
msgid "Maximum number of subscribers for this customer reached"
msgstr "Достигнуто максимальное количество абонентов для этого клиента"
@@ -4688,12 +4692,12 @@ msgstr "Правила перезаписи вызывающего (Caller) пр
msgid "Outbound socket to be used for SIP communication to this entity"
msgstr "Сокет используемый для исходящего SIP трафика для этой записи"
-#: lib/NGCP/Panel/Controller/Customer.pm:1171
-#: lib/NGCP/Panel/Controller/Customer.pm:1305
+#: lib/NGCP/Panel/Controller/Customer.pm:1174
+#: lib/NGCP/Panel/Controller/Customer.pm:1308
msgid "PBX Device"
msgstr "Устройство PBX"
-#: lib/NGCP/Panel/Controller/Customer.pm:1317
+#: lib/NGCP/Panel/Controller/Customer.pm:1320
msgid "PBX Device successfully deleted"
msgstr "Устройство PBX успешно удалено"
@@ -4705,7 +4709,7 @@ msgstr "Устройства PBX"
msgid "PBX Extension"
msgstr "PBX добавочный номер"
-#: lib/NGCP/Panel/Controller/Customer.pm:991
+#: lib/NGCP/Panel/Controller/Customer.pm:994
msgid "PBX Group"
msgstr "Группа PBX"
@@ -4725,34 +4729,34 @@ msgstr "Настройки PBX Группы %1@%2"
msgid "PBX Groups"
msgstr "Группы PBX"
-#: lib/NGCP/Panel/Controller/Customer.pm:1151
+#: lib/NGCP/Panel/Controller/Customer.pm:1154
msgid "PBX device successfully created"
msgstr "Устройство PBX успешно создано"
-#: lib/NGCP/Panel/Controller/Customer.pm:1285
+#: lib/NGCP/Panel/Controller/Customer.pm:1288
msgid "PBX device successfully updated"
msgstr "Устройство PBX успешно обновлено"
#. ($dev_id)
-#: lib/NGCP/Panel/Controller/Customer.pm:1191
+#: lib/NGCP/Panel/Controller/Customer.pm:1194
msgid "PBX device with id %1 does not exist for this customer."
msgstr "Не существует устройства PBX с id %1 для данного клиента."
#. ($dev_id)
-#: lib/NGCP/Panel/Controller/Customer.pm:1183
+#: lib/NGCP/Panel/Controller/Customer.pm:1186
msgid "PBX device with id %1 does not exist."
msgstr "Не существует устройства PBX с id %1."
-#: lib/NGCP/Panel/Controller/Customer.pm:975
+#: lib/NGCP/Panel/Controller/Customer.pm:978
msgid "PBX group successfully created"
msgstr ""
-#: lib/NGCP/Panel/Controller/Customer.pm:1060
+#: lib/NGCP/Panel/Controller/Customer.pm:1063
msgid "PBX group successfully updated"
msgstr ""
#. ($group_id)
-#: lib/NGCP/Panel/Controller/Customer.pm:1003
+#: lib/NGCP/Panel/Controller/Customer.pm:1006
msgid "PBX group with id %1 does not exist."
msgstr "Не существует группа PBX с id %1"
@@ -5018,12 +5022,23 @@ msgid "Postcode"
msgstr "Почтовый индекс"
#. ($attribute)
-#: lib/NGCP/Panel/Utils/Preferences.pm:437
-#: lib/NGCP/Panel/Utils/Preferences.pm:463
-#: lib/NGCP/Panel/Utils/Preferences.pm:488
-#: lib/NGCP/Panel/Utils/Preferences.pm:513
-#: lib/NGCP/Panel/Utils/Preferences.pm:556
-msgid "Preference %1 successfully updated."
+#: lib/NGCP/Panel/Utils/Preferences.pm:468
+msgid "Preference %1 successfully created"
+msgstr ""
+
+#. ($attribute)
+#: lib/NGCP/Panel/Utils/Preferences.pm:605
+#: lib/NGCP/Panel/Utils/Preferences.pm:625
+msgid "Preference %1 successfully deleted"
+msgstr ""
+
+#. ($attribute)
+#: lib/NGCP/Panel/Utils/Preferences.pm:492
+#: lib/NGCP/Panel/Utils/Preferences.pm:515
+#: lib/NGCP/Panel/Utils/Preferences.pm:547
+#: lib/NGCP/Panel/Utils/Preferences.pm:579
+#: lib/NGCP/Panel/Utils/Preferences.pm:647
+msgid "Preference %1 successfully updated"
msgstr ""
#: share/templates/helpers/pref_table.tt:156
@@ -6179,7 +6194,7 @@ msgid "Station Name"
msgstr "Имя станции"
#: lib/NGCP/Panel/Controller/Contract.pm:30
-#: lib/NGCP/Panel/Controller/Contract.pm:393
+#: lib/NGCP/Panel/Controller/Contract.pm:396
#: lib/NGCP/Panel/Controller/Customer.pm:54
#: lib/NGCP/Panel/Controller/Customer.pm:99
#: lib/NGCP/Panel/Controller/Reseller.pm:137
@@ -6354,7 +6369,7 @@ msgstr "Профиль абонента успешно обновлен"
msgid "Subscriber status is %1"
msgstr "Состояние абонента %1"
-#: lib/NGCP/Panel/Controller/Customer.pm:732
+#: lib/NGCP/Panel/Controller/Customer.pm:735
msgid "Subscriber successfully created"
msgstr ""
@@ -6380,7 +6395,7 @@ msgstr "Зарегистрированное устройство успешно
msgid "Successfully cleared Call Forward"
msgstr "Перенаправление звонков успешно очищено"
-#: lib/NGCP/Panel/Controller/Customer.pm:832
+#: lib/NGCP/Panel/Controller/Customer.pm:835
msgid "Successfully cleared fraud interval!"
msgstr "Интервал мошенничества успешно очищен!"
@@ -6436,7 +6451,7 @@ msgstr "IP авторизация успешно удалена"
msgid "Successfully deleted voicemail"
msgstr "Голосовое сообщение успешно удалено"
-#: lib/NGCP/Panel/Controller/Customer.pm:1381
+#: lib/NGCP/Panel/Controller/Customer.pm:1384
msgid "Successfully redirected request to device"
msgstr "Запрос к устройству успешно перенаправлен"
@@ -6462,7 +6477,7 @@ msgstr "Реселлер успешно удален"
msgid "Successfully terminated subscriber"
msgstr "Абонент успешно удален"
-#: lib/NGCP/Panel/Controller/Customer.pm:1363
+#: lib/NGCP/Panel/Controller/Customer.pm:1366
msgid "Successfully triggered config reload via SIP"
msgstr ""
@@ -8171,6 +8186,10 @@ msgstr "все исходящие звонки"
msgid "all rights reserved"
msgstr "Все права защищены"
+#: lib/NGCP/Panel/Utils/Preferences.pm:363
+msgid "allowed_ip_grp successfully created"
+msgstr ""
+
#: share/templates/customer/details.tt:424
#: share/templates/customer/details.tt:453
msgid "billing profile default"
@@ -8361,6 +8380,10 @@ msgstr "номер инцидента:"
msgid "incoming and outgoing"
msgstr "входящие и исходящие"
+#: lib/NGCP/Panel/Utils/Preferences.pm:341
+msgid "ip group sequence successfully generated"
+msgstr ""
+
#: share/templates/subscriber/webphone.tt:208
msgid "is typing..."
msgstr "набирает текст..."
@@ -8377,6 +8400,10 @@ msgstr "загрузка..."
msgid "locked"
msgstr "заблокирован"
+#: lib/NGCP/Panel/Utils/Preferences.pm:423
+msgid "man_allowed_ip_grp successfully created"
+msgstr ""
+
#: share/templates/subscriber/preferences.tt:303
#: share/templates/subscriber/preferences.tt:335
msgid "no"