<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.kolmisoft.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Admin</id>
	<title>Kolmisoft Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.kolmisoft.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Admin"/>
	<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php/Special:Contributions/Admin"/>
	<updated>2026-04-16T19:44:23Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.37.1</generator>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=MOR_API&amp;diff=31526</id>
		<title>MOR API</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=MOR_API&amp;diff=31526"/>
		<updated>2026-04-15T05:48:04Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* Rates */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:warning.png|100px|alt=&amp;quot;warning&amp;quot;|link=]]&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;IMPORTANT!!! API methods described here are for newest MOR version. For previous versions please check appropriate [http://wiki.kolmisoft.com/index.php/MOR_Manual#Old_Manuals manual].&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
[[File:api.png|right|alt=&amp;quot;api&amp;quot;|link=]]&lt;br /&gt;
&amp;lt;mkmeta&amp;gt;Application Program Interface for MOR Class 5 Softswitch&amp;lt;/mkmeta&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=About=&lt;br /&gt;
MOR API lets other software interact with MOR without knowing the internal structure of the database (DB) and other logic.&lt;br /&gt;
&lt;br /&gt;
MOR accepts requests by HTML POST and returns results in XML.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=MOR users that are allowed to use MOR API=&lt;br /&gt;
* Admin&lt;br /&gt;
* Reseller&lt;br /&gt;
* Accountant - only by using Admin Hash and Secret key&lt;br /&gt;
* Simple User&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Functions=&lt;br /&gt;
&lt;br /&gt;
== API Related ==&lt;br /&gt;
* [[API Configuration]] – configuration options for API.&lt;br /&gt;
* [[MOR API hash construction|Hash construction]] – how to construct hash to authenticate data over API.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Aggregate==&lt;br /&gt;
* [[MOR API aggregate get | aggregate_get]] - for getting MOR aggregate statistics. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Autodialer==&lt;br /&gt;
* [[MOR API autodialer upload numbers | autodialer_upload_numbers]] - upload numbers from CSV file to existing Autodialer Campaign.&lt;br /&gt;
* [[MOR API autodialer get campaign statistics | autodialer_get_campaign_statistics]] - gets Autodialer campaign statistics for selected period.&lt;br /&gt;
* [[MOR API autodialer redial all failed calls | autodialer_redial_all_failed_calls]] - initiate Redial all failed calls action for specific campaign.&lt;br /&gt;
* [[MOR API autodialer get campaign ivr poll results | autodialer_get_campaign_ivr_poll_results]] - gets Autodialer camoaign ivr poll results.&lt;br /&gt;
* [[MOR API autodialer change campaign status | autodialer_change_campaign_status]] - changes Autodialer campaign status.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Balance==&lt;br /&gt;
* [[MOR API user balance update | user_balance_update]] (change_user_balance) – changes User's Balance&lt;br /&gt;
Various methods to retrieve User balance&lt;br /&gt;
* [[MOR API user_balance_get|user_balance_get]] (balance) – retrieves a User Balance.&lt;br /&gt;
* [[Balance in phone | user_simple_balance_get]] (simple_balance) – gets User's Balance&lt;br /&gt;
* [[MOR API user balance get by psw | user_balance_get_by_psw]] – gets User's Balance by his owned Device's Password&lt;br /&gt;
* [[MOR API User Balance get by Username | user_balance_get_by_username]] – gets User's Balance by his owned Device's Username&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Callback==&lt;br /&gt;
NOTE: A Callback addon is needed. Does not work on a limited version.&lt;br /&gt;
* [[MOR API callback init|callback_init]] (callback) – initiates callback.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Calling Cards==&lt;br /&gt;
* [[MOR API card_by_cli_update| card_by_cli_update]] (cc_by_cli) – creates and updates calling cards, including adding and transferring funds, by being identified according the Caller_ID.&lt;br /&gt;
* [[MOR API card_from_group_sell| card_from_group_sell]] (buy_card_from_callingroup) – sells cards from calling card group.&lt;br /&gt;
* [[MOR API card_group_get| card_group_get]] (show_calling_card_group) – show calling group info.&lt;br /&gt;
* [[MOR API card_balance_get| card_balance_get]] (card_balance_get) – show card's balance.&lt;br /&gt;
* [[MOR API card_payment_add| card_payment_add]] – add payment to the calling card.&lt;br /&gt;
* [[MOR_API_Calling_Cards_create| calling_cards_create]] – create Calling Cards.&lt;br /&gt;
* [[MOR_API_Calling_Card_update| calling_card_update]] – update Calling Card.&lt;br /&gt;
* [[MOR_API_Calling_Cards_get| calling_cards_get]] - get Calling Cards.&lt;br /&gt;
* [[MOR_API_Card_Group_create| cc_group_create]] – create Card Group.&lt;br /&gt;
* [[MOR_API_Card_Group_update| cc_group_update]] – update Card Group.&lt;br /&gt;
* [[MOR API Card Groups get| cc_groups_get]] – show Calling Cards Group info.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Calls==&lt;br /&gt;
* [[MOR API user calls get|user_calls_get]] (user_calls) – retrieves a list of calls in a selected time period for a user/device.&lt;br /&gt;
* [[MOR API local calls get|local_calls_get]] - retrieves a list of local calls in a selected time period for a user.&lt;br /&gt;
* [[MOR_API_active_calls_get|active_calls_get]] - Retrieves list of active calls for specified User.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Conflines==&lt;br /&gt;
* [[MOR API conflines update|conflines_update]] – changes settings for API, Default User or Default Device.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==Credit notes==&lt;br /&gt;
* [[MOR API credit_notes_get| credit_notes_get]] (credit_notes) – credit notes list.&lt;br /&gt;
* [[MOR API credit_note_update| credit_note_update]] – credit note update.&lt;br /&gt;
* [[MOR API credit_notes_create| credit_note_create]] – credit note create.&lt;br /&gt;
* [[MOR API credit_notes_delete| credit_note_delete]] – credit note delete.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==Currencies==&lt;br /&gt;
* [[MOR_API_Exchange_rate_update|exchange_rate_update]] - Currency Exchange rate update.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==Device==&lt;br /&gt;
&lt;br /&gt;
* [[MOR API device create| device_create]] – create device&lt;br /&gt;
* [[MOR_API_device_update | device_update]]  –  update device settings.&lt;br /&gt;
* [[MOR API device delete| device_delete]] (delete_device) – delete device&lt;br /&gt;
* [[MOR API devices get | devices_get]] (device_list) – users device list&lt;br /&gt;
* [[MOR API device details get | device_details_get]] – shows all information about specified device.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* [[MOR API device callflow get| device_callflow_get]] - returns information about specified device callflow state.&lt;br /&gt;
* [[MOR API device callflow update | device_callflow_update]] – updates information of specified device callflow state. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* [[MOR API CLI info get | cli_info_get]] (cli_get_info) – shows id of device where CLI belongs.&lt;br /&gt;
* [[MOR API CLI delete | cli_delete]] – deletes specified CLI. &lt;br /&gt;
* [[MOR API CLI add | cli_add]] – creates CLI and assigns it to the specified device.&lt;br /&gt;
* [[MOR API device clis get | device_clis_get]] – CLIs list by User and/or Device&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* [[MOR API device rules get | device_rules_get]] – show Device Rules.&lt;br /&gt;
* [[MOR API device rule delete | device_rule_delete]] – delete Device Rule.&lt;br /&gt;
* [[MOR API device rule create | device_rule_create]] – create Device Rule.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==DID==&lt;br /&gt;
&lt;br /&gt;
* [[MOR API dids get| dids_get]] – get list of particular DIDs&lt;br /&gt;
* [[MOR API did_create| did_create]] – DID create&lt;br /&gt;
* [[MOR_API_did_device_assign| did_device_assign]] (did_assign_device) – Assign Device to DID&lt;br /&gt;
* [[MOR_API_did_trunk_device_assign| did_trunk_device_assign]] (did_trunk_device_assign) – Assign Trunk Device to DID&lt;br /&gt;
* [[MOR_API_did_device_unassign| did_device_unassign]] (did_unassign_device) – Unassign Device from DID&lt;br /&gt;
* [[MOR_API_did_details_update| did_details_update]] (did_details_update) – Update DID details &lt;br /&gt;
* [[MOR API did subscription stop|did_subscription_stop]] – STOP DID subscription&lt;br /&gt;
* [[MOR API did terminate|did_terminate]] – DID terminate&lt;br /&gt;
* [[MOR API did make free|did_make_free]] – DID make free&lt;br /&gt;
* [[MOR API did rates update|did_rates_update]] – Update DID rates&lt;br /&gt;
* [[MOR API did rates get|did_rates_get]] – Get DID rates&lt;br /&gt;
* [[MOR API did close|did_close]] – close the DID&lt;br /&gt;
* [[MOR API did delete|did_delete]] – delete the DID&lt;br /&gt;
* [[MOR API did rates details get|did_rates_details_get]] – Get DID rates details&lt;br /&gt;
* [[MOR API did rates details update|did_rates_details_update]] – Update DID rates details&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Email==&lt;br /&gt;
* [[MOR API email send| email_send]] (send_email) – send Email.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==Financial statements==&lt;br /&gt;
* [[MOR API financial_statements_get| financial_statements_get]] (financial_statements) – financial statements list.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Invoices==&lt;br /&gt;
* [[MOR API invoices_get|invoices_get]] (invoices) – retrieves a list of invoices in a selected time period.&lt;br /&gt;
* [[MOR_API_invoice_update|invoice_update]] - update Invoice&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==IVR==&lt;br /&gt;
* [[MOR_API_ivr_dial_plan_update|ivr_dial_plan_update]] (invoices) – Updates IVR dial plan.&lt;br /&gt;
* [[MOR_API_ivr_time_period_update|ivr_time_period_update]] (invoices) – Updates IVR time period.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==LCR==&lt;br /&gt;
* [[MOR API lcrs_get|lcrs_get]] - retrieves list of LCRs.&lt;br /&gt;
* [[MOR API lcr_create|lcr_create]] - creates LCR&lt;br /&gt;
* [[MOR API lcr_update|lcr_update]] - updates LCR&lt;br /&gt;
* [[MOR API lcr_delete|lcr_delete]] - updates LCR&lt;br /&gt;
* [[MOR API lcr_add_provider|lcr_add_provider]] - adds provider to LCR&lt;br /&gt;
* [[MOR API lcr_delete_provider|lcr_delete_provider]] - deletes provider from LCR&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Location Rules==&lt;br /&gt;
* [[MOR API location_rule_create|location_rule_create]] – creates location rule.&lt;br /&gt;
* [[MOR API location_rule_update|location_rule_update]] – updates location rule.&lt;br /&gt;
* [[MOR API location_rules_get|location_rules_get]] – retrieves location rules.&lt;br /&gt;
* [[MOR API location_rule_get|location_rule_get]] – retrieves location rule information.&lt;br /&gt;
* [[MOR API location_rule_copy|location_rule_copy]] – copies rule from one location to other one.&lt;br /&gt;
* [[MOR API location_rule_delete|location_rule_delete]] – delete location rule.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Login==&lt;br /&gt;
* [[MOR API user_login|user_login]] (login) – logs user in to MOR.&lt;br /&gt;
* [[MOR API user_logout|user_logout]] (logout) – logs user out from MOR.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==Monitorings==&lt;br /&gt;
* [[MOR API ma_activate_api| ma_activate]] – turn on monitorings addon&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==Number Pools==&lt;br /&gt;
* [[MOR API number_pools_get| number_pools_get]] – get Number Pools list&lt;br /&gt;
* [[MOR API number_pool_create| number_pool_create]] – create Number Pools&lt;br /&gt;
* [[MOR API number pool update| number_pool_update]] – update Number Pool&lt;br /&gt;
* [[MOR API number pool delete| number_pool_delete]] – delete Number Pool&lt;br /&gt;
* [[MOR API number pool numbers create| number_pool_numbers_create]] – create numbers for Number Pool&lt;br /&gt;
* [[MOR API number pool numbers delete| number_pool_numbers_delete]] – delete numbers from Number Pool&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Payments==&lt;br /&gt;
* [[MOR API payment_create| payment_create]] (create_payment) – create payment.&lt;br /&gt;
* [[MOR API payments_get| payments_get]] (payments_list) – payments list.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==PBX Pool==&lt;br /&gt;
* [[MOR API pbx_pool_create| pbx_pool_create]] – PBX Pool create.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==Phonebooks==&lt;br /&gt;
* [[MOR API phonebooks_get| phonebooks_get]] (phonebooks_api ) – phonebooks list.&lt;br /&gt;
* [[MOR API phonebook_edit| phonebook_edit]] (phonebook_edit_api) – edit phonebook.&lt;br /&gt;
* [[MOR API phonebook_record_create| phonebook_record_create]]  – create phonebook.&lt;br /&gt;
* [[MOR API phonebook record delete | phonebook record delete]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Providers==&lt;br /&gt;
* [[MOR API providers get| providers_get]]  – getting list of providers.&lt;br /&gt;
* [[MOR API provider create| provider_create]]  – create provider.&lt;br /&gt;
* [[MOR API provider update| provider_update]]  – update provider.&lt;br /&gt;
* [[MOR API provider delete| provider_delete]]  – delete provider.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Provider Rules===&lt;br /&gt;
* [[MOR_API_provider_rules_get| provider_rules_get]] - shows provider rules&lt;br /&gt;
* [[MOR_API_provider_rule_delete| provider_rules_delete]] - deletes provider rules&lt;br /&gt;
* [[MOR_API_provider_rule_create| provider_rules_create]] - creates provider rules&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Queue==&lt;br /&gt;
* [[MOR API queue log get| queue_log_get]]  – getting MOR queue log.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==Quickforwards==&lt;br /&gt;
* [[MOR API Quickforwards get| quickforwards_dids_get]] (quickforwards_dids_get) – get Quickforwards.&lt;br /&gt;
* [[MOR API Quickforwards update| quickforwards_did_update]] (quickforwards_did_update) – update Quickforwards.&lt;br /&gt;
* [[MOR API Quickforwards delete| quickforwards_did_delete]] (quickforwards_did_delete) – delete Quickforwards.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==Tariffs/Rates==&lt;br /&gt;
* [[MOR API rate get|rate_get]] (rate) – check user rate by prefix&lt;br /&gt;
* [[MOR API tariff rates get| tariff_rates_get]] (get_tariff) – get all tariff's rates&lt;br /&gt;
* [[MOR API tariff_retail_import | tariff_retail_import ]] (import_retail_tariff) – import xml retail tariff&lt;br /&gt;
* [[MOR API tariff_wholesale_update | tariff_wholesale_update ]] (wholesale_tariff) – update or create wholesale tariff&lt;br /&gt;
* [[MOR API tariffs_get|tariffs_get]] - retrieve list of tariffs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Recordings==&lt;br /&gt;
* [[MOR API recordings get| recordings_get]] – get MOR recordings.&lt;br /&gt;
* [[MOR API recording update| recording_update]] -  update comment for a specific recording.&lt;br /&gt;
* [[MOR API recordings delete | recordings_delete]] - delete recordings based on search parameters.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Resellers ==&lt;br /&gt;
* [[MOR API reseller group create|reseller_group_create]] - create new Reseller Group&lt;br /&gt;
* [[MOR API reseller_groups_get|reseller_groups_get]] - retrieve Reseller Groups&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==Services==&lt;br /&gt;
* [[MOR API Service create| service_create]] – create Service.&lt;br /&gt;
* [[MOR API Service delete| service_delete]] – delete Service.&lt;br /&gt;
* [[MOR API Services get| services_get]] – get Services.&lt;br /&gt;
* [[MOR API Service update| service_update]] – update Service.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Spy==&lt;br /&gt;
* [[MOR API spy_call | spy_call]] – Initiates a spy call.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Statistics==&lt;br /&gt;
* [[MOR API quickstats_get | quickstats_get]] – gets today's [[Quick Stats]] and [[Active Calls]] count&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==Subscriptions==&lt;br /&gt;
* [[MOR API subscription delete|subscription_delete]] - Subscription delete.&lt;br /&gt;
* [[MOR API Subscriptions get|subscriptions_get]] - Subscriptions get.&lt;br /&gt;
* [[MOR API subscription create|subscription_create]] - Subscription create.&lt;br /&gt;
* [[MOR API subscription create bulk|subscription_create_bulk]] - Bulk Subscription create.&lt;br /&gt;
* [[MOR API subscription update|subscription_update]] - Subscription update.&lt;br /&gt;
* [[MOR API Subscription Flat Rate Number Status Get| subscription_flat_rate_number_status_get]] -  check prefix covering flat-rate subscriptions&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==User==&lt;br /&gt;
&lt;br /&gt;
* [[MOR API user_register| user_register]] – create new user from params.&lt;br /&gt;
* [[MOR API user_details_get | user_details_get]] (user_details) – gets user details.&lt;br /&gt;
* [[MOR API user_details_raw_get | user_details_raw_get]] (user_raw_details) – gets user raw details from database.&lt;br /&gt;
* [[MOR_API_user_details_update| user_details_update]] (user_update_api) – update user from params.&lt;br /&gt;
* [[MOR API users_get| users_get]] - get user list&lt;br /&gt;
* [[MOR API user_delete| user_delete]] - deletes user&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version==&lt;br /&gt;
* [[MOR API system version get| system_version_get]] (get_version) – get MOR version number.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Vouchers==&lt;br /&gt;
* [[MOR API voucher use| voucher_use]] – use selected voucher.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= Examples =&lt;br /&gt;
* [[MOR API PHP Examples]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=HTML POST=&lt;br /&gt;
All requests are in a similar format:&lt;br /&gt;
&lt;br /&gt;
 HTML POST: http://&amp;lt;SERVER_IP&amp;gt;/billing/api/&amp;lt;function&amp;gt;?u=username&lt;br /&gt;
&lt;br /&gt;
* username - the user name and password of the user who is asking for the data. &lt;br /&gt;
&lt;br /&gt;
If the user has 'admin' rights, he will get more results and can perform more actions compared to a user who does not have such rights.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=Useful to know=&lt;br /&gt;
&lt;br /&gt;
* All API methods return data straight from the database. It means that MOR GUI settings do not affect data, it will be returned as it is saved in the database. For example:&lt;br /&gt;
** Value of money will be returned in Default System [[Currencies|Currency]].&lt;br /&gt;
** Date will not be affected by [[Configuration_from_GUI#Visual| Default date format]] setting.&lt;br /&gt;
** Value of money will not be affected by [[Configuration_from_GUI#Visual|Number digits]] setting.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=See also =&lt;br /&gt;
* [[API Configuration]]&lt;br /&gt;
* [[MOR integration]]&lt;br /&gt;
* [[How to block access to some API functions]]&lt;br /&gt;
* [[MOR API v2]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=MOR_API&amp;diff=31525</id>
		<title>MOR API</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=MOR_API&amp;diff=31525"/>
		<updated>2026-04-15T05:47:31Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* Rates */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:warning.png|100px|alt=&amp;quot;warning&amp;quot;|link=]]&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;IMPORTANT!!! API methods described here are for newest MOR version. For previous versions please check appropriate [http://wiki.kolmisoft.com/index.php/MOR_Manual#Old_Manuals manual].&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
[[File:api.png|right|alt=&amp;quot;api&amp;quot;|link=]]&lt;br /&gt;
&amp;lt;mkmeta&amp;gt;Application Program Interface for MOR Class 5 Softswitch&amp;lt;/mkmeta&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=About=&lt;br /&gt;
MOR API lets other software interact with MOR without knowing the internal structure of the database (DB) and other logic.&lt;br /&gt;
&lt;br /&gt;
MOR accepts requests by HTML POST and returns results in XML.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=MOR users that are allowed to use MOR API=&lt;br /&gt;
* Admin&lt;br /&gt;
* Reseller&lt;br /&gt;
* Accountant - only by using Admin Hash and Secret key&lt;br /&gt;
* Simple User&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Functions=&lt;br /&gt;
&lt;br /&gt;
== API Related ==&lt;br /&gt;
* [[API Configuration]] – configuration options for API.&lt;br /&gt;
* [[MOR API hash construction|Hash construction]] – how to construct hash to authenticate data over API.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Aggregate==&lt;br /&gt;
* [[MOR API aggregate get | aggregate_get]] - for getting MOR aggregate statistics. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Autodialer==&lt;br /&gt;
* [[MOR API autodialer upload numbers | autodialer_upload_numbers]] - upload numbers from CSV file to existing Autodialer Campaign.&lt;br /&gt;
* [[MOR API autodialer get campaign statistics | autodialer_get_campaign_statistics]] - gets Autodialer campaign statistics for selected period.&lt;br /&gt;
* [[MOR API autodialer redial all failed calls | autodialer_redial_all_failed_calls]] - initiate Redial all failed calls action for specific campaign.&lt;br /&gt;
* [[MOR API autodialer get campaign ivr poll results | autodialer_get_campaign_ivr_poll_results]] - gets Autodialer camoaign ivr poll results.&lt;br /&gt;
* [[MOR API autodialer change campaign status | autodialer_change_campaign_status]] - changes Autodialer campaign status.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Balance==&lt;br /&gt;
* [[MOR API user balance update | user_balance_update]] (change_user_balance) – changes User's Balance&lt;br /&gt;
Various methods to retrieve User balance&lt;br /&gt;
* [[MOR API user_balance_get|user_balance_get]] (balance) – retrieves a User Balance.&lt;br /&gt;
* [[Balance in phone | user_simple_balance_get]] (simple_balance) – gets User's Balance&lt;br /&gt;
* [[MOR API user balance get by psw | user_balance_get_by_psw]] – gets User's Balance by his owned Device's Password&lt;br /&gt;
* [[MOR API User Balance get by Username | user_balance_get_by_username]] – gets User's Balance by his owned Device's Username&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Callback==&lt;br /&gt;
NOTE: A Callback addon is needed. Does not work on a limited version.&lt;br /&gt;
* [[MOR API callback init|callback_init]] (callback) – initiates callback.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Calling Cards==&lt;br /&gt;
* [[MOR API card_by_cli_update| card_by_cli_update]] (cc_by_cli) – creates and updates calling cards, including adding and transferring funds, by being identified according the Caller_ID.&lt;br /&gt;
* [[MOR API card_from_group_sell| card_from_group_sell]] (buy_card_from_callingroup) – sells cards from calling card group.&lt;br /&gt;
* [[MOR API card_group_get| card_group_get]] (show_calling_card_group) – show calling group info.&lt;br /&gt;
* [[MOR API card_balance_get| card_balance_get]] (card_balance_get) – show card's balance.&lt;br /&gt;
* [[MOR API card_payment_add| card_payment_add]] – add payment to the calling card.&lt;br /&gt;
* [[MOR_API_Calling_Cards_create| calling_cards_create]] – create Calling Cards.&lt;br /&gt;
* [[MOR_API_Calling_Card_update| calling_card_update]] – update Calling Card.&lt;br /&gt;
* [[MOR_API_Calling_Cards_get| calling_cards_get]] - get Calling Cards.&lt;br /&gt;
* [[MOR_API_Card_Group_create| cc_group_create]] – create Card Group.&lt;br /&gt;
* [[MOR_API_Card_Group_update| cc_group_update]] – update Card Group.&lt;br /&gt;
* [[MOR API Card Groups get| cc_groups_get]] – show Calling Cards Group info.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Calls==&lt;br /&gt;
* [[MOR API user calls get|user_calls_get]] (user_calls) – retrieves a list of calls in a selected time period for a user/device.&lt;br /&gt;
* [[MOR API local calls get|local_calls_get]] - retrieves a list of local calls in a selected time period for a user.&lt;br /&gt;
* [[MOR_API_active_calls_get|active_calls_get]] - Retrieves list of active calls for specified User.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Conflines==&lt;br /&gt;
* [[MOR API conflines update|conflines_update]] – changes settings for API, Default User or Default Device.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==Credit notes==&lt;br /&gt;
* [[MOR API credit_notes_get| credit_notes_get]] (credit_notes) – credit notes list.&lt;br /&gt;
* [[MOR API credit_note_update| credit_note_update]] – credit note update.&lt;br /&gt;
* [[MOR API credit_notes_create| credit_note_create]] – credit note create.&lt;br /&gt;
* [[MOR API credit_notes_delete| credit_note_delete]] – credit note delete.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==Currencies==&lt;br /&gt;
* [[MOR_API_Exchange_rate_update|exchange_rate_update]] - Currency Exchange rate update.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==Device==&lt;br /&gt;
&lt;br /&gt;
* [[MOR API device create| device_create]] – create device&lt;br /&gt;
* [[MOR_API_device_update | device_update]]  –  update device settings.&lt;br /&gt;
* [[MOR API device delete| device_delete]] (delete_device) – delete device&lt;br /&gt;
* [[MOR API devices get | devices_get]] (device_list) – users device list&lt;br /&gt;
* [[MOR API device details get | device_details_get]] – shows all information about specified device.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* [[MOR API device callflow get| device_callflow_get]] - returns information about specified device callflow state.&lt;br /&gt;
* [[MOR API device callflow update | device_callflow_update]] – updates information of specified device callflow state. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* [[MOR API CLI info get | cli_info_get]] (cli_get_info) – shows id of device where CLI belongs.&lt;br /&gt;
* [[MOR API CLI delete | cli_delete]] – deletes specified CLI. &lt;br /&gt;
* [[MOR API CLI add | cli_add]] – creates CLI and assigns it to the specified device.&lt;br /&gt;
* [[MOR API device clis get | device_clis_get]] – CLIs list by User and/or Device&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* [[MOR API device rules get | device_rules_get]] – show Device Rules.&lt;br /&gt;
* [[MOR API device rule delete | device_rule_delete]] – delete Device Rule.&lt;br /&gt;
* [[MOR API device rule create | device_rule_create]] – create Device Rule.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==DID==&lt;br /&gt;
&lt;br /&gt;
* [[MOR API dids get| dids_get]] – get list of particular DIDs&lt;br /&gt;
* [[MOR API did_create| did_create]] – DID create&lt;br /&gt;
* [[MOR_API_did_device_assign| did_device_assign]] (did_assign_device) – Assign Device to DID&lt;br /&gt;
* [[MOR_API_did_trunk_device_assign| did_trunk_device_assign]] (did_trunk_device_assign) – Assign Trunk Device to DID&lt;br /&gt;
* [[MOR_API_did_device_unassign| did_device_unassign]] (did_unassign_device) – Unassign Device from DID&lt;br /&gt;
* [[MOR_API_did_details_update| did_details_update]] (did_details_update) – Update DID details &lt;br /&gt;
* [[MOR API did subscription stop|did_subscription_stop]] – STOP DID subscription&lt;br /&gt;
* [[MOR API did terminate|did_terminate]] – DID terminate&lt;br /&gt;
* [[MOR API did make free|did_make_free]] – DID make free&lt;br /&gt;
* [[MOR API did rates update|did_rates_update]] – Update DID rates&lt;br /&gt;
* [[MOR API did rates get|did_rates_get]] – Get DID rates&lt;br /&gt;
* [[MOR API did close|did_close]] – close the DID&lt;br /&gt;
* [[MOR API did delete|did_delete]] – delete the DID&lt;br /&gt;
* [[MOR API did rates details get|did_rates_details_get]] – Get DID rates details&lt;br /&gt;
* [[MOR API did rates details update|did_rates_details_update]] – Update DID rates details&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Email==&lt;br /&gt;
* [[MOR API email send| email_send]] (send_email) – send Email.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==Financial statements==&lt;br /&gt;
* [[MOR API financial_statements_get| financial_statements_get]] (financial_statements) – financial statements list.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Invoices==&lt;br /&gt;
* [[MOR API invoices_get|invoices_get]] (invoices) – retrieves a list of invoices in a selected time period.&lt;br /&gt;
* [[MOR_API_invoice_update|invoice_update]] - update Invoice&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==IVR==&lt;br /&gt;
* [[MOR_API_ivr_dial_plan_update|ivr_dial_plan_update]] (invoices) – Updates IVR dial plan.&lt;br /&gt;
* [[MOR_API_ivr_time_period_update|ivr_time_period_update]] (invoices) – Updates IVR time period.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==LCR==&lt;br /&gt;
* [[MOR API lcrs_get|lcrs_get]] - retrieves list of LCRs.&lt;br /&gt;
* [[MOR API lcr_create|lcr_create]] - creates LCR&lt;br /&gt;
* [[MOR API lcr_update|lcr_update]] - updates LCR&lt;br /&gt;
* [[MOR API lcr_delete|lcr_delete]] - updates LCR&lt;br /&gt;
* [[MOR API lcr_add_provider|lcr_add_provider]] - adds provider to LCR&lt;br /&gt;
* [[MOR API lcr_delete_provider|lcr_delete_provider]] - deletes provider from LCR&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Location Rules==&lt;br /&gt;
* [[MOR API location_rule_create|location_rule_create]] – creates location rule.&lt;br /&gt;
* [[MOR API location_rule_update|location_rule_update]] – updates location rule.&lt;br /&gt;
* [[MOR API location_rules_get|location_rules_get]] – retrieves location rules.&lt;br /&gt;
* [[MOR API location_rule_get|location_rule_get]] – retrieves location rule information.&lt;br /&gt;
* [[MOR API location_rule_copy|location_rule_copy]] – copies rule from one location to other one.&lt;br /&gt;
* [[MOR API location_rule_delete|location_rule_delete]] – delete location rule.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Login==&lt;br /&gt;
* [[MOR API user_login|user_login]] (login) – logs user in to MOR.&lt;br /&gt;
* [[MOR API user_logout|user_logout]] (logout) – logs user out from MOR.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==Monitorings==&lt;br /&gt;
* [[MOR API ma_activate_api| ma_activate]] – turn on monitorings addon&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==Number Pools==&lt;br /&gt;
* [[MOR API number_pools_get| number_pools_get]] – get Number Pools list&lt;br /&gt;
* [[MOR API number_pool_create| number_pool_create]] – create Number Pools&lt;br /&gt;
* [[MOR API number pool update| number_pool_update]] – update Number Pool&lt;br /&gt;
* [[MOR API number pool delete| number_pool_delete]] – delete Number Pool&lt;br /&gt;
* [[MOR API number pool numbers create| number_pool_numbers_create]] – create numbers for Number Pool&lt;br /&gt;
* [[MOR API number pool numbers delete| number_pool_numbers_delete]] – delete numbers from Number Pool&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Payments==&lt;br /&gt;
* [[MOR API payment_create| payment_create]] (create_payment) – create payment.&lt;br /&gt;
* [[MOR API payments_get| payments_get]] (payments_list) – payments list.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==PBX Pool==&lt;br /&gt;
* [[MOR API pbx_pool_create| pbx_pool_create]] – PBX Pool create.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==Phonebooks==&lt;br /&gt;
* [[MOR API phonebooks_get| phonebooks_get]] (phonebooks_api ) – phonebooks list.&lt;br /&gt;
* [[MOR API phonebook_edit| phonebook_edit]] (phonebook_edit_api) – edit phonebook.&lt;br /&gt;
* [[MOR API phonebook_record_create| phonebook_record_create]]  – create phonebook.&lt;br /&gt;
* [[MOR API phonebook record delete | phonebook record delete]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Providers==&lt;br /&gt;
* [[MOR API providers get| providers_get]]  – getting list of providers.&lt;br /&gt;
* [[MOR API provider create| provider_create]]  – create provider.&lt;br /&gt;
* [[MOR API provider update| provider_update]]  – update provider.&lt;br /&gt;
* [[MOR API provider delete| provider_delete]]  – delete provider.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Provider Rules===&lt;br /&gt;
* [[MOR_API_provider_rules_get| provider_rules_get]] - shows provider rules&lt;br /&gt;
* [[MOR_API_provider_rule_delete| provider_rules_delete]] - deletes provider rules&lt;br /&gt;
* [[MOR_API_provider_rule_create| provider_rules_create]] - creates provider rules&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Queue==&lt;br /&gt;
* [[MOR API queue log get| queue_log_get]]  – getting MOR queue log.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==Quickforwards==&lt;br /&gt;
* [[MOR API Quickforwards get| quickforwards_dids_get]] (quickforwards_dids_get) – get Quickforwards.&lt;br /&gt;
* [[MOR API Quickforwards update| quickforwards_did_update]] (quickforwards_did_update) – update Quickforwards.&lt;br /&gt;
* [[MOR API Quickforwards delete| quickforwards_did_delete]] (quickforwards_did_delete) – delete Quickforwards.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==Rates==&lt;br /&gt;
* [[MOR API rate get|rate_get]] (rate) – check user rate by prefix&lt;br /&gt;
* [[MOR API tariff rates get| tariff_rates_get]] (get_tariff) – get all tariff's rates&lt;br /&gt;
* [[MOR API tariff_retail_import | tariff_retail_import ]] (import_retail_tariff) – import xml retail tariff&lt;br /&gt;
* [[MOR API tariff_wholesale_update | tariff_wholesale_update ]] (wholesale_tariff) – update or create wholesale tariff&lt;br /&gt;
* [[MOR API tariffs_get|tariffs_get]] - retrieve list of tariffs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Recordings==&lt;br /&gt;
* [[MOR API recordings get| recordings_get]] – get MOR recordings.&lt;br /&gt;
* [[MOR API recording update| recording_update]] -  update comment for a specific recording.&lt;br /&gt;
* [[MOR API recordings delete | recordings_delete]] - delete recordings based on search parameters.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Resellers ==&lt;br /&gt;
* [[MOR API reseller group create|reseller_group_create]] - create new Reseller Group&lt;br /&gt;
* [[MOR API reseller_groups_get|reseller_groups_get]] - retrieve Reseller Groups&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==Services==&lt;br /&gt;
* [[MOR API Service create| service_create]] – create Service.&lt;br /&gt;
* [[MOR API Service delete| service_delete]] – delete Service.&lt;br /&gt;
* [[MOR API Services get| services_get]] – get Services.&lt;br /&gt;
* [[MOR API Service update| service_update]] – update Service.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Spy==&lt;br /&gt;
* [[MOR API spy_call | spy_call]] – Initiates a spy call.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Statistics==&lt;br /&gt;
* [[MOR API quickstats_get | quickstats_get]] – gets today's [[Quick Stats]] and [[Active Calls]] count&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==Subscriptions==&lt;br /&gt;
* [[MOR API subscription delete|subscription_delete]] - Subscription delete.&lt;br /&gt;
* [[MOR API Subscriptions get|subscriptions_get]] - Subscriptions get.&lt;br /&gt;
* [[MOR API subscription create|subscription_create]] - Subscription create.&lt;br /&gt;
* [[MOR API subscription create bulk|subscription_create_bulk]] - Bulk Subscription create.&lt;br /&gt;
* [[MOR API subscription update|subscription_update]] - Subscription update.&lt;br /&gt;
* [[MOR API Subscription Flat Rate Number Status Get| subscription_flat_rate_number_status_get]] -  check prefix covering flat-rate subscriptions&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==User==&lt;br /&gt;
&lt;br /&gt;
* [[MOR API user_register| user_register]] – create new user from params.&lt;br /&gt;
* [[MOR API user_details_get | user_details_get]] (user_details) – gets user details.&lt;br /&gt;
* [[MOR API user_details_raw_get | user_details_raw_get]] (user_raw_details) – gets user raw details from database.&lt;br /&gt;
* [[MOR_API_user_details_update| user_details_update]] (user_update_api) – update user from params.&lt;br /&gt;
* [[MOR API users_get| users_get]] - get user list&lt;br /&gt;
* [[MOR API user_delete| user_delete]] - deletes user&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Version==&lt;br /&gt;
* [[MOR API system version get| system_version_get]] (get_version) – get MOR version number.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Vouchers==&lt;br /&gt;
* [[MOR API voucher use| voucher_use]] – use selected voucher.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
= Examples =&lt;br /&gt;
* [[MOR API PHP Examples]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=HTML POST=&lt;br /&gt;
All requests are in a similar format:&lt;br /&gt;
&lt;br /&gt;
 HTML POST: http://&amp;lt;SERVER_IP&amp;gt;/billing/api/&amp;lt;function&amp;gt;?u=username&lt;br /&gt;
&lt;br /&gt;
* username - the user name and password of the user who is asking for the data. &lt;br /&gt;
&lt;br /&gt;
If the user has 'admin' rights, he will get more results and can perform more actions compared to a user who does not have such rights.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=Useful to know=&lt;br /&gt;
&lt;br /&gt;
* All API methods return data straight from the database. It means that MOR GUI settings do not affect data, it will be returned as it is saved in the database. For example:&lt;br /&gt;
** Value of money will be returned in Default System [[Currencies|Currency]].&lt;br /&gt;
** Date will not be affected by [[Configuration_from_GUI#Visual| Default date format]] setting.&lt;br /&gt;
** Value of money will not be affected by [[Configuration_from_GUI#Visual|Number digits]] setting.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=See also =&lt;br /&gt;
* [[API Configuration]]&lt;br /&gt;
* [[MOR integration]]&lt;br /&gt;
* [[How to block access to some API functions]]&lt;br /&gt;
* [[MOR API v2]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=Main_Page&amp;diff=31512</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=Main_Page&amp;diff=31512"/>
		<updated>2026-04-08T12:03:00Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;mkmeta&amp;gt;Page dedicated mainly for MOR Class 5 Softswitch and M4 Class 4 Softswitch&amp;lt;/mkmeta&amp;gt;&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;table border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot; &amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Image:mor11_manual_book.png|80px|alt=&amp;quot;Manual&amp;quot;|link=]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; &lt;br /&gt;
 &amp;lt;h1&amp;gt;[[MOR Manual|MOR Class 5 Softswitch Manual]]&amp;lt;/h1&amp;gt;&lt;br /&gt;
This section covers the main functionality of MOR Softswitch with Billing and Routing&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
    &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Image:mor11_manual_book.png|80px|alt=&amp;quot;Manual&amp;quot;|link=]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; &lt;br /&gt;
 &amp;lt;h1&amp;gt;[[M4 Switch Manual|M4 Class 4 Softswitch Manual]]&amp;lt;/h1&amp;gt;&lt;br /&gt;
This section covers the main functionality of M4 Softswitch with Billing and Routing&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
    &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; &lt;br /&gt;
&amp;lt;h1&amp;gt;[[MOR/M4 Related Guides| MOR/M4 Related Guides]]&amp;lt;/h1&amp;gt;&lt;br /&gt;
Here you will find all topics related to the MOR/M4 but not included into Manual&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
    &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; &lt;br /&gt;
&amp;lt;h1&amp;gt;[[VOIP Business - Guides and Resources]]&amp;lt;/h1&amp;gt;&lt;br /&gt;
All guides which are related to the VoIP business: &amp;lt;br&amp;gt;where to look for providers, what licenses are needed, how to increase your profit, etc. &amp;lt;br&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
    &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; &lt;br /&gt;
&amp;lt;h1&amp;gt;[[Various Guides]]&amp;lt;/h1&amp;gt;&lt;br /&gt;
All guides which are not related to the MOR &amp;lt;br&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
    &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; &lt;br /&gt;
&amp;lt;h1&amp;gt;[[Problems/Troubleshooting]]&amp;lt;/h1&amp;gt;&lt;br /&gt;
Guides and suggestions on how to solve various problems you can come across &amp;lt;br&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
    &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''IMPORTANT!''' &amp;amp;nbsp; [https://www.kolmisoft.com?utm_source=wiki Kolmisoft] does not take any responsibility if you use the information found in this wiki and you cause any damage to your data, software, or servers. '''USE IT AT YOUR OWN RISK!'''&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=Main_Page&amp;diff=31511</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=Main_Page&amp;diff=31511"/>
		<updated>2026-04-08T11:18:41Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;mkmeta&amp;gt;Page dedicated mainly for MOR Class 5 Softswitch and M4 Class 4 Softswitch&amp;lt;/mkmeta&amp;gt;&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&amp;lt;table border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot; &amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Image:mor11_manual_book.png|80px|alt=&amp;quot;Manual&amp;quot;|link=]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; &lt;br /&gt;
 &amp;lt;h1&amp;gt;[[MOR Manual|MOR Class 5 Softswitch Manual]]&amp;lt;/h1&amp;gt;&lt;br /&gt;
This section covers the main functionality of MOR Softswitch with Billing and Routing&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
    &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Image:mor11_manual_book.png|80px|alt=&amp;quot;Manual&amp;quot;|link=]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; &lt;br /&gt;
 &amp;lt;h1&amp;gt;[[M4 Switch Manual|M4 Class 4 Softswitch Manual]]&amp;lt;/h1&amp;gt;&lt;br /&gt;
This section covers the main functionality of M4 Softswitch with Billing and Routing&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
    &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; &lt;br /&gt;
&amp;lt;h1&amp;gt;[[MOR/M4 Related Guides| MOR/M4 Related Guides]]&amp;lt;/h1&amp;gt;&lt;br /&gt;
Here you will find all topics related to the MOR/M4 but not included into Manual&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
    &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; &lt;br /&gt;
&amp;lt;h1&amp;gt;[[VOIP Business - Guides and Resources]]&amp;lt;/h1&amp;gt;&lt;br /&gt;
All guides which are related to the VoIP business: &amp;lt;br&amp;gt;where to look for providers, what licenses are needed, how to increase your profit, etc. &amp;lt;br&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
    &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; &lt;br /&gt;
&amp;lt;h1&amp;gt;[[Various Guides]]&amp;lt;/h1&amp;gt;&lt;br /&gt;
All guides which are not related to the MOR &amp;lt;br&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
    &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;tr&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; &lt;br /&gt;
&amp;lt;h1&amp;gt;[[Problems/Troubleshooting]]&amp;lt;/h1&amp;gt;&lt;br /&gt;
Guides and suggestions on how to solve various problems you can come across &amp;lt;br&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
    &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''IMPORTANT!''' &amp;amp;nbsp; [https://www.kolmisoft.com Kolmisoft] does not take any responsibility if you use the information found in this wiki and you cause any damage to your data, software, or servers. '''USE IT AT YOUR OWN RISK!'''&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=Alerts&amp;diff=31505</id>
		<title>Alerts</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=Alerts&amp;diff=31505"/>
		<updated>2026-04-01T07:31:47Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* Block user if it spends more than 50EUR in 24h */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Description=&lt;br /&gt;
&amp;lt;!---This functionality is available from MOR X4---&amp;gt;&lt;br /&gt;
Alerts functionality is dedicated to taking actions about your system issues which may cause a problem. You may block User, disable Provider, change LCR for User or simply send a notification to specified [[Alert Groups|Group]] of [[Alert Contacts|Contacts]]. &lt;br /&gt;
&lt;br /&gt;
You are able to follow these parameters:&lt;br /&gt;
&lt;br /&gt;
* [[ASR/ACD|ASR]] – Answer-Seizure Ratio (percent)&lt;br /&gt;
* [[ASR/ACD|ACD]] – Average Call Duration (in seconds)&lt;br /&gt;
* PDD – Average Post Dial Delay. The time between punching in the last digit of a telephone number and receiving a ring or busy signal (in seconds)&lt;br /&gt;
* TTC (Time to Connect)(DURATION-BILLSEC) – Average time between receiving a ring signal and answer to the call (in seconds)&lt;br /&gt;
* BILLSEC – Sum of calls bilsec (in seconds)&lt;br /&gt;
* TOTAL CALLS – Sum of all calls.&lt;br /&gt;
* TOTAL OUTGOING CALLS – Sum of outgoing calls.&lt;br /&gt;
* ANSWERED CALLS – Sum of answered calls.&lt;br /&gt;
* NOT ANSWERED CALLS – Sum of not answered calls (FAILED, BUSY, NO ANSWER).&lt;br /&gt;
* SIMULTANEOUS CALLS – Number of simultaneous calls (only applies to users and providers).&lt;br /&gt;
* PRICE SUM – Sum of calls price (only applies to users and providers).&lt;br /&gt;
* HGC (absolute) – Sum of calls, which ended with a specific [[Hangupcause_Codes | Hangupcause code]]. The HGC has to be set in the ''HGC'' field (it appears once ''Parameter: HGC'' is chosen).&lt;br /&gt;
* HGC (percent) – Percent of calls, which ended with a specific [[Hangupcause_Codes | Hangupcause code]]. The HGC has to be set in the ''HGC'' field (it appears once ''Parameter: HGC'' is chosen).&lt;br /&gt;
* REGISTRATION - Device registration status (either registered or not).&lt;br /&gt;
And it is possible to make actions for these types of MOR Objects or send notification about it:&lt;br /&gt;
&lt;br /&gt;
* [[Users]]&lt;br /&gt;
** All&lt;br /&gt;
** Postpaid&lt;br /&gt;
** Prepaid&lt;br /&gt;
** One User&lt;br /&gt;
* [[Providers]]&lt;br /&gt;
* [[Devices]]&lt;br /&gt;
* [[Directions and Destinations | Destinations]]&lt;br /&gt;
** One Destination by prefix.&lt;br /&gt;
** Few Destinations by prefix and % sign. Eg. 93%, 3706% and so on.&lt;br /&gt;
* [[Destinations Groups]]&lt;br /&gt;
* System&lt;br /&gt;
** Any call made will be assigned to System object (even unauthenticated calls). Useful for general System monitoring.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Usage=&lt;br /&gt;
&lt;br /&gt;
Go to '''ADDONS –&amp;gt; Monitorings –&amp;gt; Alerts'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:alerts_path.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Here you can see list of all created Alerts and their main information like is Alert active? When it was Raised/Cleared last time? What value was at Alert/Clear...&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:alerts_list.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Click on [[Image:icon_add.png]]'''Add new Alert''' link to create an Alert or click on [[image:icon_edit.png]] icon to change settings of existing Alert.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Mor_alerts_edit_4.png|right]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''General'''&lt;br /&gt;
&lt;br /&gt;
* '''Name''' – Alert name.&lt;br /&gt;
* '''Object Type''' – select which Object you want to follow.&lt;br /&gt;
* '''Object Name''' – pecify name/prefix of Object.&lt;br /&gt;
* '''Parameter''' – choose which parameter should be followed.&lt;br /&gt;
* '''Alert Type''' – ABS means that absolute data values will be taken from specified time period.&lt;br /&gt;
'''NOTE''': Object Type, Object Name, Parameter, Alert Type cannot be changed once Alert is created. &lt;br /&gt;
* '''Ignore if Calls''' &amp;lt;= – indicate calls sum when system should ignore Alert if calls sum is less than written (if 0, Alert will not be ignored). &lt;br /&gt;
* '''Ignore if Calls''' &amp;gt;= – indicate calls sum when system should ignore Alert if calls sum is more than written (if 0, Alert will not be ignored). &lt;br /&gt;
* '''Group to Notify''' – select [[Alert Groups|Group]] of [[Alert Contacts|Contacts]] who should be informed about Alert/clear.&lt;br /&gt;
* '''Notify to User''' – it is available only when Alert object type is User or Device. Check if you want to notify User on Alert.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Alert'''&lt;br /&gt;
&lt;br /&gt;
* '''Alert if &amp;lt;=''' – indicate Parameter value when system should raise Alert if value is less than written. &lt;br /&gt;
* '''Alert if &amp;gt;=''' – indicate Parameter value when system should raise Alert if value is more than written. &lt;br /&gt;
* '''Disable Object''' – check if you want to disable selected Object on Alert.&lt;br /&gt;
* '''Disable Provider in LCR'''  – indicate LCR where Provider should be disabled.&lt;br /&gt;
* '''LCR on Alert''' – select LCR which one should be used after Alert&lt;br /&gt;
* '''Notify On Alert via Email''' – check if you want that specified [[Alert Groups|Group]] will receive an email notifications about Alerts.&lt;br /&gt;
* '''Notify On Alert via Webhook''' – when set, the alert will send a webhook to all Contacts in Alert Group that have non-empty Webhook URL. More info [https://wiki.kolmisoft.com/index.php/Alerts#Webhook_notifications here].&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Clear'''&lt;br /&gt;
&lt;br /&gt;
* '''Disable Clear''' – when alert is raised, it will never be cleared.&lt;br /&gt;
* '''Clear on Condition'''&lt;br /&gt;
** '''Clear if &amp;lt;=''' – indicate Parameter value when system should Clear Alert if value is less than written. &lt;br /&gt;
** '''Clear if &amp;gt;=''' – indicate Parameter value when system should Clear Alert if value is more than written. &lt;br /&gt;
* '''Clear on time basis'''&lt;br /&gt;
** '''Clear after''' – indicate time value after which system should Clear Alert&lt;br /&gt;
** '''Clear on Date''' – indicate specific date and time when system should Clear Alert (After clear, selection will be reset)&lt;br /&gt;
* '''Enable Object''' – check if you want to enable selected(in Alert configuration) Object on Clear.&lt;br /&gt;
* '''Enable Provider in LCR''' – check if you want to enable selected(in Alert configuration) Provider on Clear.&lt;br /&gt;
* '''LCR on Clear''' – select LCR which one should be used after Clear.&lt;br /&gt;
* '''Notify On Clear via Email''' – check if you want that specified [[Alert Groups|Group]] will receive an email notifications about Clear.&lt;br /&gt;
* '''Notify On Alert via Webhook''' – when set, the alert will send a webhook to all Contacts in Alert Group that have non-empty Webhook URL. More info [https://wiki.kolmisoft.com/index.php/Alerts#Webhook_notifications here].&lt;br /&gt;
&lt;br /&gt;
'''NOTE''' one of '''Clear on Condition''' options and both '''Clear on time basis''' options can be selected at one time. System will clear alert if at least one of conditions will be true, it means that alert will be cleared on condition which first will appear. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Period'''&lt;br /&gt;
&lt;br /&gt;
You can select different time periods for each alert. This period defines time period which activity have to be checked. &lt;br /&gt;
&lt;br /&gt;
Note: period has no effect when parameter SIMULTANEOUS CALLS is chosen.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Comment''' – additional notes. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Webhook notifications =&lt;br /&gt;
&lt;br /&gt;
When an alert is raised or cleared and options '''Notify On Alert via Webhook''' or '''Notify On Clear via Webhook''' in the Alert are enabled, a HTTP request will be sent to each Contact in the Alert Group that has '''Webhook''' URL set. The request uses HTTP POST with JSON payload (Content-Type: application/json).&lt;br /&gt;
&lt;br /&gt;
JSON Payload:&lt;br /&gt;
&lt;br /&gt;
* '''type''' - Alert trigger type, either &amp;quot;ALERT&amp;quot; or &amp;quot;CLEAR&amp;quot;.&lt;br /&gt;
* '''group_id''' - Alert Group ID.&lt;br /&gt;
* '''alert_id''' - Alert ID.&lt;br /&gt;
* '''alert_name''' - Alert name.&lt;br /&gt;
* '''object_id''' - ID of checked Object.&lt;br /&gt;
* '''object_name''' - human-readable Object name.&lt;br /&gt;
* '''cause''' - Alert type.&lt;br /&gt;
* '''value''' - current value.&lt;br /&gt;
* '''count''' - data count.&lt;br /&gt;
* '''timestamp''' - timestamp when Alert/Clear triggered.&lt;br /&gt;
&lt;br /&gt;
Example payload:&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;type&amp;quot;: &amp;quot;ALERT&amp;quot;,&lt;br /&gt;
   &amp;quot;group_id&amp;quot;: 12,&lt;br /&gt;
   &amp;quot;alert_id&amp;quot;: 42,&lt;br /&gt;
   &amp;quot;alert_name&amp;quot;: &amp;quot;Test&amp;quot;,&lt;br /&gt;
   &amp;quot;object_id&amp;quot;: 123,&lt;br /&gt;
   &amp;quot;object_name&amp;quot;: &amp;quot;Example OP&amp;quot;,&lt;br /&gt;
   &amp;quot;cause&amp;quot;: &amp;quot;CALLS TOTAL&amp;quot;,&lt;br /&gt;
   &amp;quot;value&amp;quot;: 150.0,&lt;br /&gt;
   &amp;quot;count&amp;quot;: 150,&lt;br /&gt;
   &amp;quot;timestamp&amp;quot;: &amp;quot;2026-02-26 12:34:56&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
= Alert vs Clear =&lt;br /&gt;
&lt;br /&gt;
Example with CPU Load just to demonstrate what is Alert and what is Clear and proper usage of them.&lt;br /&gt;
&lt;br /&gt;
[[File:alert_graph.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Examples=&lt;br /&gt;
&lt;br /&gt;
===Send notification and change LCR on Alert===&lt;br /&gt;
&lt;br /&gt;
Parameter: TOTAL CALLS &amp;lt;br&amp;gt;&lt;br /&gt;
Object Type: User &amp;lt;br&amp;gt;&lt;br /&gt;
Object Name: Prepaid &amp;lt;br&amp;gt;&lt;br /&gt;
Alert if &amp;gt;=: 300 &amp;lt;br&amp;gt;&lt;br /&gt;
Clear if &amp;lt;=: 200 &amp;lt;br&amp;gt;&lt;br /&gt;
LCR on alert: secondary LCR &amp;lt;br&amp;gt;&lt;br /&gt;
LCR on clear: Restore Original &amp;lt;br&amp;gt;&lt;br /&gt;
Group to Notify: support group &amp;lt;br&amp;gt;&lt;br /&gt;
Notify on Alert via Email: checked &amp;lt;br&amp;gt;&lt;br /&gt;
Period: 1h &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
This Alert monitors all Calls done by Prepaid Users. If a Prepaid User makes more than 300 Calls during one hour period, his LCR will be changed to secondary LCR and Email notification will be sent to every contact on support group.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
If User's Call count drops below 200 calls during one hour period, his LCR will be restored to original LCR&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Block user when simultaneous calls are detected===&lt;br /&gt;
&lt;br /&gt;
Parameter: SIMULTANEOUS CALLS &amp;lt;br&amp;gt;&lt;br /&gt;
Object Type: User &amp;lt;br&amp;gt;&lt;br /&gt;
Object Name: All &amp;lt;br&amp;gt;&lt;br /&gt;
Alert if &amp;gt;=: 2 &amp;lt;br&amp;gt;&lt;br /&gt;
Group to Notify: administration &amp;lt;br&amp;gt;&lt;br /&gt;
Notify on Alert via Email: checked &amp;lt;br&amp;gt;&lt;br /&gt;
Disable Object: checked &amp;lt;br&amp;gt;&lt;br /&gt;
Disable Clear: checked &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
This Alert monitors simultaneous calls done by all Users. If a User makes more than (or equal to) 2 simultaneous Calls to the same destination, his account will be suspended and Email notification will be sent to every contact on administration group.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
This alert will no be cleared automatically and user will stay suspended even if no more simultaneous calls are present.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Block user if it spends more than 50 EUR in 24h===&lt;br /&gt;
&lt;br /&gt;
Parameter: PRICE SUM &amp;lt;br&amp;gt;&lt;br /&gt;
Object Type: User &amp;lt;br&amp;gt;&lt;br /&gt;
Object Name: All &amp;lt;br&amp;gt;&lt;br /&gt;
Alerf if &amp;gt;= 50 &amp;lt;br&amp;gt;&lt;br /&gt;
Group to Notify: administration &amp;lt;br&amp;gt;&lt;br /&gt;
Notify on Alert via Email: checked &amp;lt;br&amp;gt;&lt;br /&gt;
Disable Object: checked &amp;lt;br&amp;gt;&lt;br /&gt;
Disable Clear: checked &amp;lt;br&amp;gt;&lt;br /&gt;
Check last: 24 h &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Alerts triggered by other Alerts===&lt;br /&gt;
&lt;br /&gt;
Administrators are able to create alerts that depend on other alerts. What that means is, that you are able to create an alert that is triggered by a set or a subset of other alerts.&lt;br /&gt;
&lt;br /&gt;
'''Example:'''&lt;br /&gt;
* Alert 1 is triggered when a specific user's ACD drops below ten seconds.&lt;br /&gt;
* Alert 2 is triggered when a the same user's Device's ASR drops below 50%.&lt;br /&gt;
* Alert 3 is triggered when both Alert 1 and Alert 2 is triggered, so that the technicians are notified.&lt;br /&gt;
&lt;br /&gt;
In order to set up such a chain of events, you should first create Alert 1 and Alert 2.&lt;br /&gt;
&lt;br /&gt;
Then, you should set up Alert 3.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Alert_group_parameter.png‎]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
* Configure your alert as usual, but instead of a specific parameter choose GROUP.&lt;br /&gt;
* Then, add the alert dependencies using the shown interface.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Alert_group_alert.png‎]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
* Set a number of alerts, that, when reached will trigger the alert.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Alert_group_clear.png‎]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
* Finally set up a number of alerts that will clear your alert.&lt;br /&gt;
&lt;br /&gt;
These alerts can also be nested, without worrying about circular-dependencies, '''MOR''' simply will not let you make them.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=See also=&lt;br /&gt;
&lt;br /&gt;
* [[Alert Schedules]]&lt;br /&gt;
* [[Alert Groups]]&lt;br /&gt;
* [[Alert Contacts]]&lt;br /&gt;
* [[ASR/ACD]]&lt;br /&gt;
* [[How to resolve long PDD]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=M4_Rate_Notifications&amp;diff=31459</id>
		<title>M4 Rate Notifications</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=M4_Rate_Notifications&amp;diff=31459"/>
		<updated>2026-03-14T15:12:48Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* Template columns (Destination Group through Status) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
&lt;br /&gt;
Whenever there are Rate updates or changes in the Tariff some sort of communication must be made with Users that are using those Rates. Rate Notifications functionality eases manual tasks by allowing users to quickly and automatically create Jobs that inform Users about upcoming (depending on 'effective from' the value in the future) Rate prices and also await their confirmation whether they agree or disagree with them. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= Workflow schema =&lt;br /&gt;
&lt;br /&gt;
The workflow can be visualized using the following schema:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:RateNotification1.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= Rate Notifications Templates =&lt;br /&gt;
&lt;br /&gt;
[[File:RateNotificationTemplate1.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The data is generated into an XLSX file. The system contains a Default template, which is assigned to all users.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:RateNotificationTemplate2.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
It is possible to create a custom template file and use it for customers by clicking ADD NEW TEMPLATE and filling cells according to your needs, or uploading an XLSX Template file. &lt;br /&gt;
*Note: If a row has a value, the column near it cannot be blank.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=== Template columns (Destination Group through Status) ===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Each row in the template form maps a data type to an Excel column and an optional header name. '''Column''' is a dropdown (letter A, B, C, … or blank); &amp;lt;br&amp;gt;&lt;br /&gt;
'''Header Name''' is a text field (max 50 characters). If a column is left blank, that data is not written to the XLSX. The following rows appear in order:&lt;br /&gt;
&lt;br /&gt;
* '''Destination Group''' — Column, Header Name. Exports: destination group name.&lt;br /&gt;
* '''Destination''' — Column, Header Name. Exports: destination name.&lt;br /&gt;
* '''Dial Code/Prefix''' — Column, Header Name. Exports: prefix.&lt;br /&gt;
* '''Rate''' — Column, Header Name. Exports: rate (decimal, 8 decimal places).&lt;br /&gt;
* '''Effective From''' — Column, Header Name. Exports: effective from date/time (in the user's time zone).&lt;br /&gt;
* '''Rate Difference''' — Column, Header Name. Exports: raw rate difference value.&lt;br /&gt;
* '''Rate Difference %''' — Column, Header Name. Exports: rate difference percentage.&lt;br /&gt;
* '''Connection Fee''' — Column, Header Name. Exports: connection fee.&lt;br /&gt;
* '''Increment''' — Column, Header Name. Exports: increment (seconds).&lt;br /&gt;
* '''Minimal Time''' — Column, Header Name. Exports: minimal time (seconds).&lt;br /&gt;
* '''Min. Time / Increment''' — Column, Header Name (default: &amp;quot;Min.Time/Increment&amp;quot;). Exports: minimal_time/increment (e.g. 60/1, 30/6). Leave column blank to omit.&lt;br /&gt;
* '''Billing Terms''' — Column, Header Name. Exports as: minimal_time/increment/0 (e.g. 60/1/0).&lt;br /&gt;
* '''Status''' — Column, Header Name. Exports: rate status (e.g., Active, Blocked, Deleted; comma-separated if multiple apply).&lt;br /&gt;
&lt;br /&gt;
Custom Column 1–5 (below Status) each have Column, Header Name, and an optional '''Value''' field; the same fixed Value is written in every rate row for that column.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:RateNotificationTemplate3.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
It is also possible to assign a Rate Notification Template for a User in their settings.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:RateNotificationTemplate4.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Rate Notifications =&lt;br /&gt;
&lt;br /&gt;
Rate Notifications is the primary page of the functionality, it displays unique Tariff - User associations to whom Notification can be sent.&amp;lt;br&amp;gt;&lt;br /&gt;
This page can be found in Menu -&amp;gt; BILLING -&amp;gt; Tariffs -&amp;gt; Rate Notifications&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:RateNotification2.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Associated Tariff - User objects are shown only when the following conditions are met:&lt;br /&gt;
* Tariff is Sell type;&lt;br /&gt;
* User's Connection Point is assigned Sell Tariff in Origination Point settings;&lt;br /&gt;
* Tariff was modified and does not have any Rate Notification Job created for specific Tariff - User;&lt;br /&gt;
* Tariff was modified and a specific Tariff - User Rate Notification was created prior to Tariff modifications.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= Creating Rate Notification =&lt;br /&gt;
&lt;br /&gt;
In order to create new Rate Notification Jobs, check wanted Tariff - User associations and press Set.&amp;lt;br&amp;gt;&lt;br /&gt;
All required Notifications can be selected by clicking the header checkbox. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:RateNotification3.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
After selection, another page will be loaded with options for these specific Notifications.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;Selected Tariffs - Users&amp;quot; displays marked associations to whom Notifications will be sent. &lt;br /&gt;
&amp;quot;Options&amp;quot; has several settings:&lt;br /&gt;
* Template - Rate Notification Template.&lt;br /&gt;
* Email Template: which Template will be used for email? The default &amp;quot;tariff_rate_notification&amp;quot; template is already present in the system and can be modified to fit specific needs. &lt;br /&gt;
** Additional possible variables:&lt;br /&gt;
*** rate_notification_tariff_name - Rate Notification's Tariff name&lt;br /&gt;
*** rate_notification_url_agree - Rate Notification's Agreement link&lt;br /&gt;
*** rate_notification_url_disagree - Rate Notifications' Disagreement link&lt;br /&gt;
*** rate_notification_decreases_effective_from - Rate Notifications' Decreases Effective From date&lt;br /&gt;
*** rate_notification_increases_effective_from - Rate Notifications' Increases Effective From date&lt;br /&gt;
* Rate Notification Type: &lt;br /&gt;
** Delta Only: future Rates only. &lt;br /&gt;
** Full: all future and currently active Rates. &lt;br /&gt;
* Agreement Timeout in days: timeout after which Notification will be automatically marked as disagreed (ignored) if the User did not respond. A Timeout adds a specified day's value to the Notification created time. &lt;br /&gt;
* If Client ignores Rate Notification - possible actions are: Block increased destinations after the timeout, allow increased destinations after the timeout.&lt;br /&gt;
* Decreases Effective From - select date and time.&lt;br /&gt;
* Increases Effective From - select date and time.&lt;br /&gt;
* Filename - Name of the notification file.&lt;br /&gt;
* Send Email:&lt;br /&gt;
** Every day: send an email every day until either the Agreement link is pressed or Agreement Timeout is reached&lt;br /&gt;
** Once: send email only one time.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:RateNotification4.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
After pressing the Create button, Jobs will be created and the Rate Notification Jobs page will be loaded. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:RateNotification5.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Rate Notification Jobs =&lt;br /&gt;
&lt;br /&gt;
Rate Notification Jobs is the page where the system will automatically gather required Rates data, send emails, and awaits Users' response.&amp;lt;br&amp;gt;&lt;br /&gt;
This page can be found in Menu -&amp;gt; BILLING -&amp;gt; Tariffs -&amp;gt; Rate Notifications -&amp;gt; Jobs&lt;br /&gt;
&lt;br /&gt;
Jobs have the following states:&amp;lt;br&amp;gt;&lt;br /&gt;
'''Assigned'''&amp;lt;br&amp;gt;&lt;br /&gt;
After Rate Notification is created a new Job appears as assigned. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:RateNotification6.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Date Generated'''&amp;lt;br&amp;gt;&lt;br /&gt;
The system checks for all newly assigned Jobs and generates required data in XLSX format, which can be downloaded from the list. The same exact file will be attached to the email.&amp;lt;br&amp;gt;&lt;br /&gt;
Rates will be converted using the default currency. To prevent conversion, setting - &amp;quot;Use Tariff currency in the CSV export&amp;quot; must be enabled.&amp;lt;br&amp;gt;&lt;br /&gt;
This setting can be found in Maintenance -&amp;gt; Settings -&amp;gt; Various -&amp;gt; Use Tariff currency in CSV export.&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:RateNotification7.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Email Sent'''&amp;lt;br&amp;gt;&lt;br /&gt;
All Jobs that have successfully generated data will send emails to Users with unique agree and disagree links which can be clicked on only once and within the specified timeout.&amp;lt;br&amp;gt;&lt;br /&gt;
'''Email will not be sent if there were no changes in rates!'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:RateNotification8.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Completed'''&amp;lt;br&amp;gt;&lt;br /&gt;
Depending on the User's actions, the Job can be either agreed upon, disagreed with, or ignored. The list will display specific responses and the time it was responded to. Also, an additional email will be sent to Admin informing Rate Notification Job response status.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:RateNotification9.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= Examples =&lt;br /&gt;
&lt;br /&gt;
== Type: Full, Rate Notification Agreed ==&lt;br /&gt;
&lt;br /&gt;
The user have tariff with some rates:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:RateNotification10.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Admin uploads new rates with some changes on prices and Effective from date in the future:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:RateNotification11.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
In Billing &amp;gt; Tariffs &amp;gt; Rate Notifications, Admin now can see a new entries. Admin selects new entry and clicks “SET”:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:RateNotification12.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Then Admin selects “Full” to display old rates and new rates and click “Create”:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:RateNotification13.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
New Rate Notification is created:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:RateNotification14.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The user gets email with two links:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:RateNotification15.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
and file with rates comparison:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:RateNotification16.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
After checking new rates, the User clicks on the first link in the email to agree with the new rates:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:RateNotification17.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Now, Admin gets an email about new rates being confirmed:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:RateNotification18.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
And also sees the update status in the Rate Notifications Jobs list:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:RateNotification19.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Type: Delta Only, Rate Notification Disagreed ==&lt;br /&gt;
&lt;br /&gt;
The user has tariff with some rates&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:RateNotification20.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Admin uploads new rates with some changes on prices and the Effective from date in the future.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
In Billing &amp;gt; Tariffs &amp;gt; Rate Notifications, Admin can now see new entries. Admin selects new entry and clicks “SET”:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:RateNotification21.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Then Admin selects “Delta” to display only new rates and presses “Create”:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:RateNotification22.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Tariff Rate Notification Job(s) successfully created.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:RateNotification23.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After this, the user gets an email with two links with rates to compare:&lt;br /&gt;
&lt;br /&gt;
Dear Partner,&amp;lt;br&amp;gt;&lt;br /&gt;
Please review the attached Tariff Rate changes.&amp;lt;br&amp;gt;&lt;br /&gt;
To confirm upcoming rate changes, please click the link below:&amp;lt;br&amp;gt;&lt;br /&gt;
http://123.123.123.123/billing/tariff_rate_notification_jobs/agree?id=1128bccbac519a04a4866c785f84f873eec6d5fd&amp;lt;br&amp;gt;&lt;br /&gt;
If You do not agree with the changes, please click the link below:&amp;lt;br&amp;gt;&lt;br /&gt;
http://123.123.123.123/billing/tariff_rate_notification_jobs/disagree?id=bcc02d82cf9d919af38bb4e4677685eeb0b382a8&amp;lt;br&amp;gt;&lt;br /&gt;
Thank you for your cooperation.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:RateNotification24.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
For example, the User disagrees and presses the second link. He can see the notification that Tariff Rate changes successfully disagreed.&lt;br /&gt;
&lt;br /&gt;
After that Admin will receive an email that the client disagreed and will see the same status in Tariff Job.&lt;br /&gt;
&lt;br /&gt;
Tariff Rate Notification ID: 2 was disagreed with by the client.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:RateNotification25.png]]&lt;br /&gt;
&lt;br /&gt;
When the User disagrees with the provided rates or ignores them, the system creates a Custom Tariff from the tariff assigned to Origination Point.&lt;br /&gt;
&lt;br /&gt;
Custom Tariff includes increased rates, but these rates are blocked and calls will not pass over these destinations.&lt;br /&gt;
&lt;br /&gt;
This Custom Tariff is assigned to Origination Point.&lt;br /&gt;
&lt;br /&gt;
'''Note''':&lt;br /&gt;
&lt;br /&gt;
1. If Origination Point already has Custom Tariff assigned, Custom Tariff from Rate Notification will be applied.&lt;br /&gt;
&lt;br /&gt;
2. If Origination Point has assigned a Conditional Tariff and the User disagrees with the provided rates or ignores them, Custom Tariff is created, but is not assigned to Origination Point.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=M4_Rate_Notifications&amp;diff=31458</id>
		<title>M4 Rate Notifications</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=M4_Rate_Notifications&amp;diff=31458"/>
		<updated>2026-03-14T15:12:06Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* Rate Notifications Templates */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
&lt;br /&gt;
Whenever there are Rate updates or changes in the Tariff some sort of communication must be made with Users that are using those Rates. Rate Notifications functionality eases manual tasks by allowing users to quickly and automatically create Jobs that inform Users about upcoming (depending on 'effective from' the value in the future) Rate prices and also await their confirmation whether they agree or disagree with them. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= Workflow schema =&lt;br /&gt;
&lt;br /&gt;
The workflow can be visualized using the following schema:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:RateNotification1.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= Rate Notifications Templates =&lt;br /&gt;
&lt;br /&gt;
[[File:RateNotificationTemplate1.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The data is generated into an XLSX file. The system contains a Default template, which is assigned to all users.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:RateNotificationTemplate2.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
It is possible to create a custom template file and use it for customers by clicking ADD NEW TEMPLATE and filling cells according to your needs, or uploading an XLSX Template file. &lt;br /&gt;
*Note: If a row has a value, the column near it cannot be blank.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=== Template columns (Destination Group through Status) ===&lt;br /&gt;
&lt;br /&gt;
Each row in the template form maps a data type to an Excel column and an optional header name. '''Column''' is a dropdown (letter A, B, C, … or blank); '''Header Name''' is a text field (max 50 characters). If a column is left blank, that data is not written to the XLSX. The following rows appear in order:&lt;br /&gt;
&lt;br /&gt;
* '''Destination Group''' — Column, Header Name. Exports: destination group name.&lt;br /&gt;
* '''Destination''' — Column, Header Name. Exports: destination name.&lt;br /&gt;
* '''Dial Code/Prefix''' — Column, Header Name. Exports: prefix.&lt;br /&gt;
* '''Rate''' — Column, Header Name. Exports: rate (decimal, 8 decimal places).&lt;br /&gt;
* '''Effective From''' — Column, Header Name. Exports: effective from date/time (in the user's time zone).&lt;br /&gt;
* '''Rate Difference''' — Column, Header Name. Exports: raw rate difference value.&lt;br /&gt;
* '''Rate Difference %''' — Column, Header Name. Exports: rate difference percentage.&lt;br /&gt;
* '''Connection Fee''' — Column, Header Name. Exports: connection fee.&lt;br /&gt;
* '''Increment''' — Column, Header Name. Exports: increment (seconds).&lt;br /&gt;
* '''Minimal Time''' — Column, Header Name. Exports: minimal time (seconds).&lt;br /&gt;
* '''Min. Time / Increment''' — Column, Header Name (default: &amp;quot;Min.Time/Increment&amp;quot;). Exports: minimal_time/increment (e.g. 60/1, 30/6). Leave column blank to omit.&lt;br /&gt;
* '''Billing Terms''' — Column, Header Name. Exports as: minimal_time/increment/0 (e.g. 60/1/0).&lt;br /&gt;
* '''Status''' — Column, Header Name. Exports: rate status (e.g., Active, Blocked, Deleted; comma-separated if multiple apply).&lt;br /&gt;
&lt;br /&gt;
Custom Column 1–5 (below Status) each have Column, Header Name, and an optional '''Value''' field; the same fixed Value is written in every rate row for that column.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:RateNotificationTemplate3.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
It is also possible to assign a Rate Notification Template for a User in their settings.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:RateNotificationTemplate4.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Rate Notifications =&lt;br /&gt;
&lt;br /&gt;
Rate Notifications is the primary page of the functionality, it displays unique Tariff - User associations to whom Notification can be sent.&amp;lt;br&amp;gt;&lt;br /&gt;
This page can be found in Menu -&amp;gt; BILLING -&amp;gt; Tariffs -&amp;gt; Rate Notifications&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:RateNotification2.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Associated Tariff - User objects are shown only when the following conditions are met:&lt;br /&gt;
* Tariff is Sell type;&lt;br /&gt;
* User's Connection Point is assigned Sell Tariff in Origination Point settings;&lt;br /&gt;
* Tariff was modified and does not have any Rate Notification Job created for specific Tariff - User;&lt;br /&gt;
* Tariff was modified and a specific Tariff - User Rate Notification was created prior to Tariff modifications.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= Creating Rate Notification =&lt;br /&gt;
&lt;br /&gt;
In order to create new Rate Notification Jobs, check wanted Tariff - User associations and press Set.&amp;lt;br&amp;gt;&lt;br /&gt;
All required Notifications can be selected by clicking the header checkbox. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:RateNotification3.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
After selection, another page will be loaded with options for these specific Notifications.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;Selected Tariffs - Users&amp;quot; displays marked associations to whom Notifications will be sent. &lt;br /&gt;
&amp;quot;Options&amp;quot; has several settings:&lt;br /&gt;
* Template - Rate Notification Template.&lt;br /&gt;
* Email Template: which Template will be used for email? The default &amp;quot;tariff_rate_notification&amp;quot; template is already present in the system and can be modified to fit specific needs. &lt;br /&gt;
** Additional possible variables:&lt;br /&gt;
*** rate_notification_tariff_name - Rate Notification's Tariff name&lt;br /&gt;
*** rate_notification_url_agree - Rate Notification's Agreement link&lt;br /&gt;
*** rate_notification_url_disagree - Rate Notifications' Disagreement link&lt;br /&gt;
*** rate_notification_decreases_effective_from - Rate Notifications' Decreases Effective From date&lt;br /&gt;
*** rate_notification_increases_effective_from - Rate Notifications' Increases Effective From date&lt;br /&gt;
* Rate Notification Type: &lt;br /&gt;
** Delta Only: future Rates only. &lt;br /&gt;
** Full: all future and currently active Rates. &lt;br /&gt;
* Agreement Timeout in days: timeout after which Notification will be automatically marked as disagreed (ignored) if the User did not respond. A Timeout adds a specified day's value to the Notification created time. &lt;br /&gt;
* If Client ignores Rate Notification - possible actions are: Block increased destinations after the timeout, allow increased destinations after the timeout.&lt;br /&gt;
* Decreases Effective From - select date and time.&lt;br /&gt;
* Increases Effective From - select date and time.&lt;br /&gt;
* Filename - Name of the notification file.&lt;br /&gt;
* Send Email:&lt;br /&gt;
** Every day: send an email every day until either the Agreement link is pressed or Agreement Timeout is reached&lt;br /&gt;
** Once: send email only one time.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:RateNotification4.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
After pressing the Create button, Jobs will be created and the Rate Notification Jobs page will be loaded. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:RateNotification5.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Rate Notification Jobs =&lt;br /&gt;
&lt;br /&gt;
Rate Notification Jobs is the page where the system will automatically gather required Rates data, send emails, and awaits Users' response.&amp;lt;br&amp;gt;&lt;br /&gt;
This page can be found in Menu -&amp;gt; BILLING -&amp;gt; Tariffs -&amp;gt; Rate Notifications -&amp;gt; Jobs&lt;br /&gt;
&lt;br /&gt;
Jobs have the following states:&amp;lt;br&amp;gt;&lt;br /&gt;
'''Assigned'''&amp;lt;br&amp;gt;&lt;br /&gt;
After Rate Notification is created a new Job appears as assigned. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:RateNotification6.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Date Generated'''&amp;lt;br&amp;gt;&lt;br /&gt;
The system checks for all newly assigned Jobs and generates required data in XLSX format, which can be downloaded from the list. The same exact file will be attached to the email.&amp;lt;br&amp;gt;&lt;br /&gt;
Rates will be converted using the default currency. To prevent conversion, setting - &amp;quot;Use Tariff currency in the CSV export&amp;quot; must be enabled.&amp;lt;br&amp;gt;&lt;br /&gt;
This setting can be found in Maintenance -&amp;gt; Settings -&amp;gt; Various -&amp;gt; Use Tariff currency in CSV export.&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:RateNotification7.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Email Sent'''&amp;lt;br&amp;gt;&lt;br /&gt;
All Jobs that have successfully generated data will send emails to Users with unique agree and disagree links which can be clicked on only once and within the specified timeout.&amp;lt;br&amp;gt;&lt;br /&gt;
'''Email will not be sent if there were no changes in rates!'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:RateNotification8.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Completed'''&amp;lt;br&amp;gt;&lt;br /&gt;
Depending on the User's actions, the Job can be either agreed upon, disagreed with, or ignored. The list will display specific responses and the time it was responded to. Also, an additional email will be sent to Admin informing Rate Notification Job response status.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:RateNotification9.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= Examples =&lt;br /&gt;
&lt;br /&gt;
== Type: Full, Rate Notification Agreed ==&lt;br /&gt;
&lt;br /&gt;
The user have tariff with some rates:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:RateNotification10.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Admin uploads new rates with some changes on prices and Effective from date in the future:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:RateNotification11.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
In Billing &amp;gt; Tariffs &amp;gt; Rate Notifications, Admin now can see a new entries. Admin selects new entry and clicks “SET”:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:RateNotification12.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Then Admin selects “Full” to display old rates and new rates and click “Create”:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:RateNotification13.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
New Rate Notification is created:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:RateNotification14.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The user gets email with two links:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:RateNotification15.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
and file with rates comparison:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:RateNotification16.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
After checking new rates, the User clicks on the first link in the email to agree with the new rates:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:RateNotification17.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Now, Admin gets an email about new rates being confirmed:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:RateNotification18.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
And also sees the update status in the Rate Notifications Jobs list:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:RateNotification19.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Type: Delta Only, Rate Notification Disagreed ==&lt;br /&gt;
&lt;br /&gt;
The user has tariff with some rates&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:RateNotification20.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Admin uploads new rates with some changes on prices and the Effective from date in the future.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
In Billing &amp;gt; Tariffs &amp;gt; Rate Notifications, Admin can now see new entries. Admin selects new entry and clicks “SET”:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:RateNotification21.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Then Admin selects “Delta” to display only new rates and presses “Create”:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:RateNotification22.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Tariff Rate Notification Job(s) successfully created.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:RateNotification23.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After this, the user gets an email with two links with rates to compare:&lt;br /&gt;
&lt;br /&gt;
Dear Partner,&amp;lt;br&amp;gt;&lt;br /&gt;
Please review the attached Tariff Rate changes.&amp;lt;br&amp;gt;&lt;br /&gt;
To confirm upcoming rate changes, please click the link below:&amp;lt;br&amp;gt;&lt;br /&gt;
http://123.123.123.123/billing/tariff_rate_notification_jobs/agree?id=1128bccbac519a04a4866c785f84f873eec6d5fd&amp;lt;br&amp;gt;&lt;br /&gt;
If You do not agree with the changes, please click the link below:&amp;lt;br&amp;gt;&lt;br /&gt;
http://123.123.123.123/billing/tariff_rate_notification_jobs/disagree?id=bcc02d82cf9d919af38bb4e4677685eeb0b382a8&amp;lt;br&amp;gt;&lt;br /&gt;
Thank you for your cooperation.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:RateNotification24.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
For example, the User disagrees and presses the second link. He can see the notification that Tariff Rate changes successfully disagreed.&lt;br /&gt;
&lt;br /&gt;
After that Admin will receive an email that the client disagreed and will see the same status in Tariff Job.&lt;br /&gt;
&lt;br /&gt;
Tariff Rate Notification ID: 2 was disagreed with by the client.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:RateNotification25.png]]&lt;br /&gt;
&lt;br /&gt;
When the User disagrees with the provided rates or ignores them, the system creates a Custom Tariff from the tariff assigned to Origination Point.&lt;br /&gt;
&lt;br /&gt;
Custom Tariff includes increased rates, but these rates are blocked and calls will not pass over these destinations.&lt;br /&gt;
&lt;br /&gt;
This Custom Tariff is assigned to Origination Point.&lt;br /&gt;
&lt;br /&gt;
'''Note''':&lt;br /&gt;
&lt;br /&gt;
1. If Origination Point already has Custom Tariff assigned, Custom Tariff from Rate Notification will be applied.&lt;br /&gt;
&lt;br /&gt;
2. If Origination Point has assigned a Conditional Tariff and the User disagrees with the provided rates or ignores them, Custom Tariff is created, but is not assigned to Origination Point.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=MOR_API_did_details_update&amp;diff=31456</id>
		<title>MOR API did details update</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=MOR_API_did_details_update&amp;diff=31456"/>
		<updated>2026-03-12T16:01:11Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Description=&lt;br /&gt;
&amp;lt;!---This functionality is available in MOR X5 and MOR X6---&amp;gt;&lt;br /&gt;
[[MOR API]] DID details update&lt;br /&gt;
&lt;br /&gt;
Please note that only the admin, the accountant (with device management), those with permission, and the reseller can use this API. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=Usage=&lt;br /&gt;
&lt;br /&gt;
* Call: /api/did_details_update&lt;br /&gt;
* Methods: POST, GET(if allowed, not recomended)&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
===Parametres===&lt;br /&gt;
&lt;br /&gt;
Parameter which is '''included''' into hash:&lt;br /&gt;
&lt;br /&gt;
* '''did_id''' – this is the ID of DID, which has to be updated. '''Required'''.&lt;br /&gt;
&lt;br /&gt;
'''Note that parameters are shown in the same order as they have to be when generating the hash. Last parameter in a row is API_Secret_Key'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Parameters which are '''not included''' into hash:&lt;br /&gt;
&lt;br /&gt;
* [[MOR API hash construction | hash]] - SHA1 hash constructed using '''did_id''' and API_Secret_Key ([[MOR API hash construction | More described in Constructing hash]]). '''Required'''.&lt;br /&gt;
* '''u''' – username to login. '''Required'''.&lt;br /&gt;
* '''call_limit''' – call limit of did which will be updated. '''Optional'''&lt;br /&gt;
* &amp;lt;!--FROM MOR X6---&amp;gt;'''did_user_id''' –  User ID from database whom DID should be assigned. '''Just free DID can be assigned to User.''' DID can be assigned to a Reseller or a simple User. Set -1 to make DID free. '''Optional'''&lt;br /&gt;
* '''active_from''' - Active from date in Unix timestamp format. '''Optional'''.&lt;br /&gt;
* '''active_till''' - Active till date in Unix timestamp format. '''Optional'''.&lt;br /&gt;
* '''grace_time''' - same as [[DID_Management#Details|Grace Time GUI option]]: If call duration is less than Grace Time, it will not be accounted for, for example: Grace Time = 3s, call duration &amp;lt;= 3s, then price for the call = 0. '''Optional'''&lt;br /&gt;
* '''language''' - allows setting two letters (i.e., en, it, es, ...) language code. '''Optional'''&lt;br /&gt;
* '''did_provider_id''' - this is the ID of the Provider. Reseller Pro can use this as well.&lt;br /&gt;
* '''custom_sip_header''' - adds a custom SIP header. An empty parameter value (custom_sip_header=) removes the existing value.&lt;br /&gt;
* '''comment''' - main DID comment. An empty value of the parameter (comment=) clears the existing value. '''Optional'''&lt;br /&gt;
* '''reseller_comment''' - reseller-specific DID comment. An empty value of the parameter (reseller_comment=) clears the existing value. '''Optional'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Request===&lt;br /&gt;
&lt;br /&gt;
We have API Secret Key = secret, did_id = 6511 &amp;lt;br&amp;gt;&lt;br /&gt;
We send:&lt;br /&gt;
&lt;br /&gt;
 HTML POST: http://&amp;lt;server_ip&amp;gt;/billing/api/did_details_update?u=admin&amp;amp;did_id=6511&amp;amp;call_limit=999&amp;amp;hash=f7de355c9b4421ce6c705b4b32c89dbcaca51e46&lt;br /&gt;
&lt;br /&gt;
'''* Note that username is not included in hash'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
&lt;br /&gt;
'''Success'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;page&amp;gt;&lt;br /&gt;
  &amp;lt;status&amp;gt;&lt;br /&gt;
    &amp;lt;success&amp;gt;DID details successfully updated&amp;lt;/success&amp;gt;&lt;br /&gt;
  &amp;lt;/status&amp;gt;&lt;br /&gt;
 &amp;lt;/page&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''' After successfully updating, the DID action log record is added.'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
'''Errors'''&lt;br /&gt;
* &amp;lt;error&amp;gt;Access Denied&amp;lt;/error&amp;gt; – Specified username (u) does not exist, or u is not an admin, reseller, or accountant with permission.&lt;br /&gt;
* &amp;lt;error&amp;gt;Incorrect hash&amp;lt;/error&amp;gt; – Hash was not correct. Check API_Secret_Key and order or params while concatenating hash_string.&lt;br /&gt;
* &amp;lt;error&amp;gt;Call limit is incorrect format&amp;lt;/error&amp;gt; – Specified call limit has to be 0 or a positive number.&lt;br /&gt;
* &amp;lt;error&amp;gt;DID is already assigned&amp;lt;/error&amp;gt; – DID is already assigned to another User, Reseller, or Dial Plan.&lt;br /&gt;
* &amp;lt;error&amp;gt;DID was not found&amp;lt;/error&amp;gt; – Specified did does not exist or it belongs to different username(u).&lt;br /&gt;
* &amp;lt;error&amp;gt;Active till must be greater than Active from&amp;lt;/error&amp;gt;&lt;br /&gt;
* &amp;lt;error&amp;gt;Active till must be a valid timestamp&amp;lt;/error&amp;gt;&lt;br /&gt;
* &amp;lt;error&amp;gt;Active from must be a valid timestamp&amp;lt;/error&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=See also=&lt;br /&gt;
&lt;br /&gt;
* [[MOR API]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=MOR_API_did_details_update&amp;diff=31455</id>
		<title>MOR API did details update</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=MOR_API_did_details_update&amp;diff=31455"/>
		<updated>2026-03-12T16:00:34Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* Parametres */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Description=&lt;br /&gt;
&amp;lt;!---This functionality is available in MOR X5 and MOR X6---&amp;gt;&lt;br /&gt;
[[MOR API]] DID details update&lt;br /&gt;
&lt;br /&gt;
Please note that only admin, accountant(with device management) with permission and reseller can use this API. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=Usage=&lt;br /&gt;
&lt;br /&gt;
* Call: /api/did_details_update&lt;br /&gt;
* Methods: POST, GET(if allowed, not recomended)&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
===Parametres===&lt;br /&gt;
&lt;br /&gt;
Parameter which is '''included''' into hash:&lt;br /&gt;
&lt;br /&gt;
* '''did_id''' – this is the ID of DID, which has to be updated. '''Required'''.&lt;br /&gt;
&lt;br /&gt;
'''Note that parameters are shown in the same order as they have to be when generating the hash. Last parameter in a row is API_Secret_Key'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Parameters which are '''not included''' into hash:&lt;br /&gt;
&lt;br /&gt;
* [[MOR API hash construction | hash]] - SHA1 hash constructed using '''did_id''' and API_Secret_Key ([[MOR API hash construction | More described in Constructing hash]]). '''Required'''.&lt;br /&gt;
* '''u''' – username to login. '''Required'''.&lt;br /&gt;
* '''call_limit''' – call limit of did which will be updated. '''Optional'''&lt;br /&gt;
* &amp;lt;!--FROM MOR X6---&amp;gt;'''did_user_id''' –  User ID from database whom DID should be assigned. '''Just free DID can be assigned to User.''' DID can be assigned to a Reseller or a simple User. Set -1 to make DID free. '''Optional'''&lt;br /&gt;
* '''active_from''' - Active from date in Unix timestamp format. '''Optional'''.&lt;br /&gt;
* '''active_till''' - Active till date in Unix timestamp format. '''Optional'''.&lt;br /&gt;
* '''grace_time''' - same as [[DID_Management#Details|Grace Time GUI option]]: If call duration is less than Grace Time, it will not be accounted for, for example: Grace Time = 3s, call duration &amp;lt;= 3s, then price for the call = 0. '''Optional'''&lt;br /&gt;
* '''language''' - allows setting two letters (i.e., en, it, es, ...) language code. '''Optional'''&lt;br /&gt;
* '''did_provider_id''' - this is the ID of the Provider. Reseller Pro can use this as well.&lt;br /&gt;
* '''custom_sip_header''' - adds a custom SIP header. An empty parameter value (custom_sip_header=) removes the existing value.&lt;br /&gt;
* '''comment''' - main DID comment. An empty value of the parameter (comment=) clears the existing value. '''Optional'''&lt;br /&gt;
* '''reseller_comment''' - reseller-specific DID comment. An empty value of the parameter (reseller_comment=) clears the existing value. '''Optional'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Request===&lt;br /&gt;
&lt;br /&gt;
We have API Secret Key = secret, did_id = 6511 &amp;lt;br&amp;gt;&lt;br /&gt;
We send:&lt;br /&gt;
&lt;br /&gt;
 HTML POST: http://&amp;lt;server_ip&amp;gt;/billing/api/did_details_update?u=admin&amp;amp;did_id=6511&amp;amp;call_limit=999&amp;amp;hash=f7de355c9b4421ce6c705b4b32c89dbcaca51e46&lt;br /&gt;
&lt;br /&gt;
'''* Note that username is not included in hash'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
&lt;br /&gt;
'''Success'''&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;page&amp;gt;&lt;br /&gt;
  &amp;lt;status&amp;gt;&lt;br /&gt;
    &amp;lt;success&amp;gt;DID details successfully updated&amp;lt;/success&amp;gt;&lt;br /&gt;
  &amp;lt;/status&amp;gt;&lt;br /&gt;
 &amp;lt;/page&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''After successfully updating DID action log record is added.'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
'''Errors'''&lt;br /&gt;
* &amp;lt;error&amp;gt;Access Denied&amp;lt;/error&amp;gt; – Specified username (u) does not exist or u is not admin, reseller or accountant with permission.&lt;br /&gt;
* &amp;lt;error&amp;gt;Incorrect hash&amp;lt;/error&amp;gt; – Hash was not correct. Check API_Secret_Key and order or params while concatenating hash_string.&lt;br /&gt;
* &amp;lt;error&amp;gt;Call limit is incorrect format&amp;lt;/error&amp;gt; – Specified call limit has to be 0 or positive number.&lt;br /&gt;
* &amp;lt;error&amp;gt;DID is already assigned&amp;lt;/error&amp;gt; – DID is already assign to other User, Reseller or Dial Plan.&lt;br /&gt;
* &amp;lt;error&amp;gt;DID was not found&amp;lt;/error&amp;gt; – Specified did does not exist or it belongs to different username(u).&lt;br /&gt;
* &amp;lt;error&amp;gt;Active till must be greater than Active from&amp;lt;/error&amp;gt;&lt;br /&gt;
* &amp;lt;error&amp;gt;Active till must be a valid timestamp&amp;lt;/error&amp;gt;&lt;br /&gt;
* &amp;lt;error&amp;gt;Active from must be a valid timestamp&amp;lt;/error&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=See also=&lt;br /&gt;
&lt;br /&gt;
* [[MOR API]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=Re-INVITE_UDP_fragmentation&amp;diff=31424</id>
		<title>Re-INVITE UDP fragmentation</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=Re-INVITE_UDP_fragmentation&amp;diff=31424"/>
		<updated>2026-03-05T16:15:16Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Problem'''&amp;lt;br&amp;gt;&lt;br /&gt;
The client sends SIP re-INVITEs over UDP that exceed the standard MTU (e.g. 1529 bytes &amp;amp;gt; 1500 bytes). The re-INVITE is fragmented at the IP layer. On your side, re-INVITEs do not appear in traces; the client receives no response, and the call ends. Initial INVITE is within MTU and works; only the larger re-INVITE is affected.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Root cause'''&amp;lt;br&amp;gt;&lt;br /&gt;
Fragmented UDP packets are dropped by your NAT/firewall (or possibly by the server interface). Only the first fragment or no fragments are delivered, so the proxy (M4) never sees the full re-INVITE and does not respond.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
== Solution ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''1. Review network equipment'''&amp;lt;br&amp;gt;&lt;br /&gt;
Check NAT and firewall settings for handling of fragmented UDP packets. Allow or correctly reassemble fragmented UDP so that re-INVITEs reach the M4 server. If you cannot change how fragmented UDP is handled, use the TCP option below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''2. Use TCP for SIP (workaround)'''&amp;lt;br&amp;gt;&lt;br /&gt;
If fragmented UDP cannot be fixed on the network side, use TCP for SIP instead of UDP. TCP may be handled differently by your NAT/firewall.&lt;br /&gt;
&lt;br /&gt;
* On M4: enable TCP for SIP in the Operator Panel (OP): '''Advanced''' (or advanced section) → enable TCP for SIP. Verify the exact menu label in the application.&lt;br /&gt;
* On the client: configure the SIP stack to send signaling over TCP to M4 (same destination IP/port, TCP instead of UDP).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''3. Verify with tests'''&amp;lt;br&amp;gt;&lt;br /&gt;
To confirm that oversized UDP is fragmented and that fragments are dropped on your side, use the following from a client machine and capture on the server.&lt;br /&gt;
&lt;br /&gt;
* From the client (replace &amp;lt;code&amp;gt;xx.xx.xx.xx&amp;lt;/code&amp;gt; with the M4/server IP, use a port that nothing listens on, e.g. 1234):&amp;lt;br&amp;gt;&lt;br /&gt;
** Non-fragmented (payload 1472 + 28 = 1500 bytes, within MTU): &amp;lt;code&amp;gt;hping3 -p 1234 -c 3 --udp -d 1472 xx.xx.xx.xx&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
** Fragmented (payload 1473 + 28 = 1501 bytes, over MTU): &amp;lt;code&amp;gt;hping3 -p 1234 -c 3 --udp -d 1473 xx.xx.xx.xx&amp;lt;/code&amp;gt;&lt;br /&gt;
* Interpretation: if UDP is delivered, the host will respond with ICMP “port unreachable,” and you will see 0% packet loss. If only the 1472-byte test shows 0% loss and the 1473-byte test shows loss, fragmented UDP is being dropped.&lt;br /&gt;
* On the server, to see what actually arrives (replace &amp;lt;code&amp;gt;yy.yy.yy.yy&amp;lt;/code&amp;gt; with the client IP): &amp;lt;code&amp;gt;tcpdump -i any -nn 'host yy.yy.yy.yy and not tcp'&amp;lt;/code&amp;gt;. The &amp;lt;code&amp;gt;not tcp&amp;lt;/code&amp;gt; filter prevents your SSH session from being captured. Compare what you see when sending 1472 vs 1473 bytes from the client.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Example where red is oversized packets and green are good UDP packets:&lt;br /&gt;
&lt;br /&gt;
[[File:2603051804.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Related'''&amp;lt;br&amp;gt;&lt;br /&gt;
If the initial INVITE is also too large (e.g., many codecs in SDP), reducing the SDP size (e.g., only needed codecs) can keep packets under MTU; see [[MOR_does_not_send_Contact_header | MOR does not send Contact header]]. For NAT and port forwarding in general, see [[M4_under_NAT | M4 under NAT]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[MOR does not send Contact header]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=MOR_does_not_send_Contact_header&amp;diff=31423</id>
		<title>MOR does not send Contact header</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=MOR_does_not_send_Contact_header&amp;diff=31423"/>
		<updated>2026-03-05T16:15:08Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Problem Description=&lt;br /&gt;
MOR does not include a Contact header in 180/183/200 OK SIP messages sent back to the originating device.&lt;br /&gt;
The device drops the call immediately after the call is answered.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
== Possible reasons ==&lt;br /&gt;
This can happen if the ACK message from the client for MOR 401 Unauthorized reaches MOR '''after second''' Invite.&lt;br /&gt;
&lt;br /&gt;
[[File:Ack_after_invite.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As can be seen in the image, packets arrived in MOR out of order; the second Invite reached MOR before the ACK.&lt;br /&gt;
This can happen if the INVITE packet is too big and is fragmented by the IP stack.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
== Possible solutions ==&lt;br /&gt;
&lt;br /&gt;
As mentioned, the INVITE packet can be fragmented by the IP stack if it is too big.&lt;br /&gt;
An INVITE packet is usually too large when there are many codecs in the SDP, so one way to avoid fragmentation is to ask the client to send only the codecs that are actually needed.&lt;br /&gt;
For example, if in MOR Device settings only G729 and G711 codecs are enabled, the client should send only these codecs, as MOR will not use any others.&lt;br /&gt;
&lt;br /&gt;
With only the necessary codecs in INVITE, packets will be smaller and not fragmented, which should prevent the IP stack from reordering them.&lt;br /&gt;
&lt;br /&gt;
[[File:Ack_before_invite.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
== Note about Wireshark and GUI pcaps ==&lt;br /&gt;
&lt;br /&gt;
If packets are fragmented, PCAPS in the GUI will not show such packets at all.&lt;br /&gt;
To see such packets, raw pcap must be downloaded and Wireshark option '''Reassemble fragmented IPv4 datagrams''' must be '''disabled''' (not checked) in Edit-&amp;gt;Preferences-&amp;gt;Protocols-&amp;gt;IPv4 before doing any filtering on a raw pcap.&lt;br /&gt;
&lt;br /&gt;
[[File:Wireshark_reassemble.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Re-INVITE UDP fragmentation]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=MOR_does_not_send_Contact_header&amp;diff=31422</id>
		<title>MOR does not send Contact header</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=MOR_does_not_send_Contact_header&amp;diff=31422"/>
		<updated>2026-03-05T16:14:38Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Problem Description=&lt;br /&gt;
MOR does not include a Contact header in 180/183/200 OK SIP messages sent back to the originating device.&lt;br /&gt;
The device drops the call immediately after the call was answered.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
== Possible reasons ==&lt;br /&gt;
This can happen if the ACK message from the client for MOR 401 Unauthorized reaches MOR '''after second''' Invite.&lt;br /&gt;
&lt;br /&gt;
[[File:Ack_after_invite.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As can be seen in the image, packets arrived in MOR out of order; the second Invite reached MOR before the ACK.&lt;br /&gt;
This can happen if the INVITE packet is too big and is fragmented by the IP stack.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
== Possible solutions ==&lt;br /&gt;
&lt;br /&gt;
As mentioned, the INVITE packet can be fragmented by the IP stack if it is too big.&lt;br /&gt;
An INVITE packet is usually too large when there are many codecs in the SDP, so one way to avoid fragmentation is to ask the client to send only the codecs that are actually needed.&lt;br /&gt;
For example, if in MOR Device settings only G729 and G711 codecs are enabled, the client should send only these codecs, as MOR will not use any others.&lt;br /&gt;
&lt;br /&gt;
With only the necessary codecs in INVITE, packets will be smaller and not fragmented, which should prevent the IP stack from reordering them.&lt;br /&gt;
&lt;br /&gt;
[[File:Ack_before_invite.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
== Note about Wireshark and GUI pcaps ==&lt;br /&gt;
&lt;br /&gt;
If packets are fragmented, PCAPS in the GUI will not show such packets at all.&lt;br /&gt;
To see such packets, raw pcap must be downloaded and Wireshark option '''Reassemble fragmented IPv4 datagrams''' must be '''disabled''' (not checked) in Edit-&amp;gt;Preferences-&amp;gt;Protocls-&amp;gt;IPv4 before doing any filtering on a raw pcap.&lt;br /&gt;
&lt;br /&gt;
[[File:Wireshark_reassemble.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=== See also ===&lt;br /&gt;
* [[Re-INVITE UDP fragmentation]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=Re-INVITE_UDP_fragmentation&amp;diff=31421</id>
		<title>Re-INVITE UDP fragmentation</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=Re-INVITE_UDP_fragmentation&amp;diff=31421"/>
		<updated>2026-03-05T16:14:04Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Problem'''&amp;lt;br&amp;gt;&lt;br /&gt;
The client sends SIP re-INVITEs over UDP that exceed the standard MTU (e.g. 1529 bytes &amp;amp;gt; 1500 bytes). The re-INVITE is fragmented at the IP layer. On your side, re-INVITEs do not appear in traces; the client receives no response, and the call ends. Initial INVITE is within MTU and works; only the larger re-INVITE is affected.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Root cause'''&amp;lt;br&amp;gt;&lt;br /&gt;
Fragmented UDP packets are dropped by your NAT/firewall (or possibly by the server interface). Only the first fragment or no fragments are delivered, so the proxy (M4) never sees the full re-INVITE and does not respond.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
== Solution ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''1. Review network equipment'''&amp;lt;br&amp;gt;&lt;br /&gt;
Check NAT and firewall settings for handling of fragmented UDP packets. Allow or correctly reassemble fragmented UDP so that re-INVITEs reach the M4 server. If you cannot change how fragmented UDP is handled, use the TCP option below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''2. Use TCP for SIP (workaround)'''&amp;lt;br&amp;gt;&lt;br /&gt;
If fragmented UDP cannot be fixed on the network side, use TCP for SIP instead of UDP. TCP may be handled differently by your NAT/firewall.&lt;br /&gt;
&lt;br /&gt;
* On M4: enable TCP for SIP in the Operator Panel (OP): '''Advanced''' (or advanced section) → enable TCP for SIP. Verify the exact menu label in the application.&lt;br /&gt;
* On the client: configure the SIP stack to send signaling over TCP to M4 (same destination IP/port, TCP instead of UDP).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''3. Verify with tests'''&amp;lt;br&amp;gt;&lt;br /&gt;
To confirm that oversized UDP is fragmented and that fragments are dropped on your side, use the following from a client machine and capture on the server.&lt;br /&gt;
&lt;br /&gt;
* From the client (replace &amp;lt;code&amp;gt;xx.xx.xx.xx&amp;lt;/code&amp;gt; with the M4/server IP, use a port that nothing listens on, e.g. 1234):&amp;lt;br&amp;gt;&lt;br /&gt;
** Non-fragmented (payload 1472 + 28 = 1500 bytes, within MTU): &amp;lt;code&amp;gt;hping3 -p 1234 -c 3 --udp -d 1472 xx.xx.xx.xx&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
** Fragmented (payload 1473 + 28 = 1501 bytes, over MTU): &amp;lt;code&amp;gt;hping3 -p 1234 -c 3 --udp -d 1473 xx.xx.xx.xx&amp;lt;/code&amp;gt;&lt;br /&gt;
* Interpretation: if UDP is delivered, the host will respond with ICMP “port unreachable,” and you will see 0% packet loss. If only the 1472-byte test shows 0% loss and the 1473-byte test shows loss, fragmented UDP is being dropped.&lt;br /&gt;
* On the server, to see what actually arrives (replace &amp;lt;code&amp;gt;yy.yy.yy.yy&amp;lt;/code&amp;gt; with the client IP): &amp;lt;code&amp;gt;tcpdump -i any -nn 'host yy.yy.yy.yy and not tcp'&amp;lt;/code&amp;gt;. The &amp;lt;code&amp;gt;not tcp&amp;lt;/code&amp;gt; filter prevents your SSH session from being captured. Compare what you see when sending 1472 vs 1473 bytes from the client.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Example where red is oversized packets and green are good UDP packets:&lt;br /&gt;
&lt;br /&gt;
[[File:2603051804.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Related'''&amp;lt;br&amp;gt;&lt;br /&gt;
If the initial INVITE is also too large (e.g., many codecs in SDP), reducing the SDP size (e.g., only needed codecs) can keep packets under MTU; see [[MOR_does_not_send_Contact_header | MOR does not send Contact header]]. For NAT and port forwarding in general, see [[M4_under_NAT | M4 under NAT]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=== See also ===&lt;br /&gt;
* [[MOR does not send Contact header]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=MOR_does_not_send_Contact_header&amp;diff=31420</id>
		<title>MOR does not send Contact header</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=MOR_does_not_send_Contact_header&amp;diff=31420"/>
		<updated>2026-03-05T16:13:38Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* Possible solutions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Problem Description=&lt;br /&gt;
MOR does not include a Contact header in 180/183/200 OK SIP messages sent back to the originating device.&lt;br /&gt;
The device drops the call immediately after the call was answered.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
== Possible reasons ==&lt;br /&gt;
This can happen if the ACK message from the client for MOR 401 Unauthorized reaches MOR '''after second''' Invite.&lt;br /&gt;
&lt;br /&gt;
[[File:Ack_after_invite.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As can be seen in the image, packets arrived in MOR out of order; the second Invite reached MOR before the ACK.&lt;br /&gt;
This can happen if the INVITE packet is too big and is fragmented by the IP stack.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
== Possible solutions ==&lt;br /&gt;
&lt;br /&gt;
As mentioned, the INVITE packet can be fragmented by the IP stack if it is too big.&lt;br /&gt;
An INVITE packet is usually too large when there are many codecs in the SDP, so one way to avoid fragmentation is to ask the client to send only the codecs that are actually needed.&lt;br /&gt;
For example, if in MOR Device settings only G729 and G711 codecs are enabled, the client should send only these codecs, as MOR will not use any others.&lt;br /&gt;
&lt;br /&gt;
With only the necessary codecs in INVITE, packets will be smaller and not fragmented, which should prevent the IP stack from reordering them.&lt;br /&gt;
&lt;br /&gt;
[[File:Ack_before_invite.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=== See also ===&lt;br /&gt;
* [[Re-INVITE UDP fragmentation]]&lt;br /&gt;
&lt;br /&gt;
== Note about Wireshark and GUI pcaps ==&lt;br /&gt;
&lt;br /&gt;
If packets are fragmented, PCAPS in the GUI will not show such packets at all.&lt;br /&gt;
To see such packets, raw pcap must be downloaded and Wireshark option '''Reassemble fragmented IPv4 datagrams''' must be '''disabled''' (not checked) in Edit-&amp;gt;Preferences-&amp;gt;Protocls-&amp;gt;IPv4 before doing any filtering on a raw pcap.&lt;br /&gt;
&lt;br /&gt;
[[File:Wireshark_reassemble.png]]&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=MOR_does_not_send_Contact_header&amp;diff=31419</id>
		<title>MOR does not send Contact header</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=MOR_does_not_send_Contact_header&amp;diff=31419"/>
		<updated>2026-03-05T16:12:35Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* Possible reasons */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Problem Description=&lt;br /&gt;
MOR does not include a Contact header in 180/183/200 OK SIP messages sent back to the originating device.&lt;br /&gt;
The device drops the call immediately after the call was answered.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
== Possible reasons ==&lt;br /&gt;
This can happen if the ACK message from the client for MOR 401 Unauthorized reaches MOR '''after second''' Invite.&lt;br /&gt;
&lt;br /&gt;
[[File:Ack_after_invite.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As can be seen in the image, packets arrived in MOR out of order; the second Invite reached MOR before the ACK.&lt;br /&gt;
This can happen if the INVITE packet is too big and is fragmented by the IP stack.&lt;br /&gt;
&lt;br /&gt;
== Possible solutions ==&lt;br /&gt;
&lt;br /&gt;
As mentioned, the INVITE packet can be fragmented by the IP stack if it is too big.&lt;br /&gt;
INVITE packet is usually too big when there are a lot of codecs in SDP, so one solution to make sure that packet is not fragmented is to ask the client to send only codes which are actually needed.&lt;br /&gt;
For example, if in MOR Device settings, only G729 and G711 codecs are enabled, the client should send only these codecs, as all others will not be used by MOR in any case.&lt;br /&gt;
&lt;br /&gt;
With only needed codecs in INVITE, packets will be smaller and not fragmented, and this should prevent the IP stack from reordering them.&lt;br /&gt;
&lt;br /&gt;
[[File:Ack_before_invite.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
== Note about Wireshark and GUI pcaps ==&lt;br /&gt;
&lt;br /&gt;
If packets are fragmented, PCAPS in the GUI will not show such packets at all.&lt;br /&gt;
To see such packets, raw pcap must be downloaded and Wireshark option '''Reassemble fragmented IPv4 datagrams''' must be '''disabled''' (not checked) in Edit-&amp;gt;Preferences-&amp;gt;Protocls-&amp;gt;IPv4 before doing any filtering on a raw pcap.&lt;br /&gt;
&lt;br /&gt;
[[File:Wireshark_reassemble.png]]&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=MOR_does_not_send_Contact_header&amp;diff=31418</id>
		<title>MOR does not send Contact header</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=MOR_does_not_send_Contact_header&amp;diff=31418"/>
		<updated>2026-03-05T16:12:22Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* Note about Wireshark and GUI pcaps */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Problem Description=&lt;br /&gt;
MOR does not include a Contact header in 180/183/200 OK SIP messages sent back to the originating device.&lt;br /&gt;
The device drops the call immediately after the call was answered.&lt;br /&gt;
&lt;br /&gt;
== Possible reasons ==&lt;br /&gt;
This can happen if the ACK message from the client for MOR 401 Unauthorized reaches MOR '''after second''' Invite.&lt;br /&gt;
&lt;br /&gt;
[[File:Ack_after_invite.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As can be seen in the image, packets arrived in MOR out of the order, the second Invite reached MOR before the ACK.&lt;br /&gt;
This can happen if the INVITE packet is too big and is fragmented by the IP stack.&lt;br /&gt;
&lt;br /&gt;
== Possible solutions ==&lt;br /&gt;
&lt;br /&gt;
As mentioned, the INVITE packet can be fragmented by the IP stack if it is too big.&lt;br /&gt;
INVITE packet is usually too big when there are a lot of codecs in SDP, so one solution to make sure that packet is not fragmented is to ask the client to send only codes which are actually needed.&lt;br /&gt;
For example, if in MOR Device settings, only G729 and G711 codecs are enabled, the client should send only these codecs, as all others will not be used by MOR in any case.&lt;br /&gt;
&lt;br /&gt;
With only needed codecs in INVITE, packets will be smaller and not fragmented, and this should prevent the IP stack from reordering them.&lt;br /&gt;
&lt;br /&gt;
[[File:Ack_before_invite.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
== Note about Wireshark and GUI pcaps ==&lt;br /&gt;
&lt;br /&gt;
If packets are fragmented, PCAPS in the GUI will not show such packets at all.&lt;br /&gt;
To see such packets, raw pcap must be downloaded and Wireshark option '''Reassemble fragmented IPv4 datagrams''' must be '''disabled''' (not checked) in Edit-&amp;gt;Preferences-&amp;gt;Protocls-&amp;gt;IPv4 before doing any filtering on a raw pcap.&lt;br /&gt;
&lt;br /&gt;
[[File:Wireshark_reassemble.png]]&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=Re-INVITE_UDP_fragmentation&amp;diff=31417</id>
		<title>Re-INVITE UDP fragmentation</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=Re-INVITE_UDP_fragmentation&amp;diff=31417"/>
		<updated>2026-03-05T16:11:52Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Problem'''&amp;lt;br&amp;gt;&lt;br /&gt;
The client sends SIP re-INVITEs over UDP that exceed the standard MTU (e.g. 1529 bytes &amp;amp;gt; 1500 bytes). The re-INVITE is fragmented at the IP layer. On your side, re-INVITEs do not appear in traces; the client receives no response, and the call ends. Initial INVITE is within MTU and works; only the larger re-INVITE is affected.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Root cause'''&amp;lt;br&amp;gt;&lt;br /&gt;
Fragmented UDP packets are dropped by your NAT/firewall (or possibly by the server interface). Only the first fragment or no fragments are delivered, so the proxy (M4) never sees the full re-INVITE and does not respond.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
== Solution ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''1. Review network equipment'''&amp;lt;br&amp;gt;&lt;br /&gt;
Check NAT and firewall settings for handling of fragmented UDP packets. Allow or correctly reassemble fragmented UDP so that re-INVITEs reach the M4 server. If you cannot change how fragmented UDP is handled, use the TCP option below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''2. Use TCP for SIP (workaround)'''&amp;lt;br&amp;gt;&lt;br /&gt;
If fragmented UDP cannot be fixed on the network side, use TCP for SIP instead of UDP. TCP may be handled differently by your NAT/firewall.&lt;br /&gt;
&lt;br /&gt;
* On M4: enable TCP for SIP in the Operator Panel (OP): '''Advanced''' (or advanced section) → enable TCP for SIP. Verify the exact menu label in the application.&lt;br /&gt;
* On the client: configure the SIP stack to send signaling over TCP to M4 (same destination IP/port, TCP instead of UDP).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''3. Verify with tests'''&amp;lt;br&amp;gt;&lt;br /&gt;
To confirm that oversized UDP is fragmented and that fragments are dropped on your side, use the following from a client machine and capture on the server.&lt;br /&gt;
&lt;br /&gt;
* From the client (replace &amp;lt;code&amp;gt;xx.xx.xx.xx&amp;lt;/code&amp;gt; with the M4/server IP, use a port that nothing listens on, e.g. 1234):&amp;lt;br&amp;gt;&lt;br /&gt;
** Non-fragmented (payload 1472 + 28 = 1500 bytes, within MTU): &amp;lt;code&amp;gt;hping3 -p 1234 -c 3 --udp -d 1472 xx.xx.xx.xx&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
** Fragmented (payload 1473 + 28 = 1501 bytes, over MTU): &amp;lt;code&amp;gt;hping3 -p 1234 -c 3 --udp -d 1473 xx.xx.xx.xx&amp;lt;/code&amp;gt;&lt;br /&gt;
* Interpretation: if UDP is delivered, the host will respond with ICMP “port unreachable,” and you will see 0% packet loss. If only the 1472-byte test shows 0% loss and the 1473-byte test shows loss, fragmented UDP is being dropped.&lt;br /&gt;
* On the server, to see what actually arrives (replace &amp;lt;code&amp;gt;yy.yy.yy.yy&amp;lt;/code&amp;gt; with the client IP): &amp;lt;code&amp;gt;tcpdump -i any -nn 'host yy.yy.yy.yy and not tcp'&amp;lt;/code&amp;gt;. The &amp;lt;code&amp;gt;not tcp&amp;lt;/code&amp;gt; filter prevents your SSH session from being captured. Compare what you see when sending 1472 vs 1473 bytes from the client.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Example where red is oversized packets and green are good UDP packets:&lt;br /&gt;
&lt;br /&gt;
[[File:2603051804.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Related'''&amp;lt;br&amp;gt;&lt;br /&gt;
If the initial INVITE is also too large (e.g., many codecs in SDP), reducing the SDP size (e.g., only needed codecs) can keep packets under MTU; see [[MOR_does_not_send_Contact_header | MOR does not send Contact header]]. For NAT and port forwarding in general, see [[M4_under_NAT | M4 under NAT]].&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=Call_hangs_after_15_minutes&amp;diff=31416</id>
		<title>Call hangs after 15 minutes</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=Call_hangs_after_15_minutes&amp;diff=31416"/>
		<updated>2026-03-05T16:10:27Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* POSSIBLE SOLUTIONS */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The switch may not be responding to the SIP re-INVITE. &lt;br /&gt;
&lt;br /&gt;
Some providers perform a SIP re-INVITE every 15 minutes for any active calls. It's a way of checking if the call is indeed still active. If an appropriate 200 OK is not received back, they disconnect the call.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= POSSIBLE CAUSES/SOLUTIONS =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Change Provider ===&lt;br /&gt;
&lt;br /&gt;
Change the Provider and check if the issue is gone to confirm the origin of the problem.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Canreinvite setting ===&lt;br /&gt;
&lt;br /&gt;
Set '''canreinvite''' to '''yes''' in the Device's Edit window.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== UDP fragmentation ===&lt;br /&gt;
&lt;br /&gt;
Oversized UDP packets (&amp;gt;1500) may be dropped at some point. That prevents the oversized Re-Invite packets from reaching the system, halting the call. &lt;br /&gt;
&lt;br /&gt;
More details and how to test here: [[Re-INVITE UDP fragmentation]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Solve NAT issues ===&lt;br /&gt;
* Make sure the network is configured properly, and all packets reach the Softswitch. &lt;br /&gt;
* Do pcap capture and analyze the logs.&lt;br /&gt;
** check the domain in the request URI&lt;br /&gt;
** check if Public IP addresses are placed in SIP headers&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Adjust session timers ===&lt;br /&gt;
&lt;br /&gt;
In the Device or Provider settings page, you can change these parameters:&lt;br /&gt;
&lt;br /&gt;
session-timers&lt;br /&gt;
&lt;br /&gt;
session-expires&lt;br /&gt;
&lt;br /&gt;
session-minse&lt;br /&gt;
&lt;br /&gt;
session-refresher&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Check which settings the User or Provider requires and set them accordingly.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Disable session timers (not recommended) ===&lt;br /&gt;
&lt;br /&gt;
In the general section in /etc/asterisk/sip.conf: session-timers=refuse&lt;br /&gt;
&lt;br /&gt;
It can be done per Device on the Device Settings page.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;&lt;br /&gt;
IMPORTANT: The Drawback is that a call can appear to run forever if the BYE message is lost due to network issues.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== MicroSIP example ===&lt;br /&gt;
&lt;br /&gt;
Example lines from MicroSIP invite:&lt;br /&gt;
&lt;br /&gt;
 Supported: replaces, 100rel, timer, norefersub&lt;br /&gt;
 Session-Expires: 1800&lt;br /&gt;
 Min-SE: 90&lt;br /&gt;
 User-Agent: MicroSIP/3.21.6&lt;br /&gt;
&lt;br /&gt;
By default, this means that MOR should send a re-INVITE after half the Session-Expires value (1800/2 = 900 seconds = 15 minutes) to ensure the SIP session remains active.&lt;br /&gt;
&lt;br /&gt;
If we can see from the SIP trace that microSIP does not respond to MOR ReINVITES  (and then MOR drops the call), you can try the following in the device settings that represent the SIP device:&lt;br /&gt;
&lt;br /&gt;
a) Set SIP Session Refresher: to UAC (default is UAS). This means that microSIP will send re-INVITES to MOR; maybe this will work better. (Under MicroSIP's Devices settings)&lt;br /&gt;
&lt;br /&gt;
b) Another approach is to set the SIP Session Timers to refuse&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= See also =&lt;br /&gt;
* [https://tools.ietf.org/html/rfc4028 Session Timers in the Session Initiation Protocol (SIP) RFC 4028]&lt;br /&gt;
* https://andrewjprokop.wordpress.com/2015/02/10/understanding-sip-re-invite&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=Call_hangs_after_15_minutes&amp;diff=31415</id>
		<title>Call hangs after 15 minutes</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=Call_hangs_after_15_minutes&amp;diff=31415"/>
		<updated>2026-03-05T16:10:03Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* POSSIBLE SOLUTIONS */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The switch may not be responding to the SIP re-INVITE. &lt;br /&gt;
&lt;br /&gt;
Some providers perform a SIP re-INVITE every 15 minutes for any active calls. It's a way of checking if the call is indeed still active. If an appropriate 200 OK is not received back, they disconnect the call.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= POSSIBLE SOLUTIONS =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Change Provider ===&lt;br /&gt;
&lt;br /&gt;
Change the Provider and check if the issue is gone to confirm the origin of the problem.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Canreinvite setting ===&lt;br /&gt;
&lt;br /&gt;
Set '''canreinvite''' to '''yes''' in the Device's Edit window.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== UDP fragmentation ===&lt;br /&gt;
&lt;br /&gt;
Oversized UDP packets (&amp;gt;1500) may be dropped at some point. That prevents the oversized Re-Invite packets from reaching the system, halting the call. &lt;br /&gt;
&lt;br /&gt;
More details and how to test here: [[Re-INVITE UDP fragmentation]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Solve NAT issues ===&lt;br /&gt;
* Make sure the network is configured properly, and all packets reach the Softswitch. &lt;br /&gt;
* Do pcap capture and analyze the logs.&lt;br /&gt;
** check the domain in the request URI&lt;br /&gt;
** check if Public IP addresses are placed in SIP headers&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Adjust session timers ===&lt;br /&gt;
&lt;br /&gt;
In the Device or Provider settings page, you can change these parameters:&lt;br /&gt;
&lt;br /&gt;
session-timers&lt;br /&gt;
&lt;br /&gt;
session-expires&lt;br /&gt;
&lt;br /&gt;
session-minse&lt;br /&gt;
&lt;br /&gt;
session-refresher&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Check which settings the User or Provider requires and set them accordingly.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Disable session timers (not recommended) ===&lt;br /&gt;
&lt;br /&gt;
In the general section in /etc/asterisk/sip.conf: session-timers=refuse&lt;br /&gt;
&lt;br /&gt;
It can be done per Device on the Device Settings page.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: red&amp;quot;&amp;gt;&lt;br /&gt;
IMPORTANT: The Drawback is that a call can appear to run forever if the BYE message is lost due to network issues.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== MicroSIP example ===&lt;br /&gt;
&lt;br /&gt;
Example lines from MicroSIP invite:&lt;br /&gt;
&lt;br /&gt;
 Supported: replaces, 100rel, timer, norefersub&lt;br /&gt;
 Session-Expires: 1800&lt;br /&gt;
 Min-SE: 90&lt;br /&gt;
 User-Agent: MicroSIP/3.21.6&lt;br /&gt;
&lt;br /&gt;
By default, this means that MOR should send a re-INVITE after half the Session-Expires value (1800/2 = 900 seconds = 15 minutes) to ensure the SIP session remains active.&lt;br /&gt;
&lt;br /&gt;
If we can see from the SIP trace that microSIP does not respond to MOR ReINVITES  (and then MOR drops the call), you can try the following in the device settings that represent the SIP device:&lt;br /&gt;
&lt;br /&gt;
a) Set SIP Session Refresher: to UAC (default is UAS). This means that microSIP will send re-INVITES to MOR; maybe this will work better. (Under MicroSIP's Devices settings)&lt;br /&gt;
&lt;br /&gt;
b) Another approach is to set the SIP Session Timers to refuse&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= See also =&lt;br /&gt;
* [https://tools.ietf.org/html/rfc4028 Session Timers in the Session Initiation Protocol (SIP) RFC 4028]&lt;br /&gt;
* https://andrewjprokop.wordpress.com/2015/02/10/understanding-sip-re-invite&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=Re-INVITE_UDP_fragmentation&amp;diff=31414</id>
		<title>Re-INVITE UDP fragmentation</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=Re-INVITE_UDP_fragmentation&amp;diff=31414"/>
		<updated>2026-03-05T16:05:26Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Problem'''&amp;lt;br&amp;gt;&lt;br /&gt;
The client sends SIP re-INVITEs over UDP that exceed the standard MTU (e.g. 1529 bytes &amp;amp;gt; 1500 bytes). The re-INVITE is fragmented at the IP layer. On your side, re-INVITEs do not appear in traces; the client receives no response, and the call ends. Initial INVITE is within MTU and works; only the larger re-INVITE is affected.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Root cause'''&amp;lt;br&amp;gt;&lt;br /&gt;
Fragmented UDP packets are dropped by your NAT/firewall (or possibly by the server interface). Only the first fragment or no fragments are delivered, so the proxy (M4) never sees the full re-INVITE and does not respond.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
== Solution ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''1. Review network equipment'''&amp;lt;br&amp;gt;&lt;br /&gt;
Check NAT and firewall settings for handling of fragmented UDP packets. Allow or correctly reassemble fragmented UDP so that re-INVITEs reach the M4 server. If you cannot change how fragmented UDP is handled, use the TCP option below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''2. Use TCP for SIP (workaround)'''&amp;lt;br&amp;gt;&lt;br /&gt;
If fragmented UDP cannot be fixed on the network side, use TCP for SIP instead of UDP. TCP may be handled differently by your NAT/firewall.&lt;br /&gt;
&lt;br /&gt;
* On M4: enable TCP for SIP in the Operator Panel (OP): '''Advanced''' (or advanced section) → enable TCP for SIP. Verify the exact menu label in the application.&lt;br /&gt;
* On the client: configure the SIP stack to send signaling over TCP to M4 (same destination IP/port, TCP instead of UDP).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''3. Verify with tests'''&amp;lt;br&amp;gt;&lt;br /&gt;
To confirm that oversized UDP is fragmented and that fragments are dropped on your side, use the following from a client machine and capture on the server.&lt;br /&gt;
&lt;br /&gt;
* From the client (replace &amp;lt;code&amp;gt;xx.xx.xx.xx&amp;lt;/code&amp;gt; with the M4/server IP, use a port that nothing listens on, e.g. 1234):&amp;lt;br&amp;gt;&lt;br /&gt;
** Non-fragmented (payload 1472 + 28 = 1500 bytes, within MTU): &amp;lt;code&amp;gt;hping3 -p 1234 -c 3 --udp -d 1472 xx.xx.xx.xx&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
** Fragmented (payload 1473 + 28 = 1501 bytes, over MTU): &amp;lt;code&amp;gt;hping3 -p 1234 -c 3 --udp -d 1473 xx.xx.xx.xx&amp;lt;/code&amp;gt;&lt;br /&gt;
* Interpretation: if UDP is delivered, the host will respond with ICMP “port unreachable,” and you will see 0% packet loss. If only the 1472-byte test shows 0% loss and the 1473-byte test shows loss, fragmented UDP is being dropped.&lt;br /&gt;
* On the server, to see what actually arrives (replace &amp;lt;code&amp;gt;yy.yy.yy.yy&amp;lt;/code&amp;gt; with the client IP): &amp;lt;code&amp;gt;tcpdump -i any -nn 'host yy.yy.yy.yy and not tcp'&amp;lt;/code&amp;gt;. The &amp;lt;code&amp;gt;not tcp&amp;lt;/code&amp;gt; filter prevents your SSH session from being captured. Compare what you see when sending 1472 vs 1473 bytes from the client.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Example where red is oversized packets and green are good UDP packets:&lt;br /&gt;
&lt;br /&gt;
[[File:2603051804.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Related'''&amp;lt;br&amp;gt;&lt;br /&gt;
If the initial INVITE is also too large (e.g., many codecs in SDP), reducing the SDP size (e.g., only needed codecs) can keep packets under MTU; see [[MOR_does_not_send_Contact_header]]. For NAT and port forwarding in general, see [[M4_under_NAT]].&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=Re-INVITE_UDP_fragmentation&amp;diff=31413</id>
		<title>Re-INVITE UDP fragmentation</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=Re-INVITE_UDP_fragmentation&amp;diff=31413"/>
		<updated>2026-03-05T16:05:06Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Problem'''&amp;lt;br&amp;gt;&lt;br /&gt;
The client sends SIP re-INVITEs over UDP that exceed the standard MTU (e.g. 1529 bytes &amp;amp;gt; 1500 bytes). The re-INVITE is fragmented at the IP layer. On your side, re-INVITEs do not appear in traces; the client receives no response, and the call ends. Initial INVITE is within MTU and works; only the larger re-INVITE is affected.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Root cause'''&amp;lt;br&amp;gt;&lt;br /&gt;
Fragmented UDP packets are dropped by your NAT/firewall (or possibly by the server interface). Only the first fragment or no fragments are delivered, so the proxy (M4) never sees the full re-INVITE and does not respond.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
== Solution ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''1. Review network equipment'''&amp;lt;br&amp;gt;&lt;br /&gt;
Check NAT and firewall settings for handling of fragmented UDP packets. Allow or correctly reassemble fragmented UDP so that re-INVITEs reach the M4 server. If you cannot change how fragmented UDP is handled, use the TCP option below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''2. Use TCP for SIP (workaround)'''&amp;lt;br&amp;gt;&lt;br /&gt;
If fragmented UDP cannot be fixed on the network side, use TCP for SIP instead of UDP. TCP may be handled differently by your NAT/firewall.&lt;br /&gt;
&lt;br /&gt;
* On M4: enable TCP for SIP in the Operator Panel (OP): '''Advanced''' (or advanced section) → enable TCP for SIP. Verify the exact menu label in the application.&lt;br /&gt;
* On the client: configure the SIP stack to send signaling over TCP to M4 (same destination IP/port, TCP instead of UDP).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''3. Verify with tests'''&amp;lt;br&amp;gt;&lt;br /&gt;
To confirm that oversized UDP is fragmented and that fragments are dropped on your side, use the following from a client machine and capture on the server.&lt;br /&gt;
&lt;br /&gt;
* From the client (replace &amp;lt;code&amp;gt;xx.xx.xx.xx&amp;lt;/code&amp;gt; with the M4/server IP, use a port that nothing listens on, e.g. 1234):&amp;lt;br&amp;gt;&lt;br /&gt;
** Non-fragmented (payload 1472 + 28 = 1500 bytes, within MTU): &amp;lt;code&amp;gt;hping3 -p 1234 -c 3 --udp -d 1472 xx.xx.xx.xx&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
** Fragmented (payload 1473 + 28 = 1501 bytes, over MTU): &amp;lt;code&amp;gt;hping3 -p 1234 -c 3 --udp -d 1473 xx.xx.xx.xx&amp;lt;/code&amp;gt;&lt;br /&gt;
* Interpretation: if UDP is delivered, the host will respond with ICMP “port unreachable,” and you will see 0% packet loss. If only the 1472-byte test shows 0% loss and the 1473-byte test shows loss, fragmented UDP is being dropped.&lt;br /&gt;
* On the server, to see what actually arrives (replace &amp;lt;code&amp;gt;yy.yy.yy.yy&amp;lt;/code&amp;gt; with the client IP): &amp;lt;code&amp;gt;tcpdump -i any -nn 'host yy.yy.yy.yy and not tcp'&amp;lt;/code&amp;gt;. The &amp;lt;code&amp;gt;not tcp&amp;lt;/code&amp;gt; filter prevents your SSH session from being captured. Compare what you see when sending 1472 vs 1473 bytes from the client.&lt;br /&gt;
&lt;br /&gt;
Example where red is oversized packets and green are good UDP packets:&lt;br /&gt;
&lt;br /&gt;
[[File:2603051804.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Related'''&amp;lt;br&amp;gt;&lt;br /&gt;
If the initial INVITE is also too large (e.g., many codecs in SDP), reducing the SDP size (e.g., only needed codecs) can keep packets under MTU; see [[MOR_does_not_send_Contact_header]]. For NAT and port forwarding in general, see [[M4_under_NAT]].&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=File:2603051804.png&amp;diff=31412</id>
		<title>File:2603051804.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=File:2603051804.png&amp;diff=31412"/>
		<updated>2026-03-05T16:04:49Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=Re-INVITE_UDP_fragmentation&amp;diff=31411</id>
		<title>Re-INVITE UDP fragmentation</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=Re-INVITE_UDP_fragmentation&amp;diff=31411"/>
		<updated>2026-03-05T15:56:24Z</updated>

		<summary type="html">&lt;p&gt;Admin: Created page with &amp;quot;'''Problem'''&amp;lt;br&amp;gt; The client sends SIP re-INVITEs over UDP that exceed the standard MTU (e.g. 1529 bytes &amp;amp;gt; 1500 bytes). The re-INVITE is fragmented at the IP layer. On your side, re-INVITEs do not appear in traces; the client receives no response, and the call ends. Initial INVITE is within MTU and works; only the larger re-INVITE is affected.  &amp;lt;br&amp;gt; '''Root cause'''&amp;lt;br&amp;gt; Fragmented UDP packets are dropped by your NAT/firewall (or possibly by the server interface). Only...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Problem'''&amp;lt;br&amp;gt;&lt;br /&gt;
The client sends SIP re-INVITEs over UDP that exceed the standard MTU (e.g. 1529 bytes &amp;amp;gt; 1500 bytes). The re-INVITE is fragmented at the IP layer. On your side, re-INVITEs do not appear in traces; the client receives no response, and the call ends. Initial INVITE is within MTU and works; only the larger re-INVITE is affected.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Root cause'''&amp;lt;br&amp;gt;&lt;br /&gt;
Fragmented UDP packets are dropped by your NAT/firewall (or possibly by the server interface). Only the first fragment or no fragments are delivered, so the proxy (M4) never sees the full re-INVITE and does not respond.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
== Solution ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''1. Review network equipment'''&amp;lt;br&amp;gt;&lt;br /&gt;
Check NAT and firewall settings for handling of fragmented UDP packets. Allow or correctly reassemble fragmented UDP so that re-INVITEs reach the M4 server. If you cannot change how fragmented UDP is handled, use the TCP option below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''2. Use TCP for SIP (workaround)'''&amp;lt;br&amp;gt;&lt;br /&gt;
If fragmented UDP cannot be fixed on the network side, use TCP for SIP instead of UDP. TCP may be handled differently by your NAT/firewall.&lt;br /&gt;
&lt;br /&gt;
* On M4: enable TCP for SIP in the Operator Panel (OP): '''Advanced''' (or advanced section) → enable TCP for SIP. Verify the exact menu label in the application.&lt;br /&gt;
* On the client: configure the SIP stack to send signaling over TCP to M4 (same destination IP/port, TCP instead of UDP).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''3. Verify with tests'''&amp;lt;br&amp;gt;&lt;br /&gt;
To confirm that oversized UDP is fragmented and that fragments are dropped on your side, use the following from a client machine and capture on the server.&lt;br /&gt;
&lt;br /&gt;
* From the client (replace &amp;lt;code&amp;gt;xx.xx.xx.xx&amp;lt;/code&amp;gt; with the M4/server IP, use a port that nothing listens on, e.g. 1234):&amp;lt;br&amp;gt;&lt;br /&gt;
** Non-fragmented (payload 1472 + 28 = 1500 bytes, within MTU): &amp;lt;code&amp;gt;hping3 -p 1234 -c 3 --udp -d 1472 xx.xx.xx.xx&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
** Fragmented (payload 1473 + 28 = 1501 bytes, over MTU): &amp;lt;code&amp;gt;hping3 -p 1234 -c 3 --udp -d 1473 xx.xx.xx.xx&amp;lt;/code&amp;gt;&lt;br /&gt;
* Interpretation: if UDP is delivered, the host will respond with ICMP “port unreachable,” and you will see 0% packet loss. If only the 1472-byte test shows 0% loss and the 1473-byte test shows loss, fragmented UDP is being dropped.&lt;br /&gt;
* On the server, to see what actually arrives (replace &amp;lt;code&amp;gt;yy.yy.yy.yy&amp;lt;/code&amp;gt; with the client IP): &amp;lt;code&amp;gt;tcpdump -i any -nn 'host yy.yy.yy.yy and not tcp'&amp;lt;/code&amp;gt;. The &amp;lt;code&amp;gt;not tcp&amp;lt;/code&amp;gt; filter prevents your SSH session from being captured. Compare what you see when sending 1472 vs 1473 bytes from the client.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Related'''&amp;lt;br&amp;gt;&lt;br /&gt;
If the initial INVITE is also too large (e.g., many codecs in SDP), reducing the SDP size (e.g., only needed codecs) can keep packets under MTU; see [[MOR_does_not_send_Contact_header]]. For NAT and port forwarding in general, see [[M4_under_NAT]].&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=Problems/Troubleshooting&amp;diff=31410</id>
		<title>Problems/Troubleshooting</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=Problems/Troubleshooting&amp;diff=31410"/>
		<updated>2026-03-05T15:53:05Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* Asterisk */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Problems/Troubleshooting==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:warning.png|50px]]&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;'''[[I HAVE A PROBLEM]]!!!'''&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;[[Image:warning.png|50px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
===Asterisk===&lt;br /&gt;
&lt;br /&gt;
* [[Cannot Connect From Certain IP]]&lt;br /&gt;
* [[Re-INVITE UDP fragmentation]]&lt;br /&gt;
* [[How to get crash info from core file with GDB]]&lt;br /&gt;
* [[How to resolve long PDD]]&lt;br /&gt;
* [[Scheduling destruction of SIP dialog]]&lt;br /&gt;
* [[Correct auth, but based on stale nonce received from]]&lt;br /&gt;
* [[IAX2 Call rejected, CallToken Support required]]&lt;br /&gt;
* [[sip show peers does not show devices]]&lt;br /&gt;
* [[DTMF problems]]&lt;br /&gt;
* [[Call hangs after 30 seconds]]&lt;br /&gt;
* [[Call hangs after 30 minutes]]&lt;br /&gt;
* [[Troubleshooting RINGING]]&lt;br /&gt;
* [[chan_sip.c:1786 __sip_xmit: sip_xmit of 0x81cbc78]]&lt;br /&gt;
* [[Wrong time in voice mail messages]]&lt;br /&gt;
* [[Failed to write frame]]&lt;br /&gt;
* [[Call failed]]&lt;br /&gt;
* [[rtcp halted Invalid argument]]&lt;br /&gt;
* [[no samples for g729tolin]]&lt;br /&gt;
* [[Asterisk can't connect to MySQL database]]&lt;br /&gt;
* [[Out of idle IAX2 threads]]&lt;br /&gt;
* [[Asterisk displays wrong time]]&lt;br /&gt;
* [[SIP Error Codes]]&lt;br /&gt;
* [[Call rejected by IP: No authority found]]&lt;br /&gt;
* [[Unable to forward voice frame]]&lt;br /&gt;
* [[CallerID not passed]]&lt;br /&gt;
* [[DID is not working]]&lt;br /&gt;
* [[Calls are not recorded]]&lt;br /&gt;
* [[Fax is not received]]&lt;br /&gt;
* [[200 MOR can't determine who is calling | MOR can't determine who is calling]]&lt;br /&gt;
* [[Retrieved 0 adv.rates, max adv.rate: 0.000000, total event price: 0.000000]]&lt;br /&gt;
* [[No reply to our critical packet]]&lt;br /&gt;
* [[One-way audio or not audio at all]]&lt;br /&gt;
** [[One way audio problems]]&lt;br /&gt;
* [[Voicemail]]&lt;br /&gt;
** [[No sound on Voicemail or Playback]]&lt;br /&gt;
** [[Voicemail does not work]]&lt;br /&gt;
* [[Dropping extra frame of G.729 since we already have a VAD frame at the end]]&lt;br /&gt;
* [[Comfort noise support incomplete in Asterisk (RFC 3389)]]&lt;br /&gt;
* [[mysql_reconnect: mor: Unknown connection error: (2006) MySQL server has gone away]]&lt;br /&gt;
* [[MOR Call dropped upon connection]]&lt;br /&gt;
* [[Starting asterisk: Cannot find your TTY]]&lt;br /&gt;
* [[False ANSWER| False Answer - False Ring]]&lt;br /&gt;
* [[Unable to allocate RTCP socket: Too many open files in system]]&lt;br /&gt;
* [[Echo]]&lt;br /&gt;
* [[Asterisk stops working with Internet loss]]&lt;br /&gt;
* [[Asterisk ended with exit status 1 Asterisk died with code 1]]&lt;br /&gt;
* [[Unknown signalling method 'pri_cpe']]&lt;br /&gt;
* [[ERROR: Could not open H.323 listener port on 1720]]&lt;br /&gt;
* [[sip_poke_noanswer: Peer 'XXX' is now UNREACHABLE!]]&lt;br /&gt;
* [[Unknown RTP codec 127 received]]&lt;br /&gt;
* [[determine_firstline_parts: Bad request protocol Packet]]&lt;br /&gt;
* [[Maximum retries exceeded on transmission]]&lt;br /&gt;
* [[RTCP Read too short]]&lt;br /&gt;
* [[Peer is not dynamic]]&lt;br /&gt;
* [[AMI Connection]]&lt;br /&gt;
* [[H323 problems]]&lt;br /&gt;
* '''Devices'''&lt;br /&gt;
** [[I cannot register Device]]&lt;br /&gt;
*** [[Registration from 'SOME DEVICE' failed for 'IP' - Not a local domain]]&lt;br /&gt;
*** [[Unable to find key 'XXX' in family 'SIP/Registry']]&lt;br /&gt;
*** [[Registration from 'sip:XXX@23.45.67.89' failed for '34.56.67.89' - No matching peer found]]&lt;br /&gt;
*** [[Peer is trying to register, but not configured as host=dynamic]]&lt;br /&gt;
** [[Device can't dial out]]&lt;br /&gt;
*** [[No path to translate from XXX to YYY]]&lt;br /&gt;
*** [[Call rejected by IP: No such context/extension]]&lt;br /&gt;
*** [[mor_authorize: Too low balance for more simultaneus calls!!!]]&lt;br /&gt;
** [[Device can't be reached]]&lt;br /&gt;
*** [[Unable to create channel of type 'XXX' (cause 3 - No route to destination)]]&lt;br /&gt;
** [[Device is not receiving video]]&lt;br /&gt;
** [[Device in Callshop can dial when not LOGGED IN]]&lt;br /&gt;
** [[Device ring non standard]]&lt;br /&gt;
* '''Zaptel'''&lt;br /&gt;
** [[Zaptel YELLOW alarm]]&lt;br /&gt;
** [[Unable to open master device '/dev/zap/ctl']]&lt;br /&gt;
* [[Cant dial to *9901]]&lt;br /&gt;
* [[Remote host can't match request NOTIFY]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== System ===&lt;br /&gt;
* [[Balance troubleshooting]]&lt;br /&gt;
* [[System sends email every hour on 1st day of the month]]&lt;br /&gt;
* [[How to forward port using Putty]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GUI===&lt;br /&gt;
* [[How correctly extract tar.gz file?]]&lt;br /&gt;
* [[How to remove calling cards (ccshop) shop from GUI]]&lt;br /&gt;
* [[System uses too much memory]]&lt;br /&gt;
* [[Can't open MOR GUI]]&lt;br /&gt;
* [[Graphs does not appear]]&lt;br /&gt;
* [[Can't open phpMyAdmin]]&lt;br /&gt;
* [[Can't send email]]&lt;br /&gt;
* [[Can't initiate web callback]]&lt;br /&gt;
* [[Can't setup callback]]&lt;br /&gt;
* [[Vouchers are not accepted]]&lt;br /&gt;
* [[Why_MOR_does_not_allow_to_delete_users | Cannot delete device/user]]&lt;br /&gt;
* [[lib/transaction/simple.rb:46: warning: already initialized constant Messages]]&lt;br /&gt;
* [[We're sorry, but something went wrong]]&lt;br /&gt;
* [[GUI Error - Errno::ENETUNREACH]]&lt;br /&gt;
* [[GUI Error - SystemExit]]&lt;br /&gt;
* [[GUI Error - Sender address rejected]]&lt;br /&gt;
* [[GUI Error - Email Username and Password not accepted]]&lt;br /&gt;
* [[GUI Error - Email SMTP server timeout]]&lt;br /&gt;
* [[GUI Error - Message refused]]&lt;br /&gt;
* [[GUI Error - Email SMTP]]&lt;br /&gt;
* [[GUI Error - Ruby Gems]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===MySQL===&lt;br /&gt;
&lt;br /&gt;
* [[How to repair MySQL table]]&lt;br /&gt;
* [[Incorrect key file for table '/tmp/#sql_xxxx.MYI'; try to repair it ]]&lt;br /&gt;
* [[Data truncated for column]]&lt;br /&gt;
* [[DB Tips]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Installation===&lt;br /&gt;
&lt;br /&gt;
* [[rails: command not found]]&lt;br /&gt;
* [[yaml.rb:133: BUG Segmentation fault]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Other ==&lt;br /&gt;
* [[OpenVPN]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=Problems/Troubleshooting&amp;diff=31409</id>
		<title>Problems/Troubleshooting</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=Problems/Troubleshooting&amp;diff=31409"/>
		<updated>2026-03-05T15:52:44Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* Asterisk */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Problems/Troubleshooting==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:warning.png|50px]]&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;'''[[I HAVE A PROBLEM]]!!!'''&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;[[Image:warning.png|50px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
===Asterisk===&lt;br /&gt;
&lt;br /&gt;
* [[Cannot Connect From Certain IP]]&lt;br /&gt;
* [[How to get crash info from core file with GDB]]&lt;br /&gt;
* [[How to resolve long PDD]]&lt;br /&gt;
* [[Scheduling destruction of SIP dialog]]&lt;br /&gt;
* [[Correct auth, but based on stale nonce received from]]&lt;br /&gt;
* [[IAX2 Call rejected, CallToken Support required]]&lt;br /&gt;
* [[sip show peers does not show devices]]&lt;br /&gt;
* [[DTMF problems]]&lt;br /&gt;
* [[Call hangs after 30 seconds]]&lt;br /&gt;
* [[Call hangs after 30 minutes]]&lt;br /&gt;
* [[Troubleshooting RINGING]]&lt;br /&gt;
* [[chan_sip.c:1786 __sip_xmit: sip_xmit of 0x81cbc78]]&lt;br /&gt;
* [[Wrong time in voice mail messages]]&lt;br /&gt;
* [[Failed to write frame]]&lt;br /&gt;
* [[Call failed]]&lt;br /&gt;
* [[rtcp halted Invalid argument]]&lt;br /&gt;
* [[no samples for g729tolin]]&lt;br /&gt;
* [[Asterisk can't connect to MySQL database]]&lt;br /&gt;
* [[Out of idle IAX2 threads]]&lt;br /&gt;
* [[Asterisk displays wrong time]]&lt;br /&gt;
* [[SIP Error Codes]]&lt;br /&gt;
* [[Call rejected by IP: No authority found]]&lt;br /&gt;
* [[Unable to forward voice frame]]&lt;br /&gt;
* [[CallerID not passed]]&lt;br /&gt;
* [[DID is not working]]&lt;br /&gt;
* [[Calls are not recorded]]&lt;br /&gt;
* [[Fax is not received]]&lt;br /&gt;
* [[200 MOR can't determine who is calling | MOR can't determine who is calling]]&lt;br /&gt;
* [[Retrieved 0 adv.rates, max adv.rate: 0.000000, total event price: 0.000000]]&lt;br /&gt;
* [[No reply to our critical packet]]&lt;br /&gt;
* [[One-way audio or not audio at all]]&lt;br /&gt;
** [[One way audio problems]]&lt;br /&gt;
* [[Voicemail]]&lt;br /&gt;
** [[No sound on Voicemail or Playback]]&lt;br /&gt;
** [[Voicemail does not work]]&lt;br /&gt;
* [[Dropping extra frame of G.729 since we already have a VAD frame at the end]]&lt;br /&gt;
* [[Comfort noise support incomplete in Asterisk (RFC 3389)]]&lt;br /&gt;
* [[mysql_reconnect: mor: Unknown connection error: (2006) MySQL server has gone away]]&lt;br /&gt;
* [[MOR Call dropped upon connection]]&lt;br /&gt;
* [[Starting asterisk: Cannot find your TTY]]&lt;br /&gt;
* [[False ANSWER| False Answer - False Ring]]&lt;br /&gt;
* [[Unable to allocate RTCP socket: Too many open files in system]]&lt;br /&gt;
* [[Echo]]&lt;br /&gt;
* [[Asterisk stops working with Internet loss]]&lt;br /&gt;
* [[Asterisk ended with exit status 1 Asterisk died with code 1]]&lt;br /&gt;
* [[Unknown signalling method 'pri_cpe']]&lt;br /&gt;
* [[ERROR: Could not open H.323 listener port on 1720]]&lt;br /&gt;
* [[sip_poke_noanswer: Peer 'XXX' is now UNREACHABLE!]]&lt;br /&gt;
* [[Unknown RTP codec 127 received]]&lt;br /&gt;
* [[determine_firstline_parts: Bad request protocol Packet]]&lt;br /&gt;
* [[Maximum retries exceeded on transmission]]&lt;br /&gt;
* [[RTCP Read too short]]&lt;br /&gt;
* [[Peer is not dynamic]]&lt;br /&gt;
* [[AMI Connection]]&lt;br /&gt;
* [[H323 problems]]&lt;br /&gt;
* '''Devices'''&lt;br /&gt;
** [[I cannot register Device]]&lt;br /&gt;
*** [[Registration from 'SOME DEVICE' failed for 'IP' - Not a local domain]]&lt;br /&gt;
*** [[Unable to find key 'XXX' in family 'SIP/Registry']]&lt;br /&gt;
*** [[Registration from 'sip:XXX@23.45.67.89' failed for '34.56.67.89' - No matching peer found]]&lt;br /&gt;
*** [[Peer is trying to register, but not configured as host=dynamic]]&lt;br /&gt;
** [[Device can't dial out]]&lt;br /&gt;
*** [[No path to translate from XXX to YYY]]&lt;br /&gt;
*** [[Call rejected by IP: No such context/extension]]&lt;br /&gt;
*** [[mor_authorize: Too low balance for more simultaneus calls!!!]]&lt;br /&gt;
** [[Device can't be reached]]&lt;br /&gt;
*** [[Unable to create channel of type 'XXX' (cause 3 - No route to destination)]]&lt;br /&gt;
** [[Device is not receiving video]]&lt;br /&gt;
** [[Device in Callshop can dial when not LOGGED IN]]&lt;br /&gt;
** [[Device ring non standard]]&lt;br /&gt;
* '''Zaptel'''&lt;br /&gt;
** [[Zaptel YELLOW alarm]]&lt;br /&gt;
** [[Unable to open master device '/dev/zap/ctl']]&lt;br /&gt;
* [[Cant dial to *9901]]&lt;br /&gt;
* [[Remote host can't match request NOTIFY]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== System ===&lt;br /&gt;
* [[Balance troubleshooting]]&lt;br /&gt;
* [[System sends email every hour on 1st day of the month]]&lt;br /&gt;
* [[How to forward port using Putty]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===GUI===&lt;br /&gt;
* [[How correctly extract tar.gz file?]]&lt;br /&gt;
* [[How to remove calling cards (ccshop) shop from GUI]]&lt;br /&gt;
* [[System uses too much memory]]&lt;br /&gt;
* [[Can't open MOR GUI]]&lt;br /&gt;
* [[Graphs does not appear]]&lt;br /&gt;
* [[Can't open phpMyAdmin]]&lt;br /&gt;
* [[Can't send email]]&lt;br /&gt;
* [[Can't initiate web callback]]&lt;br /&gt;
* [[Can't setup callback]]&lt;br /&gt;
* [[Vouchers are not accepted]]&lt;br /&gt;
* [[Why_MOR_does_not_allow_to_delete_users | Cannot delete device/user]]&lt;br /&gt;
* [[lib/transaction/simple.rb:46: warning: already initialized constant Messages]]&lt;br /&gt;
* [[We're sorry, but something went wrong]]&lt;br /&gt;
* [[GUI Error - Errno::ENETUNREACH]]&lt;br /&gt;
* [[GUI Error - SystemExit]]&lt;br /&gt;
* [[GUI Error - Sender address rejected]]&lt;br /&gt;
* [[GUI Error - Email Username and Password not accepted]]&lt;br /&gt;
* [[GUI Error - Email SMTP server timeout]]&lt;br /&gt;
* [[GUI Error - Message refused]]&lt;br /&gt;
* [[GUI Error - Email SMTP]]&lt;br /&gt;
* [[GUI Error - Ruby Gems]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===MySQL===&lt;br /&gt;
&lt;br /&gt;
* [[How to repair MySQL table]]&lt;br /&gt;
* [[Incorrect key file for table '/tmp/#sql_xxxx.MYI'; try to repair it ]]&lt;br /&gt;
* [[Data truncated for column]]&lt;br /&gt;
* [[DB Tips]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Installation===&lt;br /&gt;
&lt;br /&gt;
* [[rails: command not found]]&lt;br /&gt;
* [[yaml.rb:133: BUG Segmentation fault]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Other ==&lt;br /&gt;
* [[OpenVPN]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=M4_Source_Transformation&amp;diff=31408</id>
		<title>M4 Source Transformation</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=M4_Source_Transformation&amp;diff=31408"/>
		<updated>2026-03-04T19:25:34Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* See also */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Source Transformation rules=&lt;br /&gt;
&lt;br /&gt;
Source Transformation rules are used to manipulate the Source (CallerID) number (cut prefix, add prefix). Only the Number part of CallerID will be changed, the Name part will not be changed. Rules can be set in [[M4 Termination Points | Termination Points]] or [[M4 Origination Points | Origination Points]] Source Transformation input field. There are 3 different Source Transformation rules:&lt;br /&gt;
&lt;br /&gt;
'''1. Add prefix'''&lt;br /&gt;
&lt;br /&gt;
To add something to every number, just enter what to add.&lt;br /&gt;
&lt;br /&gt;
'''2. Cut prefix'''&lt;br /&gt;
&lt;br /&gt;
To cut something from a number, write - (minus) character and then what to cut. For example, -00 will cut 00 from the beginning of the number (only if the number starts with 00).&lt;br /&gt;
&lt;br /&gt;
'''3. Replace prefix'''&lt;br /&gt;
&lt;br /&gt;
To cut something from the number and add something else (replace), write - (minus) character followed by what to cut, then + (plus) character and what to add. For example, -00+8 will remove the leading 00 and add the digit 8 in front (00 will be replaced by 8).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Multiple rules=&lt;br /&gt;
&lt;br /&gt;
It is possible to define multiple Source Transformation rules in a single line. It is done by separating rules with the | character:&lt;br /&gt;
&lt;br /&gt;
-A+B|-C+D|-X|Z&lt;br /&gt;
&lt;br /&gt;
Rules are checked in the order they are written, and the first matching rule will be applied. If one rule is applied, then other rules will be skipped. This means that some rules do not make sense; for example, the 00|-6+370 rule will always add 00 to the front of the number, and the second rule will be skipped.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The number of rules is limited only by the length of the input field (255 characters).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Examples=&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; &lt;br /&gt;
| '''Incoming Source Number''' || '''Source Transformation''' || '''Outgoing Source number''' || '''Comment'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| +86123456789 || -\+ || 86123456789 || cut + in front of number&lt;br /&gt;
|-&lt;br /&gt;
| 86123456789 || 00 || 0086123456789 || simple rule just adds 00 in front of number&lt;br /&gt;
|-&lt;br /&gt;
| 003706123456789 || -00 || 3706123456789 || if the number starts with digits 00, then cut them&lt;br /&gt;
|-&lt;br /&gt;
| 003706123456789 or +3706123456789 || &amp;lt;nowiki&amp;gt;-\+|-00&amp;lt;/nowiki&amp;gt; || 3706123456789 || cut + or 00 in front of number&lt;br /&gt;
|-&lt;br /&gt;
| 86123456789 || -8+370 || 3706123456789 || cut number 8 and add 370. If the number does not start with 8, then nothing will be added&lt;br /&gt;
|-&lt;br /&gt;
| 03706123456789 || &amp;lt;nowiki&amp;gt;-00+370|-0&amp;lt;/nowiki&amp;gt; || 3706123456789 || Source Transformation contains multiple rules, but the first rule is skipped because the number starts with 0 and not 00. The second rule is applied, and 0 is cut from the number &lt;br /&gt;
|-&lt;br /&gt;
| 3706123456789 || &amp;lt;nowiki&amp;gt;-00+370|-0|+&amp;lt;/nowiki&amp;gt;  || +3706123456789 || Source Transformation contains multiple rules, but the first and second rules are skipped. The last rule simply adds + to the number&lt;br /&gt;
|-&lt;br /&gt;
| 86123456789 || &amp;lt;nowiki&amp;gt;-8+370|00&amp;lt;/nowiki&amp;gt; || 3706123456789 || Source Transformation contains multiple rules, but the first rule is applied, and other rules are skipped&lt;br /&gt;
|-&lt;br /&gt;
| 86123456789 || &amp;lt;nowiki&amp;gt;-8+\+370&amp;lt;/nowiki&amp;gt; || +3706123456789 || if the number starts with the digit 8, then cut it and add +370. Note that + is escaped by using the \ character&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
== Remove + from incoming CLI/CallerID/Source Number (client sends CLI with + in front) ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''What this does'''&amp;lt;br&amp;gt;&lt;br /&gt;
When a client (connection/trunk) sends Caller ID (CLI) with a leading &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; (e.g. &amp;lt;code&amp;gt;+37061234567&amp;lt;/code&amp;gt;), you can strip that &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; in M4 so the system sees and uses the number without the prefix (e.g. &amp;lt;code&amp;gt;37061234567&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''How to do it in M4'''&amp;lt;br&amp;gt;&lt;br /&gt;
Use '''Source Transformation''' for the relevant connection point (the client that sends the CLI with &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt;). &lt;br /&gt;
&lt;br /&gt;
In the '''Transformation Rule:''' field ('''Old format''' should be selected) set &amp;lt;code&amp;gt;-\+&amp;lt;/code&amp;gt; (to remove from + the start of the CLI).&lt;br /&gt;
&lt;br /&gt;
[[File:M4 plus from cli.png]]&lt;br /&gt;
&lt;br /&gt;
After saving, incoming CLI from that client will have the leading &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; removed before further processing.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Note''': If you use both Cut and Add, the value in Add is inserted after the cut. To only remove the &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt;, use Cut: &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; and Add: empty.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Regexp Rules =&lt;br /&gt;
&lt;br /&gt;
Number transformation can also be done using Regexp. More information: [[M4 Regexp Examples]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=See also=&lt;br /&gt;
&lt;br /&gt;
* [[M4 Termination Points]]&lt;br /&gt;
* [[M4 Origination Points]]&lt;br /&gt;
* [[M4 Destination Transformation]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=M4_Source_Transformation&amp;diff=31407</id>
		<title>M4 Source Transformation</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=M4_Source_Transformation&amp;diff=31407"/>
		<updated>2026-03-04T19:23:49Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* Remove + from incoming CLI/CallerID/Source Number (client sends CLI with + in front) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Source Transformation rules=&lt;br /&gt;
&lt;br /&gt;
Source Transformation rules are used to manipulate the Source (CallerID) number (cut prefix, add prefix). Only the Number part of CallerID will be changed, the Name part will not be changed. Rules can be set in [[M4 Termination Points | Termination Points]] or [[M4 Origination Points | Origination Points]] Source Transformation input field. There are 3 different Source Transformation rules:&lt;br /&gt;
&lt;br /&gt;
'''1. Add prefix'''&lt;br /&gt;
&lt;br /&gt;
To add something to every number, just enter what to add.&lt;br /&gt;
&lt;br /&gt;
'''2. Cut prefix'''&lt;br /&gt;
&lt;br /&gt;
To cut something from a number, write - (minus) character and then what to cut. For example, -00 will cut 00 from the beginning of the number (only if the number starts with 00).&lt;br /&gt;
&lt;br /&gt;
'''3. Replace prefix'''&lt;br /&gt;
&lt;br /&gt;
To cut something from the number and add something else (replace), write - (minus) character followed by what to cut, then + (plus) character and what to add. For example, -00+8 will remove the leading 00 and add the digit 8 in front (00 will be replaced by 8).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Multiple rules=&lt;br /&gt;
&lt;br /&gt;
It is possible to define multiple Source Transformation rules in a single line. It is done by separating rules with the | character:&lt;br /&gt;
&lt;br /&gt;
-A+B|-C+D|-X|Z&lt;br /&gt;
&lt;br /&gt;
Rules are checked in the order they are written, and the first matching rule will be applied. If one rule is applied, then other rules will be skipped. This means that some rules do not make sense; for example, the 00|-6+370 rule will always add 00 to the front of the number, and the second rule will be skipped.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The number of rules is limited only by the length of the input field (255 characters).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Examples=&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; &lt;br /&gt;
| '''Incoming Source Number''' || '''Source Transformation''' || '''Outgoing Source number''' || '''Comment'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| +86123456789 || -\+ || 86123456789 || cut + in front of number&lt;br /&gt;
|-&lt;br /&gt;
| 86123456789 || 00 || 0086123456789 || simple rule just adds 00 in front of number&lt;br /&gt;
|-&lt;br /&gt;
| 003706123456789 || -00 || 3706123456789 || if the number starts with digits 00, then cut them&lt;br /&gt;
|-&lt;br /&gt;
| 003706123456789 or +3706123456789 || &amp;lt;nowiki&amp;gt;-\+|-00&amp;lt;/nowiki&amp;gt; || 3706123456789 || cut + or 00 in front of number&lt;br /&gt;
|-&lt;br /&gt;
| 86123456789 || -8+370 || 3706123456789 || cut number 8 and add 370. If the number does not start with 8, then nothing will be added&lt;br /&gt;
|-&lt;br /&gt;
| 03706123456789 || &amp;lt;nowiki&amp;gt;-00+370|-0&amp;lt;/nowiki&amp;gt; || 3706123456789 || Source Transformation contains multiple rules, but the first rule is skipped because the number starts with 0 and not 00. The second rule is applied, and 0 is cut from the number &lt;br /&gt;
|-&lt;br /&gt;
| 3706123456789 || &amp;lt;nowiki&amp;gt;-00+370|-0|+&amp;lt;/nowiki&amp;gt;  || +3706123456789 || Source Transformation contains multiple rules, but the first and second rules are skipped. The last rule simply adds + to the number&lt;br /&gt;
|-&lt;br /&gt;
| 86123456789 || &amp;lt;nowiki&amp;gt;-8+370|00&amp;lt;/nowiki&amp;gt; || 3706123456789 || Source Transformation contains multiple rules, but the first rule is applied, and other rules are skipped&lt;br /&gt;
|-&lt;br /&gt;
| 86123456789 || &amp;lt;nowiki&amp;gt;-8+\+370&amp;lt;/nowiki&amp;gt; || +3706123456789 || if the number starts with the digit 8, then cut it and add +370. Note that + is escaped by using the \ character&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
== Remove + from incoming CLI/CallerID/Source Number (client sends CLI with + in front) ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''What this does'''&amp;lt;br&amp;gt;&lt;br /&gt;
When a client (connection/trunk) sends Caller ID (CLI) with a leading &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; (e.g. &amp;lt;code&amp;gt;+37061234567&amp;lt;/code&amp;gt;), you can strip that &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; in M4 so the system sees and uses the number without the prefix (e.g. &amp;lt;code&amp;gt;37061234567&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''How to do it in M4'''&amp;lt;br&amp;gt;&lt;br /&gt;
Use '''Source Transformation''' for the relevant connection point (the client that sends the CLI with &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt;). &lt;br /&gt;
&lt;br /&gt;
In the '''Transformation Rule:''' field ('''Old format''' should be selected) set &amp;lt;code&amp;gt;-\+&amp;lt;/code&amp;gt; (to remove from + the start of the CLI).&lt;br /&gt;
&lt;br /&gt;
[[File:M4 plus from cli.png]]&lt;br /&gt;
&lt;br /&gt;
After saving, incoming CLI from that client will have the leading &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; removed before further processing.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Note''': If you use both Cut and Add, the value in Add is inserted after the cut. To only remove the &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt;, use Cut: &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; and Add: empty.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Regexp Rules =&lt;br /&gt;
&lt;br /&gt;
Number transformation can also be done using Regexp. More information: [[M4 Regexp Examples]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=See also=&lt;br /&gt;
&lt;br /&gt;
* [[M4 Termination Points]]&lt;br /&gt;
* [[M4 Origination Points]]&lt;br /&gt;
* [[M4 Destination Transformation | Destination Transformation]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=File:M4_plus_from_cli.png&amp;diff=31406</id>
		<title>File:M4 plus from cli.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=File:M4_plus_from_cli.png&amp;diff=31406"/>
		<updated>2026-03-04T19:23:20Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=M4_Source_Transformation&amp;diff=31404</id>
		<title>M4 Source Transformation</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=M4_Source_Transformation&amp;diff=31404"/>
		<updated>2026-03-04T19:07:36Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* Remove + from incoming CLI/CallerID/Source Number (client sends CLI with + in front) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Source Transformation rules=&lt;br /&gt;
&lt;br /&gt;
Source Transformation rules are used to manipulate the Source (CallerID) number (cut prefix, add prefix). Only the Number part of CallerID will be changed, the Name part will not be changed. Rules can be set in [[M4 Termination Points | Termination Points]] or [[M4 Origination Points | Origination Points]] Source Transformation input field. There are 3 different Source Transformation rules:&lt;br /&gt;
&lt;br /&gt;
'''1. Add prefix'''&lt;br /&gt;
&lt;br /&gt;
To add something to every number, just enter what to add.&lt;br /&gt;
&lt;br /&gt;
'''2. Cut prefix'''&lt;br /&gt;
&lt;br /&gt;
To cut something from a number, write - (minus) character and then what to cut. For example, -00 will cut 00 from the beginning of the number (only if the number starts with 00).&lt;br /&gt;
&lt;br /&gt;
'''3. Replace prefix'''&lt;br /&gt;
&lt;br /&gt;
To cut something from the number and add something else (replace), write - (minus) character followed by what to cut, then + (plus) character and what to add. For example, -00+8 will remove the leading 00 and add the digit 8 in front (00 will be replaced by 8).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Multiple rules=&lt;br /&gt;
&lt;br /&gt;
It is possible to define multiple Source Transformation rules in a single line. It is done by separating rules with the | character:&lt;br /&gt;
&lt;br /&gt;
-A+B|-C+D|-X|Z&lt;br /&gt;
&lt;br /&gt;
Rules are checked in the order they are written, and the first matching rule will be applied. If one rule is applied, then other rules will be skipped. This means that some rules do not make sense; for example, the 00|-6+370 rule will always add 00 to the front of the number, and the second rule will be skipped.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The number of rules is limited only by the length of the input field (255 characters).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Examples=&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; &lt;br /&gt;
| '''Incoming Source Number''' || '''Source Transformation''' || '''Outgoing Source number''' || '''Comment'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| +86123456789 || -\+ || 86123456789 || cut + in front of number&lt;br /&gt;
|-&lt;br /&gt;
| 86123456789 || 00 || 0086123456789 || simple rule just adds 00 in front of number&lt;br /&gt;
|-&lt;br /&gt;
| 003706123456789 || -00 || 3706123456789 || if the number starts with digits 00, then cut them&lt;br /&gt;
|-&lt;br /&gt;
| 003706123456789 or +3706123456789 || &amp;lt;nowiki&amp;gt;-\+|-00&amp;lt;/nowiki&amp;gt; || 3706123456789 || cut + or 00 in front of number&lt;br /&gt;
|-&lt;br /&gt;
| 86123456789 || -8+370 || 3706123456789 || cut number 8 and add 370. If the number does not start with 8, then nothing will be added&lt;br /&gt;
|-&lt;br /&gt;
| 03706123456789 || &amp;lt;nowiki&amp;gt;-00+370|-0&amp;lt;/nowiki&amp;gt; || 3706123456789 || Source Transformation contains multiple rules, but the first rule is skipped because the number starts with 0 and not 00. The second rule is applied, and 0 is cut from the number &lt;br /&gt;
|-&lt;br /&gt;
| 3706123456789 || &amp;lt;nowiki&amp;gt;-00+370|-0|+&amp;lt;/nowiki&amp;gt;  || +3706123456789 || Source Transformation contains multiple rules, but the first and second rules are skipped. The last rule simply adds + to the number&lt;br /&gt;
|-&lt;br /&gt;
| 86123456789 || &amp;lt;nowiki&amp;gt;-8+370|00&amp;lt;/nowiki&amp;gt; || 3706123456789 || Source Transformation contains multiple rules, but the first rule is applied, and other rules are skipped&lt;br /&gt;
|-&lt;br /&gt;
| 86123456789 || &amp;lt;nowiki&amp;gt;-8+\+370&amp;lt;/nowiki&amp;gt; || +3706123456789 || if the number starts with the digit 8, then cut it and add +370. Note that + is escaped by using the \ character&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
== Remove + from incoming CLI/CallerID/Source Number (client sends CLI with + in front) ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''What this does'''&amp;lt;br&amp;gt;&lt;br /&gt;
When a client (connection/trunk) sends Caller ID (CLI) with a leading &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; (e.g. &amp;lt;code&amp;gt;+37061234567&amp;lt;/code&amp;gt;), you can strip that &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; in M4 so the system sees and uses the number without the prefix (e.g. &amp;lt;code&amp;gt;37061234567&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''How to do it in M4'''&amp;lt;br&amp;gt;&lt;br /&gt;
Use '''Source Transformation''' for the relevant connection point (the client that sends the CLI with &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt;). In the rule that applies to the incoming source (CallerID/CLI):&lt;br /&gt;
&lt;br /&gt;
# Set &amp;lt;code&amp;gt;-\+&amp;lt;/code&amp;gt; (to remove from + the start of the CLI).&lt;br /&gt;
&lt;br /&gt;
After saving, incoming CLI from that client will have the leading &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; removed before further processing (e.g., CLI groups, routing, or display).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Note''': If you use both Cut and Add, the value in Add is inserted after the cut. To only remove the &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt;, use Cut: &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; and Add: empty.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Regexp Rules =&lt;br /&gt;
&lt;br /&gt;
Number transformation can also be done using Regexp. More information: [[M4 Regexp Examples]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=See also=&lt;br /&gt;
&lt;br /&gt;
* [[M4 Termination Points]]&lt;br /&gt;
* [[M4 Origination Points]]&lt;br /&gt;
* [[M4 Destination Transformation | Destination Transformation]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=M4_Source_Transformation&amp;diff=31403</id>
		<title>M4 Source Transformation</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=M4_Source_Transformation&amp;diff=31403"/>
		<updated>2026-03-04T19:02:05Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Source Transformation rules=&lt;br /&gt;
&lt;br /&gt;
Source Transformation rules are used to manipulate the Source (CallerID) number (cut prefix, add prefix). Only the Number part of CallerID will be changed, the Name part will not be changed. Rules can be set in [[M4 Termination Points | Termination Points]] or [[M4 Origination Points | Origination Points]] Source Transformation input field. There are 3 different Source Transformation rules:&lt;br /&gt;
&lt;br /&gt;
'''1. Add prefix'''&lt;br /&gt;
&lt;br /&gt;
To add something to every number, just enter what to add.&lt;br /&gt;
&lt;br /&gt;
'''2. Cut prefix'''&lt;br /&gt;
&lt;br /&gt;
To cut something from a number, write - (minus) character and then what to cut. For example, -00 will cut 00 from the beginning of the number (only if the number starts with 00).&lt;br /&gt;
&lt;br /&gt;
'''3. Replace prefix'''&lt;br /&gt;
&lt;br /&gt;
To cut something from the number and add something else (replace), write - (minus) character followed by what to cut, then + (plus) character and what to add. For example, -00+8 will remove the leading 00 and add the digit 8 in front (00 will be replaced by 8).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Multiple rules=&lt;br /&gt;
&lt;br /&gt;
It is possible to define multiple Source Transformation rules in a single line. It is done by separating rules with the | character:&lt;br /&gt;
&lt;br /&gt;
-A+B|-C+D|-X|Z&lt;br /&gt;
&lt;br /&gt;
Rules are checked in the order they are written, and the first matching rule will be applied. If one rule is applied, then other rules will be skipped. This means that some rules do not make sense; for example, the 00|-6+370 rule will always add 00 to the front of the number, and the second rule will be skipped.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The number of rules is limited only by the length of the input field (255 characters).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Examples=&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; &lt;br /&gt;
| '''Incoming Source Number''' || '''Source Transformation''' || '''Outgoing Source number''' || '''Comment'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| +86123456789 || -\+ || 86123456789 || cut + in front of number&lt;br /&gt;
|-&lt;br /&gt;
| 86123456789 || 00 || 0086123456789 || simple rule just adds 00 in front of number&lt;br /&gt;
|-&lt;br /&gt;
| 003706123456789 || -00 || 3706123456789 || if the number starts with digits 00, then cut them&lt;br /&gt;
|-&lt;br /&gt;
| 003706123456789 or +3706123456789 || &amp;lt;nowiki&amp;gt;-\+|-00&amp;lt;/nowiki&amp;gt; || 3706123456789 || cut + or 00 in front of number&lt;br /&gt;
|-&lt;br /&gt;
| 86123456789 || -8+370 || 3706123456789 || cut number 8 and add 370. If the number does not start with 8, then nothing will be added&lt;br /&gt;
|-&lt;br /&gt;
| 03706123456789 || &amp;lt;nowiki&amp;gt;-00+370|-0&amp;lt;/nowiki&amp;gt; || 3706123456789 || Source Transformation contains multiple rules, but the first rule is skipped because the number starts with 0 and not 00. The second rule is applied, and 0 is cut from the number &lt;br /&gt;
|-&lt;br /&gt;
| 3706123456789 || &amp;lt;nowiki&amp;gt;-00+370|-0|+&amp;lt;/nowiki&amp;gt;  || +3706123456789 || Source Transformation contains multiple rules, but the first and second rules are skipped. The last rule simply adds + to the number&lt;br /&gt;
|-&lt;br /&gt;
| 86123456789 || &amp;lt;nowiki&amp;gt;-8+370|00&amp;lt;/nowiki&amp;gt; || 3706123456789 || Source Transformation contains multiple rules, but the first rule is applied, and other rules are skipped&lt;br /&gt;
|-&lt;br /&gt;
| 86123456789 || &amp;lt;nowiki&amp;gt;-8+\+370&amp;lt;/nowiki&amp;gt; || +3706123456789 || if the number starts with the digit 8, then cut it and add +370. Note that + is escaped by using the \ character&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
== Remove + from incoming CLI/CallerID/Source Number (client sends CLI with + in front) ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''What this does'''&amp;lt;br&amp;gt;&lt;br /&gt;
When a client (connection/trunk) sends Caller ID (CLI) with a leading &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; (e.g. &amp;lt;code&amp;gt;+37061234567&amp;lt;/code&amp;gt;), you can strip that &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; in M4 so the system sees and uses the number without the prefix (e.g. &amp;lt;code&amp;gt;37061234567&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''How to do it in M4'''&amp;lt;br&amp;gt;&lt;br /&gt;
Use '''Source Transformation''' for the relevant connection point (the client that sends the CLI with &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt;). In the rule that applies to the incoming source (CallerID/CLI):&lt;br /&gt;
&lt;br /&gt;
# Set '''Cut''' to &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; (the character to remove from the start of the CLI).&lt;br /&gt;
# Leave '''Add''' empty so nothing is added after the cut.&lt;br /&gt;
&lt;br /&gt;
After saving, incoming CLI from that client will have the leading &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; removed before further processing (e.g. CLI groups, routing, or display).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Note''': If you use both Cut and Add, the value in Add is inserted after the cut. To only remove the &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt;, use Cut: &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; and Add: empty.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= Regexp Rules =&lt;br /&gt;
&lt;br /&gt;
Number transformation can also be done using Regexp. More information: [[M4 Regexp Examples]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=See also=&lt;br /&gt;
&lt;br /&gt;
* [[M4 Termination Points]]&lt;br /&gt;
* [[M4 Origination Points]]&lt;br /&gt;
* [[M4 Destination Transformation | Destination Transformation]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=M4_Source_Transformation&amp;diff=31402</id>
		<title>M4 Source Transformation</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=M4_Source_Transformation&amp;diff=31402"/>
		<updated>2026-03-04T19:01:48Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Source Transformation rules=&lt;br /&gt;
&lt;br /&gt;
Source Transformation rules are used to manipulate the Source (CallerID) number (cut prefix, add prefix). Only the Number part of CallerID will be changed, the Name part will not be changed. Rules can be set in [[M4 Termination Points | Termination Points]] or [[M4 Origination Points | Origination Points]] Source Transformation input field. There are 3 different Source Transformation rules:&lt;br /&gt;
&lt;br /&gt;
'''1. Add prefix'''&lt;br /&gt;
&lt;br /&gt;
To add something to every number, just enter what to add.&lt;br /&gt;
&lt;br /&gt;
'''2. Cut prefix'''&lt;br /&gt;
&lt;br /&gt;
To cut something from a number, write - (minus) character and then what to cut. For example, -00 will cut 00 from the beginning of the number (only if the number starts with 00).&lt;br /&gt;
&lt;br /&gt;
'''3. Replace prefix'''&lt;br /&gt;
&lt;br /&gt;
To cut something from the number and add something else (replace), write - (minus) character followed by what to cut, then + (plus) character and what to add. For example, -00+8 will remove the leading 00 and add the digit 8 in front (00 will be replaced by 8).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Multiple rules=&lt;br /&gt;
&lt;br /&gt;
It is possible to define multiple Source Transformation rules in a single line. It is done by separating rules with the | character:&lt;br /&gt;
&lt;br /&gt;
-A+B|-C+D|-X|Z&lt;br /&gt;
&lt;br /&gt;
Rules are checked in the order they are written, and the first matching rule will be applied. If one rule is applied, then other rules will be skipped. This means that some rules do not make sense; for example, the 00|-6+370 rule will always add 00 to the front of the number, and the second rule will be skipped.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The number of rules is limited only by the length of the input field (255 characters).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Examples=&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; &lt;br /&gt;
| '''Incoming Source Number''' || '''Source Transformation''' || '''Outgoing Source number''' || '''Comment'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| +86123456789 || -\+ || 86123456789 || cut + in front of number&lt;br /&gt;
|-&lt;br /&gt;
| 86123456789 || 00 || 0086123456789 || simple rule just adds 00 in front of number&lt;br /&gt;
|-&lt;br /&gt;
| 003706123456789 || -00 || 3706123456789 || if the number starts with digits 00, then cut them&lt;br /&gt;
|-&lt;br /&gt;
| 003706123456789 or +3706123456789 || &amp;lt;nowiki&amp;gt;-\+|-00&amp;lt;/nowiki&amp;gt; || 3706123456789 || cut + or 00 in front of number&lt;br /&gt;
|-&lt;br /&gt;
| 86123456789 || -8+370 || 3706123456789 || cut number 8 and add 370. If the number does not start with 8, then nothing will be added&lt;br /&gt;
|-&lt;br /&gt;
| 03706123456789 || &amp;lt;nowiki&amp;gt;-00+370|-0&amp;lt;/nowiki&amp;gt; || 3706123456789 || Source Transformation contains multiple rules, but the first rule is skipped because the number starts with 0 and not 00. The second rule is applied, and 0 is cut from the number &lt;br /&gt;
|-&lt;br /&gt;
| 3706123456789 || &amp;lt;nowiki&amp;gt;-00+370|-0|+&amp;lt;/nowiki&amp;gt;  || +3706123456789 || Source Transformation contains multiple rules, but the first and second rules are skipped. The last rule simply adds + to the number&lt;br /&gt;
|-&lt;br /&gt;
| 86123456789 || &amp;lt;nowiki&amp;gt;-8+370|00&amp;lt;/nowiki&amp;gt; || 3706123456789 || Source Transformation contains multiple rules, but the first rule is applied, and other rules are skipped&lt;br /&gt;
|-&lt;br /&gt;
| 86123456789 || &amp;lt;nowiki&amp;gt;-8+\+370&amp;lt;/nowiki&amp;gt; || +3706123456789 || if the number starts with the digit 8, then cut it and add +370. Note that + is escaped by using the \ character&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
== Remove + from incoming CLI/CallerID/Source Number (client sends CLI with + in front) ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''What this does'''&amp;lt;br&amp;gt;&lt;br /&gt;
When a client (connection/trunk) sends Caller ID (CLI) with a leading &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; (e.g. &amp;lt;code&amp;gt;+37061234567&amp;lt;/code&amp;gt;), you can strip that &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; in M4 so the system sees and uses the number without the prefix (e.g. &amp;lt;code&amp;gt;37061234567&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''How to do it in M4'''&amp;lt;br&amp;gt;&lt;br /&gt;
Use '''Source Transformation''' for the relevant connection point (the client that sends the CLI with &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt;). In the rule that applies to the incoming source (CallerID/CLI):&lt;br /&gt;
&lt;br /&gt;
# Set '''Cut''' to &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; (the character to remove from the start of the CLI).&lt;br /&gt;
# Leave '''Add''' empty so nothing is added after the cut.&lt;br /&gt;
&lt;br /&gt;
After saving, incoming CLI from that client will have the leading &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; removed before further processing (e.g. CLI groups, routing, or display).&lt;br /&gt;
&lt;br /&gt;
'''Note''': If you use both Cut and Add, the value in Add is inserted after the cut. To only remove the &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt;, use Cut: &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; and Add: empty.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= Regexp Rules =&lt;br /&gt;
&lt;br /&gt;
Number transformation can also be done using Regexp. More information: [[M4 Regexp Examples]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=See also=&lt;br /&gt;
&lt;br /&gt;
* [[M4 Termination Points]]&lt;br /&gt;
* [[M4 Origination Points]]&lt;br /&gt;
* [[M4 Destination Transformation | Destination Transformation]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=MOR_Manual&amp;diff=31401</id>
		<title>MOR Manual</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=MOR_Manual&amp;diff=31401"/>
		<updated>2026-03-04T11:58:41Z</updated>

		<summary type="html">&lt;p&gt;Admin: /*  Number Manipulation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;iframe width=&amp;quot;640&amp;quot; height=&amp;quot;360&amp;quot; src=&amp;quot;https://www.youtube.com/embed/R65ufpHOz_g&amp;quot; title=&amp;quot;YouTube video player&amp;quot; frameborder=&amp;quot;0&amp;quot; allow=&amp;quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture&amp;quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;mkmeta&amp;gt;Detailed instructions how to use MOR Class 5 Softswitch&amp;lt;/mkmeta&amp;gt;&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;MOR is a Class 5 Softswitch with Billing and Routing with extended functionality, increased stability, and professional support directly from the developers. It enables VoIP providers to offer various services.&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= Introduction =&lt;br /&gt;
* [[Introduction]] [[Image:flag_esp.jpg|alt=&amp;quot;flag&amp;quot;|link=|right|link=Introduction (es)]]&lt;br /&gt;
* [[Who is this product designed for]]&lt;br /&gt;
* [[MOR Functionality]]&lt;br /&gt;
* [[Supported Business Models]]&lt;br /&gt;
* [[MOR Admin Interface|Admin Interface]]&lt;br /&gt;
* [[How to make first call|How to make a first call]] [[Image:flag_rus.jpg|alt=&amp;quot;flag&amp;quot;|link=|right|link=How to make first call (ru)]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Concepts/Definitions =&lt;br /&gt;
* [[MOR Terminology]]&lt;br /&gt;
* [[Billing Concepts]] [[Image:flag_rus.jpg|right|alt=&amp;quot;flag&amp;quot;|link=|link=Billing Concepts (ru)]]&lt;br /&gt;
* [[Billing Logic]]&lt;br /&gt;
* [[Call explained]]&lt;br /&gt;
* [[E.164]]&lt;br /&gt;
* [[Rounding]]&lt;br /&gt;
* [[Multi-Tax system]]&lt;br /&gt;
* [[What is a PIN?]]&lt;br /&gt;
* [[ASR/ACD]]&lt;br /&gt;
* [[Margin and Markup]]&lt;br /&gt;
* [[What are callgroups and pickupgroups|What are callgroups and pickupgroups?]]&lt;br /&gt;
* [[Balance and Credit]]&lt;br /&gt;
* [[Local Calls]]&lt;br /&gt;
* [[Prepaid Logic]]&lt;br /&gt;
* [[Authentication]]&lt;br /&gt;
* [[Fax over VoIP]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Configuration =&lt;br /&gt;
* [[mor.conf]]&lt;br /&gt;
* [[Performance Suggestions]]&lt;br /&gt;
* [[Configuration from GUI]]&lt;br /&gt;
** [[reCAPTCHA]]&lt;br /&gt;
** [[Payments configuration]]&lt;br /&gt;
** [[Default device settings]]&lt;br /&gt;
** [[Default_user|Default user settings]]&lt;br /&gt;
** [[Accountant permissions]]&lt;br /&gt;
** [[Logo change]]&lt;br /&gt;
** [[Currencies]]&lt;br /&gt;
** [[Translations]]&lt;br /&gt;
** [[Global_date_format | Global date format]]&lt;br /&gt;
** [[Remove Manual link from admin GUI]]&lt;br /&gt;
* [[Voicemail]]&lt;br /&gt;
* [[Multi Server support]]&lt;br /&gt;
* [[MOR White-labeling|White-labeling]]&lt;br /&gt;
* Emails&lt;br /&gt;
** [[Configuration_from_GUI#Emails|Email settings]]&lt;br /&gt;
** [[Emails|Mass Emails]]&lt;br /&gt;
** [[Email variables]]&lt;br /&gt;
* [[WebRTC]]&lt;br /&gt;
* [[Time Zone list]]&lt;br /&gt;
* [[MOR SIP Header Transformations]]&lt;br /&gt;
* [[MOR STIR/SHAKEN]]&lt;br /&gt;
* [[PJSIP Codec negotiation]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= [[MOR Number Manipulation | Number Manipulation]] =&lt;br /&gt;
* [[MOR Localization | Localization]]&lt;br /&gt;
** [[MOR Location Groups | Location Groups]]&lt;br /&gt;
* [[MOR Device Rules | Device Rules]]&lt;br /&gt;
** [[MOR Device Rule Groups | Device Rule Groups]]&lt;br /&gt;
* [[MOR Provider Rules | Provider Rules]]&lt;br /&gt;
* [[DID handling by Localization]]&lt;br /&gt;
* [[MOR Number Manipulation Examples | Number Manipulation Examples]]&lt;br /&gt;
* [[Block wrong short numbers with Localization]]&lt;br /&gt;
* [[MOR - LCR/Tariff change based on call prefix]]&lt;br /&gt;
* [[Prefix finder]]&lt;br /&gt;
* [[MOR Prelocalization]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=[[Users]] =&lt;br /&gt;
* [[User Details]]&lt;br /&gt;
** [[Warning balance]]&lt;br /&gt;
** [[User Blocking]]&lt;br /&gt;
* [[Hide Users]]&lt;br /&gt;
* [[Why MOR does not allow to delete users|Why MOR does not allow users to be deleted]]&lt;br /&gt;
* [[How to create User and Device|How to create a User and Device]]&lt;br /&gt;
* [[MOR_forgot_user_password|How to reset lost GUI password]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= [[Devices]] =&lt;br /&gt;
* [[Device settings]]&lt;br /&gt;
** [[H323 Device settings]]&lt;br /&gt;
** [[Extension lines]]&lt;br /&gt;
** [[Ring several devices at same time]]&lt;br /&gt;
** [[How to create User and Device|How to create a User and Device]]&lt;br /&gt;
** [[Allowed Addresses]]&lt;br /&gt;
* [[Devices Bulk Create]]&lt;br /&gt;
* [[Trunks]]&lt;br /&gt;
* [[CLIs (Incoming CallerIDs)]]&lt;br /&gt;
** [[ANI/CLI ban system]]&lt;br /&gt;
* [[Duplicate call prevention]]&lt;br /&gt;
* [[Allow loss calls]]&lt;br /&gt;
* [[Device groups]]&lt;br /&gt;
* [[Call Flow]]&lt;br /&gt;
* [[Which codecs should I choose for devices|Which codecs should I choose for devices?]]&lt;br /&gt;
**[[Change_Audio/Video_Codecs_priority| Codecs priority]]&lt;br /&gt;
* [[Authentication|How to configure IP Authentication for Device]]&lt;br /&gt;
* [[Registration_Status|Device registration status]]&lt;br /&gt;
* [[MOR Device Rules]]&lt;br /&gt;
* [[Feature Codes]]&lt;br /&gt;
* [[Hide Device Password]]&lt;br /&gt;
* [[Disallow duplicate device usernames]]&lt;br /&gt;
* [[Disallow users to change their email]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= [[Providers]] =&lt;br /&gt;
&lt;br /&gt;
(also known as terminators, suppliers, vendors or trunks)&lt;br /&gt;
&lt;br /&gt;
* [[Terminators]]&lt;br /&gt;
* [[Provider with several IP|Provider with several IPs]]&lt;br /&gt;
* [[H323 Provider settings]]&lt;br /&gt;
* [[Provider with ANI]]&lt;br /&gt;
* [[Configure Provider which can make calls]]&lt;br /&gt;
* [[Configure Provider with dynamic IP]]&lt;br /&gt;
* [[Simultaneous call limitation]]&lt;br /&gt;
* [[NO ANSWER/BUSY interpretation for providers]]&lt;br /&gt;
* [[Provider_Deviations|Provider Deviations]]&lt;br /&gt;
* [[Provider AGI script]]&lt;br /&gt;
* Provider Configuration&lt;br /&gt;
** [[Net2phone configuration | Net2phone]]&lt;br /&gt;
** [[Broadvoice configuration | Broadvoice]]&lt;br /&gt;
** [[Eutelia]]&lt;br /&gt;
** [[IXC]]&lt;br /&gt;
** [[Configuring DIDWW | DIDWW]]&lt;br /&gt;
** [[Vitelity]]&lt;br /&gt;
** [[Vono]]&lt;br /&gt;
** [[How_to_add_Voicetrading_Provider|Voicetrading]]&lt;br /&gt;
** [[Portech GSM as Provider | Portech]]&lt;br /&gt;
** [[DID Logic]]&lt;br /&gt;
** [[Voxbeam]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= [[Tariffs]] =&lt;br /&gt;
* [[Directions and Destinations]]&lt;br /&gt;
** [[Destinations Groups]]&lt;br /&gt;
** [[Destination Groups Policy]]&lt;br /&gt;
** [[Block some Destination to User|Block a Destination to a User]]&lt;br /&gt;
** [[Export and bulk import of unassigned destinations]]&lt;br /&gt;
* [[Day setup]]&lt;br /&gt;
* [[Bulk change Tariffs for Users]]&lt;br /&gt;
* [[Wholesale Tariff | Wholesale]]&lt;br /&gt;
** [[Entering Rates for Wholesale Tariff]]&lt;br /&gt;
** [[Rate import from CSV]]&lt;br /&gt;
** [[Blocked Rates]]&lt;br /&gt;
* Retail&lt;br /&gt;
** [[Advanced Rates | Advanced (Retail) Rates]]&lt;br /&gt;
*** [[Entering Rates for Retail Tariff]]&lt;br /&gt;
*** [[Advanced Rates for Users| Advanced (Retail) Rates for Users]]&lt;br /&gt;
** [[Custom Rates]]&lt;br /&gt;
* [[Tariff Transformation]]&lt;br /&gt;
** [[Make Retail Tariff from Wholesale Tariff explained]]&lt;br /&gt;
* [[Why User can't check his Rates]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Call Routing =&lt;br /&gt;
* [[LCR]]&lt;br /&gt;
* [[LCR Logic]]&lt;br /&gt;
* [[How to add Provider to LCR]]&lt;br /&gt;
* [[Call Routing by price]]&lt;br /&gt;
* [[Call Routing by priority (Manual LCR)]]&lt;br /&gt;
* [[Call routing per destination basis]]&lt;br /&gt;
** [[How to route call to specific Destination through specific Provider]]&lt;br /&gt;
** [[How to block calls]]&lt;br /&gt;
** [[Blocked_Countries | How to block countries]]&lt;br /&gt;
** [[Block some Destination to User|Block a Destination to a User]]&lt;br /&gt;
* [[MOR - LCR/Tariff change based on call prefix]]&lt;br /&gt;
* [[Routing by Percent]] or Weight-based routing&lt;br /&gt;
* [[Why call was not routed through other provider/trunk?|Why was a call not routed through another provider/trunk?]]&lt;br /&gt;
* [[Intelligent Internal Routing]]&lt;br /&gt;
* Advanced [[extensions_mor_custom.conf]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= DIDs =&lt;br /&gt;
* [[DID Management]]&lt;br /&gt;
** [[Assign DID to Trunk]]&lt;br /&gt;
* [[Work flow for DID]]&lt;br /&gt;
* [[DID Billing]]&lt;br /&gt;
** [[DID Billing Time explained]]&lt;br /&gt;
* [[DIDs Usage]]&lt;br /&gt;
* [[Personal DIDs]]&lt;br /&gt;
* [[Example - Configuring DID to ring some Device]]&lt;br /&gt;
* [[PBX Function External DID]]&lt;br /&gt;
* [[Ring-Groups]]&lt;br /&gt;
* [[DID with VoxBone using his URI]]&lt;br /&gt;
* [[Forward DID to External Number]]&lt;br /&gt;
* [[How to charge DID on a monthly basis]]&lt;br /&gt;
* [[DID handling by Localization]]&lt;br /&gt;
* [[DID Blocking]]&lt;br /&gt;
* [[Dial Plans]]&lt;br /&gt;
** [[Authorization by PIN]]&lt;br /&gt;
** [[Authorization by ANI]]&lt;br /&gt;
** [[Calling Card Dial Plan]]&lt;br /&gt;
** [[Callback Dial Plan]]&lt;br /&gt;
** [[IVR Dial Plan]]&lt;br /&gt;
** [[STATISTICS - Various - DIDs]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= [[Accounting]] =&lt;br /&gt;
* [[Services]]&lt;br /&gt;
** [[Flat-Rates]]&lt;br /&gt;
* [[Subscriptions]]&lt;br /&gt;
* [[Invoices]]&lt;br /&gt;
** [[Invoice configuration]]&lt;br /&gt;
** [[Pay Invoice with balance deduction]]&lt;br /&gt;
** [[Invoice by CallerID]]&lt;br /&gt;
* [[Payments]]&lt;br /&gt;
* [[Vouchers]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Reporting =&lt;br /&gt;
* [[Active Calls]]&lt;br /&gt;
* [[Last Calls]]&lt;br /&gt;
* [[Local Calls Stats]]&lt;br /&gt;
* [[Users Calls]]&lt;br /&gt;
* [[Users Finances]]&lt;br /&gt;
* [[Loss Making Calls]]&lt;br /&gt;
* [[DIDs Report]]&lt;br /&gt;
* [[Providers Statistics]]&lt;br /&gt;
* [[Providers Calls]]&lt;br /&gt;
* [[Statement Of Account]]&lt;br /&gt;
* [[Aggregate]]&lt;br /&gt;
* [[First Activity]]&lt;br /&gt;
* [[Quick Stats]]&lt;br /&gt;
* [[Simultaneous Calls stats]]&lt;br /&gt;
* [[Calls by Source]]&lt;br /&gt;
* [[Login Stats]]&lt;br /&gt;
* [[Profit Stats]]&lt;br /&gt;
* [[Country Stats]]&lt;br /&gt;
* [[Hangup Cause Report]]&lt;br /&gt;
* [[Graphs]]&lt;br /&gt;
* [[Google Maps integration]]&lt;br /&gt;
** [[Get Google Maps key]]&lt;br /&gt;
* [[Balance in phone]]&lt;br /&gt;
* [[Privacy to hide Destination ends]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Troubleshooting =&lt;br /&gt;
&lt;br /&gt;
* [[Frequently_Asked_Questions_(FAQ) | Frequently Asked Questions]]&lt;br /&gt;
* [[Action log]]&lt;br /&gt;
* [[Call Tracing]]&lt;br /&gt;
* [[Integrity Check]]&lt;br /&gt;
* [[Hangupcause Codes]]&lt;br /&gt;
** [[H323 hangupcause codes]]&lt;br /&gt;
** [[Hangupcause Sounds]]&lt;br /&gt;
** [[Different code send to User compared to received from Provider]]&lt;br /&gt;
* [[Call Info]]&lt;br /&gt;
** [[Call log explanation]]&lt;br /&gt;
* [[SIP debug info]]&lt;br /&gt;
* [[Provider connection testing]]&lt;br /&gt;
* [[Asterisk CLI]]&lt;br /&gt;
** [[Watch active calls/channels in Asterisk server from CLI]]&lt;br /&gt;
** [[Get Asterisk CLI output for specific call]]&lt;br /&gt;
* [[MOR's Core version]]&lt;br /&gt;
* [[Lots of calls made by System Admin user]]&lt;br /&gt;
* [[Renew Devices]]&lt;br /&gt;
* [[Email log]]&lt;br /&gt;
* [[MOR forward Q.850 Reason header]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Maintenance = &lt;br /&gt;
&lt;br /&gt;
* [[How to restart Asterisk server]]&lt;br /&gt;
* [[Upgrade MOR GUI]]&lt;br /&gt;
* [[Lost MOR GUI admin password]]&lt;br /&gt;
* [[MOR Server Speedup]]&lt;br /&gt;
* [[Second Admin account]]&lt;br /&gt;
* [[Asterisk keepalive script]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Security =&lt;br /&gt;
* [[How to be secure using MOR]]&lt;br /&gt;
* [[MOR Change default passwords]]&lt;br /&gt;
* [[Blocking SIP Scanners]]&lt;br /&gt;
* [[MOR iptables Chains]]&lt;br /&gt;
* [[MOR two factor authentication]]&lt;br /&gt;
* [[How to set up SSL certificate with Let's Encrypt]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Testing =&lt;br /&gt;
&lt;br /&gt;
* [[VoIP Bandwidth Calculator]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Payment gateways =&lt;br /&gt;
&lt;br /&gt;
* [[Payment_Gateway_Addon | Payments Gateway Addon]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Other functionality =&lt;br /&gt;
* [[SIP Header Manipulation]]&lt;br /&gt;
* [[IVR system]]&lt;br /&gt;
** [[IVR for Calling Cards]]&lt;br /&gt;
** [[IVR Greeting for DID]]&lt;br /&gt;
* [[Callback]]&lt;br /&gt;
** [[WEB Callback]]&lt;br /&gt;
** [[Callback over Email]]&lt;br /&gt;
** [[MOR API callback init | API Callback_init]]&lt;br /&gt;
** [[Callback setup example]]&lt;br /&gt;
* [[PBX Functions]]&lt;br /&gt;
** [[Voicemail]]&lt;br /&gt;
** [[Dial Local]]&lt;br /&gt;
** [[PBX Function External DID|External DID]]&lt;br /&gt;
* [[Fax2Email]]&lt;br /&gt;
* [[Recordings Addon | Recordings]]&lt;br /&gt;
* [[PhoneBook]]&lt;br /&gt;
* [[Speed Dials]]&lt;br /&gt;
* [[Backup system]]&lt;br /&gt;
* [[Data import]]&lt;br /&gt;
* CDR&lt;br /&gt;
** [[CDR Import]]&lt;br /&gt;
** [[CDR Rerating]]&lt;br /&gt;
** [[CDR Disputes|CDR Disputes]]&lt;br /&gt;
* [[Online registration]]&lt;br /&gt;
** [[Online registration customization]]&lt;br /&gt;
* [[Quick Forwards]]&lt;br /&gt;
** [[Quickforwards rules]]&lt;br /&gt;
* [[Transfers with MOR]]&lt;br /&gt;
* [[GUI on Mobile Devices]]&lt;br /&gt;
* [[PBX connection to MOR]]&lt;br /&gt;
** [[MOR and Trixbox]]&lt;br /&gt;
* [[MOR API]]&lt;br /&gt;
** [[API Configuration]]&lt;br /&gt;
* [[Cron actions]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= [[MOR Addons|'''MOR Addons''']] =&lt;br /&gt;
* [[Limited Addons]]&lt;br /&gt;
* [[Automatic Tariff Import]]&lt;br /&gt;
* [[Auto-Dialer Addon]]&lt;br /&gt;
* [[Call Shop Addon]] &lt;br /&gt;
* [[Callback|Callback Addon]] &lt;br /&gt;
* [[Calling Cards Addon]]&lt;br /&gt;
* [[Mobile Number Portability Addon]]&lt;br /&gt;
* [[Monitorings Addon]]&lt;br /&gt;
** [[Spy_real-time_calls|Spy real-time calls]]&lt;br /&gt;
** [[Alerts]]&lt;br /&gt;
** [[Alert Groups]]&lt;br /&gt;
** [[Alert Schedules]]&lt;br /&gt;
** [[Dynamic Blacklist Functionality]]&lt;br /&gt;
* [[Payment Gateway Addon]]&lt;br /&gt;
* [[Recordings Addon]]&lt;br /&gt;
* [[Reseller Addon]]&lt;br /&gt;
* [[Reseller Pro Addon]]&lt;br /&gt;
* [[PBX_Functions_Addon | PBX Functions Addon]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Tutorials = &lt;br /&gt;
* [[Usual configuration sequence]]&lt;br /&gt;
** [[How to make first call]]&lt;br /&gt;
* [[How to create User and Device]]&lt;br /&gt;
* [[Dial Local | How to setup Dial Local function]]&lt;br /&gt;
* [[Calling Card setup example | How to setup Calling Cards]]&lt;br /&gt;
** [[How to setup Access Number to TopUp Card by CallerID]]&lt;br /&gt;
* [[Callback setup example | How to setup Callback]]&lt;br /&gt;
* [[Conference with MOR + Trixbox | How to setup Conferences using Trixbox]]&lt;br /&gt;
* [[How to forward the Call when Device is offline]]&lt;br /&gt;
* IVRs&lt;br /&gt;
** [[IVR for Calling Cards | How to setup IVR for Calling Cards]]&lt;br /&gt;
* DIDs&lt;br /&gt;
** [[Example - Configuring DID to ring some Device | How to configure DID to ring some Device]]&lt;br /&gt;
** [[Forward DID to External Number | How to forward DID to External Number]]&lt;br /&gt;
** [[How to charge DID on a monthly basis]]&lt;br /&gt;
** [[IVR Greeting for DID|How to add Greeting for DID]]&lt;br /&gt;
* [[How to configure 911 service]]&lt;br /&gt;
* [[Block some Destination to User | How to block a Destination to a User]]&lt;br /&gt;
* [[How to make several connections from one IP]]&lt;br /&gt;
* [[How to be secure using MOR]]&lt;br /&gt;
* [[How to change GUI port]]&lt;br /&gt;
* [[How to change qualify packets frequency]]&lt;br /&gt;
* [[MOR 10CC]]&lt;br /&gt;
* [[VitalPBX interconnection with MOR]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Old Manuals =&lt;br /&gt;
* [http://packets.kolmisoft.com/packets/docs/MOR_X4_Manual.pdf MOR X4 Manual]&lt;br /&gt;
* [http://packets.kolmisoft.com/packets/docs/MOR_X3_Manual.pdf MOR X3 Manual]&lt;br /&gt;
* [http://packets.kolmisoft.com/packets/docs/MOR_12_Manual.pdf MOR 12 Manual]&lt;br /&gt;
* [http://packets.kolmisoft.com/packets/docs/MOR_11_Manual.pdf MOR 11 Manual]&lt;br /&gt;
* [http://packets.kolmisoft.com/packets/docs/MOR_10_Manual.pdf MOR 10 Manual]&lt;br /&gt;
* [[Material for testing users]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=MOR_Manual&amp;diff=31400</id>
		<title>MOR Manual</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=MOR_Manual&amp;diff=31400"/>
		<updated>2026-03-04T11:58:30Z</updated>

		<summary type="html">&lt;p&gt;Admin: /*  Number Manipulation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;iframe width=&amp;quot;640&amp;quot; height=&amp;quot;360&amp;quot; src=&amp;quot;https://www.youtube.com/embed/R65ufpHOz_g&amp;quot; title=&amp;quot;YouTube video player&amp;quot; frameborder=&amp;quot;0&amp;quot; allow=&amp;quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture&amp;quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;mkmeta&amp;gt;Detailed instructions how to use MOR Class 5 Softswitch&amp;lt;/mkmeta&amp;gt;&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;MOR is a Class 5 Softswitch with Billing and Routing with extended functionality, increased stability, and professional support directly from the developers. It enables VoIP providers to offer various services.&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= Introduction =&lt;br /&gt;
* [[Introduction]] [[Image:flag_esp.jpg|alt=&amp;quot;flag&amp;quot;|link=|right|link=Introduction (es)]]&lt;br /&gt;
* [[Who is this product designed for]]&lt;br /&gt;
* [[MOR Functionality]]&lt;br /&gt;
* [[Supported Business Models]]&lt;br /&gt;
* [[MOR Admin Interface|Admin Interface]]&lt;br /&gt;
* [[How to make first call|How to make a first call]] [[Image:flag_rus.jpg|alt=&amp;quot;flag&amp;quot;|link=|right|link=How to make first call (ru)]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Concepts/Definitions =&lt;br /&gt;
* [[MOR Terminology]]&lt;br /&gt;
* [[Billing Concepts]] [[Image:flag_rus.jpg|right|alt=&amp;quot;flag&amp;quot;|link=|link=Billing Concepts (ru)]]&lt;br /&gt;
* [[Billing Logic]]&lt;br /&gt;
* [[Call explained]]&lt;br /&gt;
* [[E.164]]&lt;br /&gt;
* [[Rounding]]&lt;br /&gt;
* [[Multi-Tax system]]&lt;br /&gt;
* [[What is a PIN?]]&lt;br /&gt;
* [[ASR/ACD]]&lt;br /&gt;
* [[Margin and Markup]]&lt;br /&gt;
* [[What are callgroups and pickupgroups|What are callgroups and pickupgroups?]]&lt;br /&gt;
* [[Balance and Credit]]&lt;br /&gt;
* [[Local Calls]]&lt;br /&gt;
* [[Prepaid Logic]]&lt;br /&gt;
* [[Authentication]]&lt;br /&gt;
* [[Fax over VoIP]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Configuration =&lt;br /&gt;
* [[mor.conf]]&lt;br /&gt;
* [[Performance Suggestions]]&lt;br /&gt;
* [[Configuration from GUI]]&lt;br /&gt;
** [[reCAPTCHA]]&lt;br /&gt;
** [[Payments configuration]]&lt;br /&gt;
** [[Default device settings]]&lt;br /&gt;
** [[Default_user|Default user settings]]&lt;br /&gt;
** [[Accountant permissions]]&lt;br /&gt;
** [[Logo change]]&lt;br /&gt;
** [[Currencies]]&lt;br /&gt;
** [[Translations]]&lt;br /&gt;
** [[Global_date_format | Global date format]]&lt;br /&gt;
** [[Remove Manual link from admin GUI]]&lt;br /&gt;
* [[Voicemail]]&lt;br /&gt;
* [[Multi Server support]]&lt;br /&gt;
* [[MOR White-labeling|White-labeling]]&lt;br /&gt;
* Emails&lt;br /&gt;
** [[Configuration_from_GUI#Emails|Email settings]]&lt;br /&gt;
** [[Emails|Mass Emails]]&lt;br /&gt;
** [[Email variables]]&lt;br /&gt;
* [[WebRTC]]&lt;br /&gt;
* [[Time Zone list]]&lt;br /&gt;
* [[MOR SIP Header Transformations]]&lt;br /&gt;
* [[MOR STIR/SHAKEN]]&lt;br /&gt;
* [[PJSIP Codec negotiation]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= [[MOR Number Manipulation | Number Manipulation]] =&lt;br /&gt;
* [[MOR Localization | Localization]]&lt;br /&gt;
** [[MOR Location Groups]]&lt;br /&gt;
* [[MOR Device Rules | Device Rules]]&lt;br /&gt;
** [[MOR Device Rule Groups | Device Rule Groups]]&lt;br /&gt;
* [[MOR Provider Rules | Provider Rules]]&lt;br /&gt;
* [[DID handling by Localization]]&lt;br /&gt;
* [[MOR Number Manipulation Examples | Number Manipulation Examples]]&lt;br /&gt;
* [[Block wrong short numbers with Localization]]&lt;br /&gt;
* [[MOR - LCR/Tariff change based on call prefix]]&lt;br /&gt;
* [[Prefix finder]]&lt;br /&gt;
* [[MOR Prelocalization]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=[[Users]] =&lt;br /&gt;
* [[User Details]]&lt;br /&gt;
** [[Warning balance]]&lt;br /&gt;
** [[User Blocking]]&lt;br /&gt;
* [[Hide Users]]&lt;br /&gt;
* [[Why MOR does not allow to delete users|Why MOR does not allow users to be deleted]]&lt;br /&gt;
* [[How to create User and Device|How to create a User and Device]]&lt;br /&gt;
* [[MOR_forgot_user_password|How to reset lost GUI password]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= [[Devices]] =&lt;br /&gt;
* [[Device settings]]&lt;br /&gt;
** [[H323 Device settings]]&lt;br /&gt;
** [[Extension lines]]&lt;br /&gt;
** [[Ring several devices at same time]]&lt;br /&gt;
** [[How to create User and Device|How to create a User and Device]]&lt;br /&gt;
** [[Allowed Addresses]]&lt;br /&gt;
* [[Devices Bulk Create]]&lt;br /&gt;
* [[Trunks]]&lt;br /&gt;
* [[CLIs (Incoming CallerIDs)]]&lt;br /&gt;
** [[ANI/CLI ban system]]&lt;br /&gt;
* [[Duplicate call prevention]]&lt;br /&gt;
* [[Allow loss calls]]&lt;br /&gt;
* [[Device groups]]&lt;br /&gt;
* [[Call Flow]]&lt;br /&gt;
* [[Which codecs should I choose for devices|Which codecs should I choose for devices?]]&lt;br /&gt;
**[[Change_Audio/Video_Codecs_priority| Codecs priority]]&lt;br /&gt;
* [[Authentication|How to configure IP Authentication for Device]]&lt;br /&gt;
* [[Registration_Status|Device registration status]]&lt;br /&gt;
* [[MOR Device Rules]]&lt;br /&gt;
* [[Feature Codes]]&lt;br /&gt;
* [[Hide Device Password]]&lt;br /&gt;
* [[Disallow duplicate device usernames]]&lt;br /&gt;
* [[Disallow users to change their email]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= [[Providers]] =&lt;br /&gt;
&lt;br /&gt;
(also known as terminators, suppliers, vendors or trunks)&lt;br /&gt;
&lt;br /&gt;
* [[Terminators]]&lt;br /&gt;
* [[Provider with several IP|Provider with several IPs]]&lt;br /&gt;
* [[H323 Provider settings]]&lt;br /&gt;
* [[Provider with ANI]]&lt;br /&gt;
* [[Configure Provider which can make calls]]&lt;br /&gt;
* [[Configure Provider with dynamic IP]]&lt;br /&gt;
* [[Simultaneous call limitation]]&lt;br /&gt;
* [[NO ANSWER/BUSY interpretation for providers]]&lt;br /&gt;
* [[Provider_Deviations|Provider Deviations]]&lt;br /&gt;
* [[Provider AGI script]]&lt;br /&gt;
* Provider Configuration&lt;br /&gt;
** [[Net2phone configuration | Net2phone]]&lt;br /&gt;
** [[Broadvoice configuration | Broadvoice]]&lt;br /&gt;
** [[Eutelia]]&lt;br /&gt;
** [[IXC]]&lt;br /&gt;
** [[Configuring DIDWW | DIDWW]]&lt;br /&gt;
** [[Vitelity]]&lt;br /&gt;
** [[Vono]]&lt;br /&gt;
** [[How_to_add_Voicetrading_Provider|Voicetrading]]&lt;br /&gt;
** [[Portech GSM as Provider | Portech]]&lt;br /&gt;
** [[DID Logic]]&lt;br /&gt;
** [[Voxbeam]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= [[Tariffs]] =&lt;br /&gt;
* [[Directions and Destinations]]&lt;br /&gt;
** [[Destinations Groups]]&lt;br /&gt;
** [[Destination Groups Policy]]&lt;br /&gt;
** [[Block some Destination to User|Block a Destination to a User]]&lt;br /&gt;
** [[Export and bulk import of unassigned destinations]]&lt;br /&gt;
* [[Day setup]]&lt;br /&gt;
* [[Bulk change Tariffs for Users]]&lt;br /&gt;
* [[Wholesale Tariff | Wholesale]]&lt;br /&gt;
** [[Entering Rates for Wholesale Tariff]]&lt;br /&gt;
** [[Rate import from CSV]]&lt;br /&gt;
** [[Blocked Rates]]&lt;br /&gt;
* Retail&lt;br /&gt;
** [[Advanced Rates | Advanced (Retail) Rates]]&lt;br /&gt;
*** [[Entering Rates for Retail Tariff]]&lt;br /&gt;
*** [[Advanced Rates for Users| Advanced (Retail) Rates for Users]]&lt;br /&gt;
** [[Custom Rates]]&lt;br /&gt;
* [[Tariff Transformation]]&lt;br /&gt;
** [[Make Retail Tariff from Wholesale Tariff explained]]&lt;br /&gt;
* [[Why User can't check his Rates]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Call Routing =&lt;br /&gt;
* [[LCR]]&lt;br /&gt;
* [[LCR Logic]]&lt;br /&gt;
* [[How to add Provider to LCR]]&lt;br /&gt;
* [[Call Routing by price]]&lt;br /&gt;
* [[Call Routing by priority (Manual LCR)]]&lt;br /&gt;
* [[Call routing per destination basis]]&lt;br /&gt;
** [[How to route call to specific Destination through specific Provider]]&lt;br /&gt;
** [[How to block calls]]&lt;br /&gt;
** [[Blocked_Countries | How to block countries]]&lt;br /&gt;
** [[Block some Destination to User|Block a Destination to a User]]&lt;br /&gt;
* [[MOR - LCR/Tariff change based on call prefix]]&lt;br /&gt;
* [[Routing by Percent]] or Weight-based routing&lt;br /&gt;
* [[Why call was not routed through other provider/trunk?|Why was a call not routed through another provider/trunk?]]&lt;br /&gt;
* [[Intelligent Internal Routing]]&lt;br /&gt;
* Advanced [[extensions_mor_custom.conf]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= DIDs =&lt;br /&gt;
* [[DID Management]]&lt;br /&gt;
** [[Assign DID to Trunk]]&lt;br /&gt;
* [[Work flow for DID]]&lt;br /&gt;
* [[DID Billing]]&lt;br /&gt;
** [[DID Billing Time explained]]&lt;br /&gt;
* [[DIDs Usage]]&lt;br /&gt;
* [[Personal DIDs]]&lt;br /&gt;
* [[Example - Configuring DID to ring some Device]]&lt;br /&gt;
* [[PBX Function External DID]]&lt;br /&gt;
* [[Ring-Groups]]&lt;br /&gt;
* [[DID with VoxBone using his URI]]&lt;br /&gt;
* [[Forward DID to External Number]]&lt;br /&gt;
* [[How to charge DID on a monthly basis]]&lt;br /&gt;
* [[DID handling by Localization]]&lt;br /&gt;
* [[DID Blocking]]&lt;br /&gt;
* [[Dial Plans]]&lt;br /&gt;
** [[Authorization by PIN]]&lt;br /&gt;
** [[Authorization by ANI]]&lt;br /&gt;
** [[Calling Card Dial Plan]]&lt;br /&gt;
** [[Callback Dial Plan]]&lt;br /&gt;
** [[IVR Dial Plan]]&lt;br /&gt;
** [[STATISTICS - Various - DIDs]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= [[Accounting]] =&lt;br /&gt;
* [[Services]]&lt;br /&gt;
** [[Flat-Rates]]&lt;br /&gt;
* [[Subscriptions]]&lt;br /&gt;
* [[Invoices]]&lt;br /&gt;
** [[Invoice configuration]]&lt;br /&gt;
** [[Pay Invoice with balance deduction]]&lt;br /&gt;
** [[Invoice by CallerID]]&lt;br /&gt;
* [[Payments]]&lt;br /&gt;
* [[Vouchers]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Reporting =&lt;br /&gt;
* [[Active Calls]]&lt;br /&gt;
* [[Last Calls]]&lt;br /&gt;
* [[Local Calls Stats]]&lt;br /&gt;
* [[Users Calls]]&lt;br /&gt;
* [[Users Finances]]&lt;br /&gt;
* [[Loss Making Calls]]&lt;br /&gt;
* [[DIDs Report]]&lt;br /&gt;
* [[Providers Statistics]]&lt;br /&gt;
* [[Providers Calls]]&lt;br /&gt;
* [[Statement Of Account]]&lt;br /&gt;
* [[Aggregate]]&lt;br /&gt;
* [[First Activity]]&lt;br /&gt;
* [[Quick Stats]]&lt;br /&gt;
* [[Simultaneous Calls stats]]&lt;br /&gt;
* [[Calls by Source]]&lt;br /&gt;
* [[Login Stats]]&lt;br /&gt;
* [[Profit Stats]]&lt;br /&gt;
* [[Country Stats]]&lt;br /&gt;
* [[Hangup Cause Report]]&lt;br /&gt;
* [[Graphs]]&lt;br /&gt;
* [[Google Maps integration]]&lt;br /&gt;
** [[Get Google Maps key]]&lt;br /&gt;
* [[Balance in phone]]&lt;br /&gt;
* [[Privacy to hide Destination ends]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Troubleshooting =&lt;br /&gt;
&lt;br /&gt;
* [[Frequently_Asked_Questions_(FAQ) | Frequently Asked Questions]]&lt;br /&gt;
* [[Action log]]&lt;br /&gt;
* [[Call Tracing]]&lt;br /&gt;
* [[Integrity Check]]&lt;br /&gt;
* [[Hangupcause Codes]]&lt;br /&gt;
** [[H323 hangupcause codes]]&lt;br /&gt;
** [[Hangupcause Sounds]]&lt;br /&gt;
** [[Different code send to User compared to received from Provider]]&lt;br /&gt;
* [[Call Info]]&lt;br /&gt;
** [[Call log explanation]]&lt;br /&gt;
* [[SIP debug info]]&lt;br /&gt;
* [[Provider connection testing]]&lt;br /&gt;
* [[Asterisk CLI]]&lt;br /&gt;
** [[Watch active calls/channels in Asterisk server from CLI]]&lt;br /&gt;
** [[Get Asterisk CLI output for specific call]]&lt;br /&gt;
* [[MOR's Core version]]&lt;br /&gt;
* [[Lots of calls made by System Admin user]]&lt;br /&gt;
* [[Renew Devices]]&lt;br /&gt;
* [[Email log]]&lt;br /&gt;
* [[MOR forward Q.850 Reason header]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Maintenance = &lt;br /&gt;
&lt;br /&gt;
* [[How to restart Asterisk server]]&lt;br /&gt;
* [[Upgrade MOR GUI]]&lt;br /&gt;
* [[Lost MOR GUI admin password]]&lt;br /&gt;
* [[MOR Server Speedup]]&lt;br /&gt;
* [[Second Admin account]]&lt;br /&gt;
* [[Asterisk keepalive script]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Security =&lt;br /&gt;
* [[How to be secure using MOR]]&lt;br /&gt;
* [[MOR Change default passwords]]&lt;br /&gt;
* [[Blocking SIP Scanners]]&lt;br /&gt;
* [[MOR iptables Chains]]&lt;br /&gt;
* [[MOR two factor authentication]]&lt;br /&gt;
* [[How to set up SSL certificate with Let's Encrypt]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Testing =&lt;br /&gt;
&lt;br /&gt;
* [[VoIP Bandwidth Calculator]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Payment gateways =&lt;br /&gt;
&lt;br /&gt;
* [[Payment_Gateway_Addon | Payments Gateway Addon]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Other functionality =&lt;br /&gt;
* [[SIP Header Manipulation]]&lt;br /&gt;
* [[IVR system]]&lt;br /&gt;
** [[IVR for Calling Cards]]&lt;br /&gt;
** [[IVR Greeting for DID]]&lt;br /&gt;
* [[Callback]]&lt;br /&gt;
** [[WEB Callback]]&lt;br /&gt;
** [[Callback over Email]]&lt;br /&gt;
** [[MOR API callback init | API Callback_init]]&lt;br /&gt;
** [[Callback setup example]]&lt;br /&gt;
* [[PBX Functions]]&lt;br /&gt;
** [[Voicemail]]&lt;br /&gt;
** [[Dial Local]]&lt;br /&gt;
** [[PBX Function External DID|External DID]]&lt;br /&gt;
* [[Fax2Email]]&lt;br /&gt;
* [[Recordings Addon | Recordings]]&lt;br /&gt;
* [[PhoneBook]]&lt;br /&gt;
* [[Speed Dials]]&lt;br /&gt;
* [[Backup system]]&lt;br /&gt;
* [[Data import]]&lt;br /&gt;
* CDR&lt;br /&gt;
** [[CDR Import]]&lt;br /&gt;
** [[CDR Rerating]]&lt;br /&gt;
** [[CDR Disputes|CDR Disputes]]&lt;br /&gt;
* [[Online registration]]&lt;br /&gt;
** [[Online registration customization]]&lt;br /&gt;
* [[Quick Forwards]]&lt;br /&gt;
** [[Quickforwards rules]]&lt;br /&gt;
* [[Transfers with MOR]]&lt;br /&gt;
* [[GUI on Mobile Devices]]&lt;br /&gt;
* [[PBX connection to MOR]]&lt;br /&gt;
** [[MOR and Trixbox]]&lt;br /&gt;
* [[MOR API]]&lt;br /&gt;
** [[API Configuration]]&lt;br /&gt;
* [[Cron actions]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= [[MOR Addons|'''MOR Addons''']] =&lt;br /&gt;
* [[Limited Addons]]&lt;br /&gt;
* [[Automatic Tariff Import]]&lt;br /&gt;
* [[Auto-Dialer Addon]]&lt;br /&gt;
* [[Call Shop Addon]] &lt;br /&gt;
* [[Callback|Callback Addon]] &lt;br /&gt;
* [[Calling Cards Addon]]&lt;br /&gt;
* [[Mobile Number Portability Addon]]&lt;br /&gt;
* [[Monitorings Addon]]&lt;br /&gt;
** [[Spy_real-time_calls|Spy real-time calls]]&lt;br /&gt;
** [[Alerts]]&lt;br /&gt;
** [[Alert Groups]]&lt;br /&gt;
** [[Alert Schedules]]&lt;br /&gt;
** [[Dynamic Blacklist Functionality]]&lt;br /&gt;
* [[Payment Gateway Addon]]&lt;br /&gt;
* [[Recordings Addon]]&lt;br /&gt;
* [[Reseller Addon]]&lt;br /&gt;
* [[Reseller Pro Addon]]&lt;br /&gt;
* [[PBX_Functions_Addon | PBX Functions Addon]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Tutorials = &lt;br /&gt;
* [[Usual configuration sequence]]&lt;br /&gt;
** [[How to make first call]]&lt;br /&gt;
* [[How to create User and Device]]&lt;br /&gt;
* [[Dial Local | How to setup Dial Local function]]&lt;br /&gt;
* [[Calling Card setup example | How to setup Calling Cards]]&lt;br /&gt;
** [[How to setup Access Number to TopUp Card by CallerID]]&lt;br /&gt;
* [[Callback setup example | How to setup Callback]]&lt;br /&gt;
* [[Conference with MOR + Trixbox | How to setup Conferences using Trixbox]]&lt;br /&gt;
* [[How to forward the Call when Device is offline]]&lt;br /&gt;
* IVRs&lt;br /&gt;
** [[IVR for Calling Cards | How to setup IVR for Calling Cards]]&lt;br /&gt;
* DIDs&lt;br /&gt;
** [[Example - Configuring DID to ring some Device | How to configure DID to ring some Device]]&lt;br /&gt;
** [[Forward DID to External Number | How to forward DID to External Number]]&lt;br /&gt;
** [[How to charge DID on a monthly basis]]&lt;br /&gt;
** [[IVR Greeting for DID|How to add Greeting for DID]]&lt;br /&gt;
* [[How to configure 911 service]]&lt;br /&gt;
* [[Block some Destination to User | How to block a Destination to a User]]&lt;br /&gt;
* [[How to make several connections from one IP]]&lt;br /&gt;
* [[How to be secure using MOR]]&lt;br /&gt;
* [[How to change GUI port]]&lt;br /&gt;
* [[How to change qualify packets frequency]]&lt;br /&gt;
* [[MOR 10CC]]&lt;br /&gt;
* [[VitalPBX interconnection with MOR]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Old Manuals =&lt;br /&gt;
* [http://packets.kolmisoft.com/packets/docs/MOR_X4_Manual.pdf MOR X4 Manual]&lt;br /&gt;
* [http://packets.kolmisoft.com/packets/docs/MOR_X3_Manual.pdf MOR X3 Manual]&lt;br /&gt;
* [http://packets.kolmisoft.com/packets/docs/MOR_12_Manual.pdf MOR 12 Manual]&lt;br /&gt;
* [http://packets.kolmisoft.com/packets/docs/MOR_11_Manual.pdf MOR 11 Manual]&lt;br /&gt;
* [http://packets.kolmisoft.com/packets/docs/MOR_10_Manual.pdf MOR 10 Manual]&lt;br /&gt;
* [[Material for testing users]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=MOR_Prelocalization&amp;diff=31399</id>
		<title>MOR Prelocalization</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=MOR_Prelocalization&amp;diff=31399"/>
		<updated>2026-03-04T11:58:11Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Prelocalization allows to do '''additional''' [http://wiki.kolmisoft.com/index.php/Localization Localization] before any other action in MOR. Prelocalization is applied to incoming calls (calls to DID numbers) too.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= Purpose =&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;big&amp;gt;Prelocalization allows for greatly reducing the number of Localization rules.&amp;lt;/big&amp;gt;'''&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MNP routing and EU/Non-EU discrimination require many rules to work. &amp;lt;br&amp;gt;&lt;br /&gt;
When calls come in from clients that can have one of the following formats (Greek example): &lt;br /&gt;
* 210XXXXXXX (national format)&lt;br /&gt;
* 30210XXXXXXX(E.164 format) &lt;br /&gt;
* +30210XXXXXXX (International format) &lt;br /&gt;
* 0030210XXXXXXX (international format)&amp;lt;br&amp;gt;&lt;br /&gt;
If prelocalization does not exist, then each rule applied to localization must be repeated for every dialing type, thus increasing the overall number of rules. &amp;lt;br&amp;gt;&lt;br /&gt;
This is why prelocalization is needed: we avoid adding the same rule multiple times to cover all client dialing types.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Example: In an MNP environment, prefixes are added to the destination numbers. These prefixes have to be removed using localization rules.&amp;lt;br&amp;gt;&lt;br /&gt;
If the prefix added is 569000, then we will need 4 rules in order to solve this, although with prelocalization, we would only need one rule&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Without prelocalization rule:&lt;br /&gt;
&lt;br /&gt;
[[File:prelocalization_example1.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
If prelocalization rules exist, then before MNP prefix is added, or before localization is hit, number would already be localized e.g. 302XXXXXXXXX so we would only need 1 rule instead 4 for one prefix. &amp;lt;br&amp;gt;&lt;br /&gt;
Prelocalization greatly reduces the number of rules needed, so if it exist we would only need the following rule for the same case:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:prelocalization_example2.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Configuration=&lt;br /&gt;
&lt;br /&gt;
Configuration file '''/etc/mor/system.conf'''&lt;br /&gt;
&lt;br /&gt;
'''prelocalization_location''' - Which location to use for prelocalization? Value should be Location ID.&amp;lt;br/&amp;gt;&lt;br /&gt;
'''prelocalization_global_rules''' - Should we include global rules? Value is either 1 or 0 (default 0).&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
  prelocalization_location_id = 17&lt;br /&gt;
  prelocalization_global_rules = 1&lt;br /&gt;
&lt;br /&gt;
Asterisk reload is required:&lt;br /&gt;
&lt;br /&gt;
 asterisk -rx &amp;quot;more reload&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Location rules=&lt;br /&gt;
&lt;br /&gt;
Prelocalization supports only '''Destination''' and '''Source''' rules. '''Combined''' rules are not supported.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Only '''Cut''', '''Add''', '''Min Len''' and  '''Max Len''' are applied when doing prelocalization.&lt;br /&gt;
&lt;br /&gt;
=Script output (X17 and older)=&lt;br /&gt;
&lt;br /&gt;
Prelocalization output is written to the Asterisk verbose log at the beginning of the call:&lt;br /&gt;
                                                                                                                                                                                                                        &lt;br /&gt;
 mor_prelocalization: MOR prelocalization AGI script started                                                                                                                                                                                  &lt;br /&gt;
 mor_prelocalization: Original destination number: 00370123456                                                                                                                                                                                &lt;br /&gt;
 mor_prelocalization: Original source number: +390000000&lt;br /&gt;
 mor_prelocalization: Original source name: test&lt;br /&gt;
 mor_prelocalization: Localized dst number: 370123456 (cut: 00, add: )&lt;br /&gt;
 mor_prelocalization: Localized src number: 390000000 (cut: +, add: )                                                                                                                                                                         &lt;br /&gt;
 mor_prelocalization: MOR prelocalization AGI script stopped&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=See also=&lt;br /&gt;
* [[MOR Localization]]&lt;br /&gt;
* [[MOR Location Groups]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=MOR_Localization&amp;diff=31398</id>
		<title>MOR Localization</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=MOR_Localization&amp;diff=31398"/>
		<updated>2026-03-04T11:57:55Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Description =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;'''Localization transforms received number to E.164 format number.'''&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The main idea of localization is: '''No matter how the user dials the number (destination), when localized it should be in E.164 format.'''&lt;br /&gt;
&lt;br /&gt;
Localization has nothing in common with the numbers you send to providers. It operates with numbers received from the caller.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Depending on the device's physical location, it is often important to allow users to dial numbers in different formats to reach a destination. For this purpose, each device has a field called '''Location''', which describes the device's physical location and defines rules for how the device can dial a destination. In other words, each device IS in (or belongs to) some Location where specific dialing rules apply.&lt;br /&gt;
&lt;br /&gt;
'''Location describes where a caller IS - not where he is calling to!'''&lt;br /&gt;
&lt;br /&gt;
By default, a device has the location 'Global'. Global rules apply to ALL devices. If a device belongs to some other location and the dialed destination has some rule for this destination, then global rules are not activated – they have a lower priority in location rules.&lt;br /&gt;
&lt;br /&gt;
You can access Localization settings in '''SETTINGS –&amp;gt; Billing –&amp;gt; Functions –&amp;gt; Localization'''.&lt;br /&gt;
&lt;br /&gt;
In the main window, you can see the available Locations:&lt;br /&gt;
&lt;br /&gt;
[[Image:localization1.png]]&lt;br /&gt;
&lt;br /&gt;
At first, there is only the Global location. You can't delete this location. It's the default for all devices.&lt;br /&gt;
&lt;br /&gt;
You can add a new Location by entering this Location's name in the field at the bottom of the table:&lt;br /&gt;
&lt;br /&gt;
[[Image:localization2.png]]&lt;br /&gt;
&lt;br /&gt;
and clicking [[Image:add.png]]:&lt;br /&gt;
&lt;br /&gt;
[[Image:localization3.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
== Clone ==&lt;br /&gt;
&lt;br /&gt;
Additionally, you can make a copy of your current Localization rules by clicking the copy icon:&lt;br /&gt;
&lt;br /&gt;
[[Image:Localization_copy_function.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Rules ==&lt;br /&gt;
&lt;br /&gt;
In the Rules column, click the Rules icon to access the Location's rules:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Editbutton.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Localization_rules.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Destination Rules''' – Changes Destination number.&lt;br /&gt;
&lt;br /&gt;
'''CallerID Rules''' – Changes source number.&lt;br /&gt;
&lt;br /&gt;
'''Combined Rules''' – Change Destination number and Source number. Please note that both Destination and Source cells must be matched to apply Combined Rules. Special symbols * and # do not work in combined rules.&lt;br /&gt;
&lt;br /&gt;
'''Priority of rules that are applied first:'''&lt;br /&gt;
* 1) CallerID Rules&lt;br /&gt;
* 2) Combined Rules&lt;br /&gt;
* 3) Destination Rules&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Note that if the match is found in &amp;quot;Combined Rules&amp;quot;, &amp;quot;Destination Rules&amp;quot; are skipped entirely.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=== Removing or adding a prefix ===&lt;br /&gt;
&lt;br /&gt;
To remove a prefix from the dialed number (destination), add a '''Destination Rule''': set '''Cut''' to the prefix you want to remove and '''Add''' to the replacement (if any). You do not need to change the call's owner.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
To remove a prefix from the caller ID (source), use a '''CallerID Rule''' with '''Cut''' and '''Add''' in the same way.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The '''Change Call's owner''', '''Route to DID''', '''Change CallerID Name''', '''Change User LCR to this LCR''', and '''Change User Tariff to this Tariff''' fields are optional; use them only when you need that specific behaviour. They are not required to remove or add a prefix – only '''Cut''' and '''Add''' are needed for that.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=== Rule fields ===&lt;br /&gt;
&lt;br /&gt;
The following settings should be explained for rules:&lt;br /&gt;
&lt;br /&gt;
* '''Name''' – just for informational purposes.&lt;br /&gt;
* '''Cut''' – what prefix should be cut from the number.&lt;br /&gt;
* '''Add''' – what prefix should be added to the number.&lt;br /&gt;
* '''Min Len''' – the minimum length of the number to which the rule is being applied.&lt;br /&gt;
* '''Max Len''' – the maximum length of the number to which the rule is being applied.&lt;br /&gt;
* '''Change User Tariff to this Tariff''' – optional; which Tariff to apply when this rule is applied. Used in special cases, for example [[MOR - LCR/Tariff change based on call prefix | here]]. Leave empty in most cases; not required to remove or add a prefix.&lt;br /&gt;
* '''Change User LCR to this LCR''' – optional; which LCR to apply when this rule is applied. Used in special cases, for example [[MOR - LCR/Tariff change based on call prefix | here]]. Leave empty in most cases; not required to remove or add a prefix.&lt;br /&gt;
* '''Route to DID''' – optional; allows routing calls to DID according to localization rules. Not required to remove or add a prefix.&lt;br /&gt;
* '''Change CallerID Name''' – optional; changes the caller ID name when this rule is applied. Not required to remove or add a prefix.&lt;br /&gt;
* '''Change Call's owner''' – optional; changes the owner of the call depending on the incoming tech prefix. Use only when you need to route the call to a specific user; no prefix is required to remove or add.&lt;br /&gt;
* '''Enter edit mode''' - lets you change all rules at one time.&lt;br /&gt;
&lt;br /&gt;
When you have entered all the necessary values (Cut or Add can be left empty), click [[Image:add.png]].&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
* The normal Lithuania MOB prefix is 3706.&lt;br /&gt;
* The user's device is located in Vilnius, Lithuania (displayed as &amp;quot;Lithuania Vilnius&amp;quot;).&lt;br /&gt;
* By current Lithuanian regulations, the local customer can dial 9-digit numbers starting with 86 to reach Mobile subscribers.&lt;br /&gt;
&lt;br /&gt;
To describe this situation, we create the following rule:&lt;br /&gt;
&lt;br /&gt;
[[Image:localization_5_2.png]]&lt;br /&gt;
&lt;br /&gt;
Rules can be enabled or disabled by clicking the [[Image:check.png]] icon or [[Image:cross.png]] in the '''Enabled?''' column.&lt;br /&gt;
* [[Image:edit.png]]- This icon allows you to edit the details of the rule.&lt;br /&gt;
* [[Image:cross.png]]- This icon allows you to delete the rule.&lt;br /&gt;
&lt;br /&gt;
Now, in the main '''Localization''' window:&lt;br /&gt;
&lt;br /&gt;
[[Image:localization6.png]]&lt;br /&gt;
&lt;br /&gt;
click on [[Image:view.png]] in the '''Devices''' column to access '''Devices''' in Global '''Location''':&lt;br /&gt;
&lt;br /&gt;
[[Image:localization7.png]]&lt;br /&gt;
&lt;br /&gt;
Here, all Devices with a selected location are listed. Choose other locations for the selected Device and click on [[Image:check.png]] icon to activate this change. The device will be assigned to the selected Location.&lt;br /&gt;
&lt;br /&gt;
[[Image:localization8.png]]&lt;br /&gt;
&lt;br /&gt;
'''NOTE''': It's possible to change a device's Location in the Device settings ('''SETTINGS –&amp;gt; Users –&amp;gt; Devices''').&lt;br /&gt;
&lt;br /&gt;
Now our device belongs to Location &amp;quot;Lithuania Vilnius&amp;quot;. And if we dial a mobile number in the Lithuanian format, for example, 863042439, MOR cuts 86 (leaving 3042439) and adds 3706. The result is 37063042439, which is E.164 compatible and can be billed correctly by MOR.&lt;br /&gt;
&lt;br /&gt;
'''NOTE''': Make sure that after localization, your number is always E.164 compatible. [[Call Tracing]] can help you do this.&lt;br /&gt;
&lt;br /&gt;
'''NOTE''': You cannot delete a rule if it is assigned to a device.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Special cases =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
== Cut everything till Hash ==&lt;br /&gt;
&amp;lt;!-- 	''This option is available starting from [[MOR_9_documentation | MOR 9]]''. --&amp;gt;&lt;br /&gt;
With rule '''Cut: *#''' it is possible to cut everything till # (# included) in the dialed destination:&lt;br /&gt;
&lt;br /&gt;
[[Image:Loc_cut_till_hash_2.png]]&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
* Dialed number:  1aaaaaaaaa#37063042439&lt;br /&gt;
* After Localization: 37063042439&lt;br /&gt;
&lt;br /&gt;
Please note that if the dialed number is #37063042439, the call will not go through, because MOR rejects destinations with # in front of it.&lt;br /&gt;
&lt;br /&gt;
This function can be used in fancy MNP (Mobile Number Portability) schemes and perhaps elsewhere.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
NOTE: The '''Add''' value still can be used to add any value after '''Cut''' is used on the Destination.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
== Cut any digits after a specific prefix ==&lt;br /&gt;
&lt;br /&gt;
Works only with Destination and Combined rules.&lt;br /&gt;
&lt;br /&gt;
Cut pattern accepts &amp;quot;x&amp;quot; which indicates any digit:&lt;br /&gt;
&lt;br /&gt;
'''Cut: 12xxx''' &amp;lt;br&amp;gt;&lt;br /&gt;
will cut '''first 5 digits''' from the number which starts with digits &amp;quot;12&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If there are two rules like&lt;br /&gt;
&lt;br /&gt;
'''Cut: 12xxx'''&lt;br /&gt;
&lt;br /&gt;
'''Cut: 1234x'''&lt;br /&gt;
&lt;br /&gt;
and a number&lt;br /&gt;
&lt;br /&gt;
'''12345'''&lt;br /&gt;
&lt;br /&gt;
then the rule '''Cut: 1234x''' will be selected because it matches most of the digits exactly.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Example1:&lt;br /&gt;
&lt;br /&gt;
If we have a rule&lt;br /&gt;
&lt;br /&gt;
'''Cut: 12xxx'''&lt;br /&gt;
&lt;br /&gt;
'''Add: 99'''&lt;br /&gt;
&lt;br /&gt;
Then all the following dialled numbers&lt;br /&gt;
&lt;br /&gt;
1200012345&lt;br /&gt;
&lt;br /&gt;
1257812345&lt;br /&gt;
&lt;br /&gt;
1298712345&lt;br /&gt;
&lt;br /&gt;
will be modified to&lt;br /&gt;
&lt;br /&gt;
9912345&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example2:&lt;br /&gt;
&lt;br /&gt;
If we have a rule&lt;br /&gt;
'''Cut: 123xxx78'''&lt;br /&gt;
&lt;br /&gt;
'''Add: 78'''&lt;br /&gt;
&lt;br /&gt;
Then all numbers starting from 12300078 till 12399978 will be localised to start with 78&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Change LCR/Tariff when CallerID is empty ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
This is an '''optional''' feature for special cases (e.g. applying a different LCR or Tariff when the caller ID is missing).&lt;br /&gt;
&lt;br /&gt;
To change LCR/Tariff when CallerID is empty, set the following in Source Localization:&lt;br /&gt;
&lt;br /&gt;
'''Cut: *'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''Min Len: 0'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''Max Len: 0'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and then choose the LCR/Tariff you want to set for calls without CallerID.&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Reseller localizations =&lt;br /&gt;
The reseller is not using the admin's global localization rules. Instead, he can now copy the rules and modify them to suit his needs. All newly created resellers have those global rules copied automatically from the admin. This feature can be disabled by the admin in [[Reseller_Settings|Reseller Settings]].&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Copy_rules.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''IMPORTANT''': Fields &amp;quot;Change User Tariff to this Tariff&amp;quot; and &amp;quot;Change User LCR to this LCR&amp;quot; will not be copied.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;Default location&amp;quot; does not act as &amp;quot;Global location&amp;quot; on the reseller's account. Only the rules set in the device's settings will be applied.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Route to DID =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
This is an '''optional''' feature. Admin and Reseller PRO users can route calls to a DID according to localization rules.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Localization9.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Start typing the DID number, and you will see all the DIDs that start with that number. If the DID you need is not there, enter more digits - only the first 20 DIDs starting with that number are shown.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= Change owner of call depending on incoming prefix =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
This is an '''optional''' feature for routing the call to a specific user based on the incoming tech prefix.&lt;br /&gt;
&lt;br /&gt;
It is now possible to change the call owner based on the incoming tech prefix.&lt;br /&gt;
&lt;br /&gt;
* Open the localization menu to find the &amp;quot;Change Call's Owner&amp;quot; field.&lt;br /&gt;
[[File:localization8_5.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Enter the incoming prefix that needs to be cut in the &amp;quot;Cut&amp;quot; section.&lt;br /&gt;
* Afterwards, choose a user from the drop-down list and the device to which the call should be assigned.&lt;br /&gt;
[[File:Change_owner2.png]]&lt;br /&gt;
* This feature is also available for resellers.&lt;br /&gt;
* Admin can assign the call to ANY user on the system (even to those that do not belong to the admin).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= See also =&lt;br /&gt;
&lt;br /&gt;
* [[MOR Number Manipulation]]&lt;br /&gt;
** [[MOR Device Rules]]&lt;br /&gt;
** [[MOR Provider Rules]]&lt;br /&gt;
** [[DID handling by Localization]]&lt;br /&gt;
** [[MOR Number Manipulation Examples]]&lt;br /&gt;
* [[MOR Prelocalization]]&lt;br /&gt;
* [[MOR Location Groups]]&lt;br /&gt;
* [http://www.wtng.info/wtng-reg.html World Telephone Numbering Guide]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=MOR_Location_Groups&amp;diff=31396</id>
		<title>MOR Location Groups</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=MOR_Location_Groups&amp;diff=31396"/>
		<updated>2026-03-04T11:57:40Z</updated>

		<summary type="html">&lt;p&gt;Admin: Admin moved page Location Groups to MOR Location Groups&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Description =&lt;br /&gt;
&lt;br /&gt;
Used with [[MOR_Localization#Rules | Source Combined Rules]]. Helps reduce the number of rules.&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
Click on Location Groups.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Location_groups_menu.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Create groups:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Location_groups.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Create rules:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Location_groups_rules.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Assign Location Group  ==&lt;br /&gt;
&lt;br /&gt;
Choose your Location Group in [[MOR_Localization#Rules | Source Combined Rules]]:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Location_groups_combined.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Origin Based Rating (OBR) | Call Charging on Location Base =&lt;br /&gt;
&lt;br /&gt;
Origin-Based Rating (OBR) is a billing mechanism that takes into account both the origination (where the call begins) and termination (where the call ends)of a call when calculating billing.&lt;br /&gt;
&lt;br /&gt;
In OBR, the cost of terminating a call depends on the country or region from which the call originated. This means that the terminating provider, often a mobile operator, applies additional fees or surcharges to the standard termination rates based on the caller's country code or geographic location.&lt;br /&gt;
&lt;br /&gt;
Essentially, OBR involves charging different rates for terminating calls based on the originating country, allowing telecom providers to adjust their fees accordingly. This method can result in varying call costs depending on the point of origin, enabling a more nuanced billing structure in the telecommunications industry.&lt;br /&gt;
&lt;br /&gt;
Origin-Based Rating (OBR) is supported by MOR, and here we will cover the following cases:&lt;br /&gt;
&lt;br /&gt;
# Call from EU to EU (Greece as an example)&lt;br /&gt;
# Call from non-EU to EU (Greece as an example)&lt;br /&gt;
# Call from non-EU to non-EU country&lt;br /&gt;
&lt;br /&gt;
In #1 and #2, the Greek number belongs to provider A with NRN 589000, and the Greek destination number is in the format 302XXXXXXXXX, which is made by [[MOR Prelocalization]]. &lt;br /&gt;
&lt;br /&gt;
Later, MNP adds Provider NRN 589000 to the 302XXXXXXXXX, and the call with Destination 589000302XXXXXXXXX comes to MOR Core Localization for further analysis. And here we will take care of it. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
== Case #1 - Call from EU to EU (Greece as an example) ==&lt;br /&gt;
&lt;br /&gt;
[[File:location_groups2.png]]&lt;br /&gt;
&lt;br /&gt;
With this rule, we determine that the call with Destination starting with 589000302 and CallerID from the EU should be routed to LCR10, and Tariff10 should be used. Only one rule covers all of Europe's CallerIDs, which are described in the Localization Group EU.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Case #2 - Call from non-EU to EU (Greece as an example) ==&lt;br /&gt;
&lt;br /&gt;
[[File:location_groups3.png]]&lt;br /&gt;
&lt;br /&gt;
With this rule, we determine that calls with a destination that starts with 589000302 and a CallerID from non-EU countries should be routed to LCR20, and Tariff200 should be used. Only one rule covers the whole of non-Europe's CallerIDs, which are described in the Localization Group non-EU.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
== Case #3 - Call from non-EU to non-EU country ==&lt;br /&gt;
&lt;br /&gt;
Here, no special rule is necessary. A simple destination rule can be used to change the tariff and/or LCR.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=See also=&lt;br /&gt;
* [[MOR Localization]]&lt;br /&gt;
* [[MOR Prelocalization]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=MOR_Manual&amp;diff=31395</id>
		<title>MOR Manual</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=MOR_Manual&amp;diff=31395"/>
		<updated>2026-03-04T11:57:02Z</updated>

		<summary type="html">&lt;p&gt;Admin: /*  Number Manipulation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;iframe width=&amp;quot;640&amp;quot; height=&amp;quot;360&amp;quot; src=&amp;quot;https://www.youtube.com/embed/R65ufpHOz_g&amp;quot; title=&amp;quot;YouTube video player&amp;quot; frameborder=&amp;quot;0&amp;quot; allow=&amp;quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture&amp;quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;mkmeta&amp;gt;Detailed instructions how to use MOR Class 5 Softswitch&amp;lt;/mkmeta&amp;gt;&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;MOR is a Class 5 Softswitch with Billing and Routing with extended functionality, increased stability, and professional support directly from the developers. It enables VoIP providers to offer various services.&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= Introduction =&lt;br /&gt;
* [[Introduction]] [[Image:flag_esp.jpg|alt=&amp;quot;flag&amp;quot;|link=|right|link=Introduction (es)]]&lt;br /&gt;
* [[Who is this product designed for]]&lt;br /&gt;
* [[MOR Functionality]]&lt;br /&gt;
* [[Supported Business Models]]&lt;br /&gt;
* [[MOR Admin Interface|Admin Interface]]&lt;br /&gt;
* [[How to make first call|How to make a first call]] [[Image:flag_rus.jpg|alt=&amp;quot;flag&amp;quot;|link=|right|link=How to make first call (ru)]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Concepts/Definitions =&lt;br /&gt;
* [[MOR Terminology]]&lt;br /&gt;
* [[Billing Concepts]] [[Image:flag_rus.jpg|right|alt=&amp;quot;flag&amp;quot;|link=|link=Billing Concepts (ru)]]&lt;br /&gt;
* [[Billing Logic]]&lt;br /&gt;
* [[Call explained]]&lt;br /&gt;
* [[E.164]]&lt;br /&gt;
* [[Rounding]]&lt;br /&gt;
* [[Multi-Tax system]]&lt;br /&gt;
* [[What is a PIN?]]&lt;br /&gt;
* [[ASR/ACD]]&lt;br /&gt;
* [[Margin and Markup]]&lt;br /&gt;
* [[What are callgroups and pickupgroups|What are callgroups and pickupgroups?]]&lt;br /&gt;
* [[Balance and Credit]]&lt;br /&gt;
* [[Local Calls]]&lt;br /&gt;
* [[Prepaid Logic]]&lt;br /&gt;
* [[Authentication]]&lt;br /&gt;
* [[Fax over VoIP]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Configuration =&lt;br /&gt;
* [[mor.conf]]&lt;br /&gt;
* [[Performance Suggestions]]&lt;br /&gt;
* [[Configuration from GUI]]&lt;br /&gt;
** [[reCAPTCHA]]&lt;br /&gt;
** [[Payments configuration]]&lt;br /&gt;
** [[Default device settings]]&lt;br /&gt;
** [[Default_user|Default user settings]]&lt;br /&gt;
** [[Accountant permissions]]&lt;br /&gt;
** [[Logo change]]&lt;br /&gt;
** [[Currencies]]&lt;br /&gt;
** [[Translations]]&lt;br /&gt;
** [[Global_date_format | Global date format]]&lt;br /&gt;
** [[Remove Manual link from admin GUI]]&lt;br /&gt;
* [[Voicemail]]&lt;br /&gt;
* [[Multi Server support]]&lt;br /&gt;
* [[MOR White-labeling|White-labeling]]&lt;br /&gt;
* Emails&lt;br /&gt;
** [[Configuration_from_GUI#Emails|Email settings]]&lt;br /&gt;
** [[Emails|Mass Emails]]&lt;br /&gt;
** [[Email variables]]&lt;br /&gt;
* [[WebRTC]]&lt;br /&gt;
* [[Time Zone list]]&lt;br /&gt;
* [[MOR SIP Header Transformations]]&lt;br /&gt;
* [[MOR STIR/SHAKEN]]&lt;br /&gt;
* [[PJSIP Codec negotiation]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= [[MOR Number Manipulation | Number Manipulation]] =&lt;br /&gt;
* [[MOR Localization | Localization]]&lt;br /&gt;
* [[MOR Device Rules | Device Rules]]&lt;br /&gt;
** [[MOR Device Rule Groups | Device Rule Groups]]&lt;br /&gt;
* [[MOR Provider Rules | Provider Rules]]&lt;br /&gt;
* [[DID handling by Localization]]&lt;br /&gt;
* [[MOR Number Manipulation Examples | Number Manipulation Examples]]&lt;br /&gt;
* [[Block wrong short numbers with Localization]]&lt;br /&gt;
* [[MOR - LCR/Tariff change based on call prefix]]&lt;br /&gt;
* [[Prefix finder]]&lt;br /&gt;
* [[MOR Prelocalization]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=[[Users]] =&lt;br /&gt;
* [[User Details]]&lt;br /&gt;
** [[Warning balance]]&lt;br /&gt;
** [[User Blocking]]&lt;br /&gt;
* [[Hide Users]]&lt;br /&gt;
* [[Why MOR does not allow to delete users|Why MOR does not allow users to be deleted]]&lt;br /&gt;
* [[How to create User and Device|How to create a User and Device]]&lt;br /&gt;
* [[MOR_forgot_user_password|How to reset lost GUI password]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= [[Devices]] =&lt;br /&gt;
* [[Device settings]]&lt;br /&gt;
** [[H323 Device settings]]&lt;br /&gt;
** [[Extension lines]]&lt;br /&gt;
** [[Ring several devices at same time]]&lt;br /&gt;
** [[How to create User and Device|How to create a User and Device]]&lt;br /&gt;
** [[Allowed Addresses]]&lt;br /&gt;
* [[Devices Bulk Create]]&lt;br /&gt;
* [[Trunks]]&lt;br /&gt;
* [[CLIs (Incoming CallerIDs)]]&lt;br /&gt;
** [[ANI/CLI ban system]]&lt;br /&gt;
* [[Duplicate call prevention]]&lt;br /&gt;
* [[Allow loss calls]]&lt;br /&gt;
* [[Device groups]]&lt;br /&gt;
* [[Call Flow]]&lt;br /&gt;
* [[Which codecs should I choose for devices|Which codecs should I choose for devices?]]&lt;br /&gt;
**[[Change_Audio/Video_Codecs_priority| Codecs priority]]&lt;br /&gt;
* [[Authentication|How to configure IP Authentication for Device]]&lt;br /&gt;
* [[Registration_Status|Device registration status]]&lt;br /&gt;
* [[MOR Device Rules]]&lt;br /&gt;
* [[Feature Codes]]&lt;br /&gt;
* [[Hide Device Password]]&lt;br /&gt;
* [[Disallow duplicate device usernames]]&lt;br /&gt;
* [[Disallow users to change their email]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= [[Providers]] =&lt;br /&gt;
&lt;br /&gt;
(also known as terminators, suppliers, vendors or trunks)&lt;br /&gt;
&lt;br /&gt;
* [[Terminators]]&lt;br /&gt;
* [[Provider with several IP|Provider with several IPs]]&lt;br /&gt;
* [[H323 Provider settings]]&lt;br /&gt;
* [[Provider with ANI]]&lt;br /&gt;
* [[Configure Provider which can make calls]]&lt;br /&gt;
* [[Configure Provider with dynamic IP]]&lt;br /&gt;
* [[Simultaneous call limitation]]&lt;br /&gt;
* [[NO ANSWER/BUSY interpretation for providers]]&lt;br /&gt;
* [[Provider_Deviations|Provider Deviations]]&lt;br /&gt;
* [[Provider AGI script]]&lt;br /&gt;
* Provider Configuration&lt;br /&gt;
** [[Net2phone configuration | Net2phone]]&lt;br /&gt;
** [[Broadvoice configuration | Broadvoice]]&lt;br /&gt;
** [[Eutelia]]&lt;br /&gt;
** [[IXC]]&lt;br /&gt;
** [[Configuring DIDWW | DIDWW]]&lt;br /&gt;
** [[Vitelity]]&lt;br /&gt;
** [[Vono]]&lt;br /&gt;
** [[How_to_add_Voicetrading_Provider|Voicetrading]]&lt;br /&gt;
** [[Portech GSM as Provider | Portech]]&lt;br /&gt;
** [[DID Logic]]&lt;br /&gt;
** [[Voxbeam]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= [[Tariffs]] =&lt;br /&gt;
* [[Directions and Destinations]]&lt;br /&gt;
** [[Destinations Groups]]&lt;br /&gt;
** [[Destination Groups Policy]]&lt;br /&gt;
** [[Block some Destination to User|Block a Destination to a User]]&lt;br /&gt;
** [[Export and bulk import of unassigned destinations]]&lt;br /&gt;
* [[Day setup]]&lt;br /&gt;
* [[Bulk change Tariffs for Users]]&lt;br /&gt;
* [[Wholesale Tariff | Wholesale]]&lt;br /&gt;
** [[Entering Rates for Wholesale Tariff]]&lt;br /&gt;
** [[Rate import from CSV]]&lt;br /&gt;
** [[Blocked Rates]]&lt;br /&gt;
* Retail&lt;br /&gt;
** [[Advanced Rates | Advanced (Retail) Rates]]&lt;br /&gt;
*** [[Entering Rates for Retail Tariff]]&lt;br /&gt;
*** [[Advanced Rates for Users| Advanced (Retail) Rates for Users]]&lt;br /&gt;
** [[Custom Rates]]&lt;br /&gt;
* [[Tariff Transformation]]&lt;br /&gt;
** [[Make Retail Tariff from Wholesale Tariff explained]]&lt;br /&gt;
* [[Why User can't check his Rates]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Call Routing =&lt;br /&gt;
* [[LCR]]&lt;br /&gt;
* [[LCR Logic]]&lt;br /&gt;
* [[How to add Provider to LCR]]&lt;br /&gt;
* [[Call Routing by price]]&lt;br /&gt;
* [[Call Routing by priority (Manual LCR)]]&lt;br /&gt;
* [[Call routing per destination basis]]&lt;br /&gt;
** [[How to route call to specific Destination through specific Provider]]&lt;br /&gt;
** [[How to block calls]]&lt;br /&gt;
** [[Blocked_Countries | How to block countries]]&lt;br /&gt;
** [[Block some Destination to User|Block a Destination to a User]]&lt;br /&gt;
* [[MOR - LCR/Tariff change based on call prefix]]&lt;br /&gt;
* [[Routing by Percent]] or Weight-based routing&lt;br /&gt;
* [[Why call was not routed through other provider/trunk?|Why was a call not routed through another provider/trunk?]]&lt;br /&gt;
* [[Intelligent Internal Routing]]&lt;br /&gt;
* Advanced [[extensions_mor_custom.conf]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= DIDs =&lt;br /&gt;
* [[DID Management]]&lt;br /&gt;
** [[Assign DID to Trunk]]&lt;br /&gt;
* [[Work flow for DID]]&lt;br /&gt;
* [[DID Billing]]&lt;br /&gt;
** [[DID Billing Time explained]]&lt;br /&gt;
* [[DIDs Usage]]&lt;br /&gt;
* [[Personal DIDs]]&lt;br /&gt;
* [[Example - Configuring DID to ring some Device]]&lt;br /&gt;
* [[PBX Function External DID]]&lt;br /&gt;
* [[Ring-Groups]]&lt;br /&gt;
* [[DID with VoxBone using his URI]]&lt;br /&gt;
* [[Forward DID to External Number]]&lt;br /&gt;
* [[How to charge DID on a monthly basis]]&lt;br /&gt;
* [[DID handling by Localization]]&lt;br /&gt;
* [[DID Blocking]]&lt;br /&gt;
* [[Dial Plans]]&lt;br /&gt;
** [[Authorization by PIN]]&lt;br /&gt;
** [[Authorization by ANI]]&lt;br /&gt;
** [[Calling Card Dial Plan]]&lt;br /&gt;
** [[Callback Dial Plan]]&lt;br /&gt;
** [[IVR Dial Plan]]&lt;br /&gt;
** [[STATISTICS - Various - DIDs]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= [[Accounting]] =&lt;br /&gt;
* [[Services]]&lt;br /&gt;
** [[Flat-Rates]]&lt;br /&gt;
* [[Subscriptions]]&lt;br /&gt;
* [[Invoices]]&lt;br /&gt;
** [[Invoice configuration]]&lt;br /&gt;
** [[Pay Invoice with balance deduction]]&lt;br /&gt;
** [[Invoice by CallerID]]&lt;br /&gt;
* [[Payments]]&lt;br /&gt;
* [[Vouchers]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Reporting =&lt;br /&gt;
* [[Active Calls]]&lt;br /&gt;
* [[Last Calls]]&lt;br /&gt;
* [[Local Calls Stats]]&lt;br /&gt;
* [[Users Calls]]&lt;br /&gt;
* [[Users Finances]]&lt;br /&gt;
* [[Loss Making Calls]]&lt;br /&gt;
* [[DIDs Report]]&lt;br /&gt;
* [[Providers Statistics]]&lt;br /&gt;
* [[Providers Calls]]&lt;br /&gt;
* [[Statement Of Account]]&lt;br /&gt;
* [[Aggregate]]&lt;br /&gt;
* [[First Activity]]&lt;br /&gt;
* [[Quick Stats]]&lt;br /&gt;
* [[Simultaneous Calls stats]]&lt;br /&gt;
* [[Calls by Source]]&lt;br /&gt;
* [[Login Stats]]&lt;br /&gt;
* [[Profit Stats]]&lt;br /&gt;
* [[Country Stats]]&lt;br /&gt;
* [[Hangup Cause Report]]&lt;br /&gt;
* [[Graphs]]&lt;br /&gt;
* [[Google Maps integration]]&lt;br /&gt;
** [[Get Google Maps key]]&lt;br /&gt;
* [[Balance in phone]]&lt;br /&gt;
* [[Privacy to hide Destination ends]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Troubleshooting =&lt;br /&gt;
&lt;br /&gt;
* [[Frequently_Asked_Questions_(FAQ) | Frequently Asked Questions]]&lt;br /&gt;
* [[Action log]]&lt;br /&gt;
* [[Call Tracing]]&lt;br /&gt;
* [[Integrity Check]]&lt;br /&gt;
* [[Hangupcause Codes]]&lt;br /&gt;
** [[H323 hangupcause codes]]&lt;br /&gt;
** [[Hangupcause Sounds]]&lt;br /&gt;
** [[Different code send to User compared to received from Provider]]&lt;br /&gt;
* [[Call Info]]&lt;br /&gt;
** [[Call log explanation]]&lt;br /&gt;
* [[SIP debug info]]&lt;br /&gt;
* [[Provider connection testing]]&lt;br /&gt;
* [[Asterisk CLI]]&lt;br /&gt;
** [[Watch active calls/channels in Asterisk server from CLI]]&lt;br /&gt;
** [[Get Asterisk CLI output for specific call]]&lt;br /&gt;
* [[MOR's Core version]]&lt;br /&gt;
* [[Lots of calls made by System Admin user]]&lt;br /&gt;
* [[Renew Devices]]&lt;br /&gt;
* [[Email log]]&lt;br /&gt;
* [[MOR forward Q.850 Reason header]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Maintenance = &lt;br /&gt;
&lt;br /&gt;
* [[How to restart Asterisk server]]&lt;br /&gt;
* [[Upgrade MOR GUI]]&lt;br /&gt;
* [[Lost MOR GUI admin password]]&lt;br /&gt;
* [[MOR Server Speedup]]&lt;br /&gt;
* [[Second Admin account]]&lt;br /&gt;
* [[Asterisk keepalive script]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Security =&lt;br /&gt;
* [[How to be secure using MOR]]&lt;br /&gt;
* [[MOR Change default passwords]]&lt;br /&gt;
* [[Blocking SIP Scanners]]&lt;br /&gt;
* [[MOR iptables Chains]]&lt;br /&gt;
* [[MOR two factor authentication]]&lt;br /&gt;
* [[How to set up SSL certificate with Let's Encrypt]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Testing =&lt;br /&gt;
&lt;br /&gt;
* [[VoIP Bandwidth Calculator]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Payment gateways =&lt;br /&gt;
&lt;br /&gt;
* [[Payment_Gateway_Addon | Payments Gateway Addon]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Other functionality =&lt;br /&gt;
* [[SIP Header Manipulation]]&lt;br /&gt;
* [[IVR system]]&lt;br /&gt;
** [[IVR for Calling Cards]]&lt;br /&gt;
** [[IVR Greeting for DID]]&lt;br /&gt;
* [[Callback]]&lt;br /&gt;
** [[WEB Callback]]&lt;br /&gt;
** [[Callback over Email]]&lt;br /&gt;
** [[MOR API callback init | API Callback_init]]&lt;br /&gt;
** [[Callback setup example]]&lt;br /&gt;
* [[PBX Functions]]&lt;br /&gt;
** [[Voicemail]]&lt;br /&gt;
** [[Dial Local]]&lt;br /&gt;
** [[PBX Function External DID|External DID]]&lt;br /&gt;
* [[Fax2Email]]&lt;br /&gt;
* [[Recordings Addon | Recordings]]&lt;br /&gt;
* [[PhoneBook]]&lt;br /&gt;
* [[Speed Dials]]&lt;br /&gt;
* [[Backup system]]&lt;br /&gt;
* [[Data import]]&lt;br /&gt;
* CDR&lt;br /&gt;
** [[CDR Import]]&lt;br /&gt;
** [[CDR Rerating]]&lt;br /&gt;
** [[CDR Disputes|CDR Disputes]]&lt;br /&gt;
* [[Online registration]]&lt;br /&gt;
** [[Online registration customization]]&lt;br /&gt;
* [[Quick Forwards]]&lt;br /&gt;
** [[Quickforwards rules]]&lt;br /&gt;
* [[Transfers with MOR]]&lt;br /&gt;
* [[GUI on Mobile Devices]]&lt;br /&gt;
* [[PBX connection to MOR]]&lt;br /&gt;
** [[MOR and Trixbox]]&lt;br /&gt;
* [[MOR API]]&lt;br /&gt;
** [[API Configuration]]&lt;br /&gt;
* [[Cron actions]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= [[MOR Addons|'''MOR Addons''']] =&lt;br /&gt;
* [[Limited Addons]]&lt;br /&gt;
* [[Automatic Tariff Import]]&lt;br /&gt;
* [[Auto-Dialer Addon]]&lt;br /&gt;
* [[Call Shop Addon]] &lt;br /&gt;
* [[Callback|Callback Addon]] &lt;br /&gt;
* [[Calling Cards Addon]]&lt;br /&gt;
* [[Mobile Number Portability Addon]]&lt;br /&gt;
* [[Monitorings Addon]]&lt;br /&gt;
** [[Spy_real-time_calls|Spy real-time calls]]&lt;br /&gt;
** [[Alerts]]&lt;br /&gt;
** [[Alert Groups]]&lt;br /&gt;
** [[Alert Schedules]]&lt;br /&gt;
** [[Dynamic Blacklist Functionality]]&lt;br /&gt;
* [[Payment Gateway Addon]]&lt;br /&gt;
* [[Recordings Addon]]&lt;br /&gt;
* [[Reseller Addon]]&lt;br /&gt;
* [[Reseller Pro Addon]]&lt;br /&gt;
* [[PBX_Functions_Addon | PBX Functions Addon]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Tutorials = &lt;br /&gt;
* [[Usual configuration sequence]]&lt;br /&gt;
** [[How to make first call]]&lt;br /&gt;
* [[How to create User and Device]]&lt;br /&gt;
* [[Dial Local | How to setup Dial Local function]]&lt;br /&gt;
* [[Calling Card setup example | How to setup Calling Cards]]&lt;br /&gt;
** [[How to setup Access Number to TopUp Card by CallerID]]&lt;br /&gt;
* [[Callback setup example | How to setup Callback]]&lt;br /&gt;
* [[Conference with MOR + Trixbox | How to setup Conferences using Trixbox]]&lt;br /&gt;
* [[How to forward the Call when Device is offline]]&lt;br /&gt;
* IVRs&lt;br /&gt;
** [[IVR for Calling Cards | How to setup IVR for Calling Cards]]&lt;br /&gt;
* DIDs&lt;br /&gt;
** [[Example - Configuring DID to ring some Device | How to configure DID to ring some Device]]&lt;br /&gt;
** [[Forward DID to External Number | How to forward DID to External Number]]&lt;br /&gt;
** [[How to charge DID on a monthly basis]]&lt;br /&gt;
** [[IVR Greeting for DID|How to add Greeting for DID]]&lt;br /&gt;
* [[How to configure 911 service]]&lt;br /&gt;
* [[Block some Destination to User | How to block a Destination to a User]]&lt;br /&gt;
* [[How to make several connections from one IP]]&lt;br /&gt;
* [[How to be secure using MOR]]&lt;br /&gt;
* [[How to change GUI port]]&lt;br /&gt;
* [[How to change qualify packets frequency]]&lt;br /&gt;
* [[MOR 10CC]]&lt;br /&gt;
* [[VitalPBX interconnection with MOR]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Old Manuals =&lt;br /&gt;
* [http://packets.kolmisoft.com/packets/docs/MOR_X4_Manual.pdf MOR X4 Manual]&lt;br /&gt;
* [http://packets.kolmisoft.com/packets/docs/MOR_X3_Manual.pdf MOR X3 Manual]&lt;br /&gt;
* [http://packets.kolmisoft.com/packets/docs/MOR_12_Manual.pdf MOR 12 Manual]&lt;br /&gt;
* [http://packets.kolmisoft.com/packets/docs/MOR_11_Manual.pdf MOR 11 Manual]&lt;br /&gt;
* [http://packets.kolmisoft.com/packets/docs/MOR_10_Manual.pdf MOR 10 Manual]&lt;br /&gt;
* [[Material for testing users]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=MOR_Prelocalization&amp;diff=31394</id>
		<title>MOR Prelocalization</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=MOR_Prelocalization&amp;diff=31394"/>
		<updated>2026-03-04T11:56:00Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* How to enable it */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Prelocalization allows to do '''additional''' [http://wiki.kolmisoft.com/index.php/Localization Localization] before any other action in MOR. Prelocalization is applied to incoming calls (calls to DID numbers) too.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= Purpose =&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;big&amp;gt;Prelocalization allows for greatly reducing the number of Localization rules.&amp;lt;/big&amp;gt;'''&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MNP routing and EU/Non-EU discrimination require many rules to work. &amp;lt;br&amp;gt;&lt;br /&gt;
When calls come in from clients that can have one of the following formats (Greek example): &lt;br /&gt;
* 210XXXXXXX (national format)&lt;br /&gt;
* 30210XXXXXXX(E.164 format) &lt;br /&gt;
* +30210XXXXXXX (International format) &lt;br /&gt;
* 0030210XXXXXXX (international format)&amp;lt;br&amp;gt;&lt;br /&gt;
If prelocalization does not exist, then each rule applied to localization must be repeated for every dialing type, thus increasing the overall number of rules. &amp;lt;br&amp;gt;&lt;br /&gt;
This is why prelocalization is needed: we avoid adding the same rule multiple times to cover all client dialing types.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Example: In an MNP environment, prefixes are added to the destination numbers. These prefixes have to be removed using localization rules.&amp;lt;br&amp;gt;&lt;br /&gt;
If the prefix added is 569000, then we will need 4 rules in order to solve this, although with prelocalization, we would only need one rule&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Without prelocalization rule:&lt;br /&gt;
&lt;br /&gt;
[[File:prelocalization_example1.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
If prelocalization rules exist, then before MNP prefix is added, or before localization is hit, number would already be localized e.g. 302XXXXXXXXX so we would only need 1 rule instead 4 for one prefix. &amp;lt;br&amp;gt;&lt;br /&gt;
Prelocalization greatly reduces the number of rules needed, so if it exist we would only need the following rule for the same case:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:prelocalization_example2.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Configuration=&lt;br /&gt;
&lt;br /&gt;
Configuration file '''/etc/mor/system.conf'''&lt;br /&gt;
&lt;br /&gt;
'''prelocalization_location''' - Which location to use for prelocalization? Value should be Location ID.&amp;lt;br/&amp;gt;&lt;br /&gt;
'''prelocalization_global_rules''' - Should we include global rules? Value is either 1 or 0 (default 0).&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
  prelocalization_location_id = 17&lt;br /&gt;
  prelocalization_global_rules = 1&lt;br /&gt;
&lt;br /&gt;
Asterisk reload is required:&lt;br /&gt;
&lt;br /&gt;
 asterisk -rx &amp;quot;more reload&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Location rules=&lt;br /&gt;
&lt;br /&gt;
Prelocalization supports only '''Destination''' and '''Source''' rules. '''Combined''' rules are not supported.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Only '''Cut''', '''Add''', '''Min Len''' and  '''Max Len''' are applied when doing prelocalization.&lt;br /&gt;
&lt;br /&gt;
=Script output (X17 and older)=&lt;br /&gt;
&lt;br /&gt;
Prelocalization output is written to the Asterisk verbose log at the beginning of the call:&lt;br /&gt;
                                                                                                                                                                                                                        &lt;br /&gt;
 mor_prelocalization: MOR prelocalization AGI script started                                                                                                                                                                                  &lt;br /&gt;
 mor_prelocalization: Original destination number: 00370123456                                                                                                                                                                                &lt;br /&gt;
 mor_prelocalization: Original source number: +390000000&lt;br /&gt;
 mor_prelocalization: Original source name: test&lt;br /&gt;
 mor_prelocalization: Localized dst number: 370123456 (cut: 00, add: )&lt;br /&gt;
 mor_prelocalization: Localized src number: 390000000 (cut: +, add: )                                                                                                                                                                         &lt;br /&gt;
 mor_prelocalization: MOR prelocalization AGI script stopped&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=See also=&lt;br /&gt;
* [[MOR Localization]]&lt;br /&gt;
* [[Location Groups]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=MOR_Prelocalization&amp;diff=31393</id>
		<title>MOR Prelocalization</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=MOR_Prelocalization&amp;diff=31393"/>
		<updated>2026-03-04T11:55:37Z</updated>

		<summary type="html">&lt;p&gt;Admin: /* How to enable it */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Prelocalization allows to do '''additional''' [http://wiki.kolmisoft.com/index.php/Localization Localization] before any other action in MOR. Prelocalization is applied to incoming calls (calls to DID numbers) too.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= Purpose =&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;big&amp;gt;Prelocalization allows for greatly reducing the number of Localization rules.&amp;lt;/big&amp;gt;'''&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MNP routing and EU/Non-EU discrimination require many rules to work. &amp;lt;br&amp;gt;&lt;br /&gt;
When calls come in from clients that can have one of the following formats (Greek example): &lt;br /&gt;
* 210XXXXXXX (national format)&lt;br /&gt;
* 30210XXXXXXX(E.164 format) &lt;br /&gt;
* +30210XXXXXXX (International format) &lt;br /&gt;
* 0030210XXXXXXX (international format)&amp;lt;br&amp;gt;&lt;br /&gt;
If prelocalization does not exist, then each rule applied to localization must be repeated for every dialing type, thus increasing the overall number of rules. &amp;lt;br&amp;gt;&lt;br /&gt;
This is why prelocalization is needed: we avoid adding the same rule multiple times to cover all client dialing types.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Example: In an MNP environment, prefixes are added to the destination numbers. These prefixes have to be removed using localization rules.&amp;lt;br&amp;gt;&lt;br /&gt;
If the prefix added is 569000, then we will need 4 rules in order to solve this, although with prelocalization, we would only need one rule&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Without prelocalization rule:&lt;br /&gt;
&lt;br /&gt;
[[File:prelocalization_example1.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
If prelocalization rules exist, then before MNP prefix is added, or before localization is hit, number would already be localized e.g. 302XXXXXXXXX so we would only need 1 rule instead 4 for one prefix. &amp;lt;br&amp;gt;&lt;br /&gt;
Prelocalization greatly reduces the number of rules needed, so if it exist we would only need the following rule for the same case:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:prelocalization_example2.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=How to enable it=&lt;br /&gt;
''' From X17 Core version 27.0.33, this is no longer needed, continue with [[Prelocalization#Configuration]]'''&lt;br /&gt;
&lt;br /&gt;
!!! Please note that if your '''extensions_mor.conf''' contains '''_[A-Z0-9]!''' instead of '''_X.''' then all extensions described bellow should also be set to '''_[A-Z0-9]!'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Modify '''/etc/asterisk/extensions_mor.conf''' to include MOR prelocalization AGI script (at around 40th line, just above '''exten =&amp;gt; _X.,n,mor(${EXTEN})''')&lt;br /&gt;
&lt;br /&gt;
 exten =&amp;gt; _X.,1,NoOp(MOR starts)&lt;br /&gt;
 exten =&amp;gt; _X.,n,GotoIf($[&amp;quot;${MOR_DIAL_LOCAL_IVR}&amp;quot; != &amp;quot;&amp;quot;]?mor_dial_local_ivr,s,1)&lt;br /&gt;
 exten =&amp;gt; _X.,n,Gosub(diversion_settings,${EXTEN},1)&lt;br /&gt;
 exten =&amp;gt; _X.,n,Gosub(proxy_settings,${EXTEN},1)&lt;br /&gt;
 exten =&amp;gt; _X.,n,Set(__MOR_SIP_TO=${SIP_HEADER(To)})&lt;br /&gt;
 exten =&amp;gt; _X.,n,Set(TIMEOUT(response)=20)&lt;br /&gt;
 exten =&amp;gt; _X.,n,AGI(mor_prelocalization)  ;&amp;lt;--------------------------------------- ADD THIS LINE HERE ----------- !!!!&lt;br /&gt;
 exten =&amp;gt; _X.,n,mor(${EXTEN})&lt;br /&gt;
 exten =&amp;gt; _X.,n,GotoIf($[&amp;quot;${MOR_CARD_USED}&amp;quot; != &amp;quot;&amp;quot;]?mor_callingcard,s,1)&lt;br /&gt;
 exten =&amp;gt; _X.,n,GotoIf($[&amp;quot;${MOR_ANIPIN_USED}&amp;quot; != &amp;quot;&amp;quot;]?mor_anipin,s,1)&lt;br /&gt;
 exten =&amp;gt; _X.,n,GotoIf($[&amp;quot;${DIALSTATUS}&amp;quot; = &amp;quot;BUSY&amp;quot;]?BUSY,1:HANGUP,1)&lt;br /&gt;
&lt;br /&gt;
If you are using [[Mobile Number Portability Addon]], then this line should go BEFORE the MNP addon line and should look like this:&lt;br /&gt;
&lt;br /&gt;
 exten =&amp;gt; _X.,1,AGI(mor_prelocalization)   ;&amp;lt;--------------------------------------- ADD THIS LINE HERE ----------- !!!!&lt;br /&gt;
 exten =&amp;gt; _X.,n,AGI(mor_mnp)&lt;br /&gt;
 exten =&amp;gt; _X.,n,GotoIf($[&amp;quot;${MOR_DIAL_LOCAL_IVR}&amp;quot; != &amp;quot;&amp;quot;]?mor_dial_local_ivr,s,1)&lt;br /&gt;
 exten =&amp;gt; _X.,n,Gosub(diversion_settings,${EXTEN},1)&lt;br /&gt;
 exten =&amp;gt; _X.,n,Gosub(proxy_settings,${EXTEN},1)&lt;br /&gt;
 exten =&amp;gt; _X.,n,Set(__MOR_SIP_TO=${SIP_HEADER(To)})&lt;br /&gt;
 exten =&amp;gt; _X.,n,Set(TIMEOUT(response)=20)&lt;br /&gt;
 exten =&amp;gt; _X.,n,Set(TIMEOUT(digit)=10)&lt;br /&gt;
 exten =&amp;gt; _X.,n,mor(${EXTEN})&lt;br /&gt;
 exten =&amp;gt; _X.,n,GotoIf($[&amp;quot;${MOR_CARD_USED}&amp;quot; != &amp;quot;&amp;quot;]?mor_callingcard,s,1)&lt;br /&gt;
 exten =&amp;gt; _X.,n,GotoIf($[&amp;quot;${MOR_ANIPIN_USED}&amp;quot; != &amp;quot;&amp;quot;]?mor_anipin,s,1)&lt;br /&gt;
 exten =&amp;gt; _X.,n,GotoIf($[&amp;quot;${DIALSTATUS}&amp;quot; = &amp;quot;BUSY&amp;quot;]?BUSY,1:HANGUP,1)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you are using a system with a Proxy solution, then this line should go AFTER proxy_settings and BEFORE MNP addon (if it is used):&lt;br /&gt;
&lt;br /&gt;
 exten =&amp;gt; _X.,1,GotoIf($[&amp;quot;${MOR_DIAL_LOCAL_IVR}&amp;quot; != &amp;quot;&amp;quot;]?mor_dial_local_ivr,s,1)&lt;br /&gt;
 exten =&amp;gt; _X.,n,Gosub(diversion_settings,${EXTEN},1)&lt;br /&gt;
 exten =&amp;gt; _X.,n,Gosub(proxy_settings,${EXTEN},1)&lt;br /&gt;
 exten =&amp;gt; _X.,n,AGI(mor_prelocalization)   ;&amp;lt;---------Prelocalization line should go after proxy and before mnp (if it is used)---------- !!!!&lt;br /&gt;
 exten =&amp;gt; _X.,n,AGI(mor_mnp)&lt;br /&gt;
 exten =&amp;gt; _X.,n,Set(__MOR_SIP_TO=${SIP_HEADER(To)})&lt;br /&gt;
 exten =&amp;gt; _X.,n,Set(TIMEOUT(response)=20)&lt;br /&gt;
 exten =&amp;gt; _X.,n,Set(TIMEOUT(digit)=10)&lt;br /&gt;
 exten =&amp;gt; _X.,n,mor(${EXTEN})&lt;br /&gt;
 exten =&amp;gt; _X.,n,GotoIf($[&amp;quot;${MOR_CARD_USED}&amp;quot; != &amp;quot;&amp;quot;]?mor_callingcard,s,1)&lt;br /&gt;
 exten =&amp;gt; _X.,n,GotoIf($[&amp;quot;${MOR_ANIPIN_USED}&amp;quot; != &amp;quot;&amp;quot;]?mor_anipin,s,1)&lt;br /&gt;
 exten =&amp;gt; _X.,n,GotoIf($[&amp;quot;${DIALSTATUS}&amp;quot; = &amp;quot;BUSY&amp;quot;]?BUSY,1:HANGUP,1)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Asterisk dialplan should be reloaded each time this file is changed:&lt;br /&gt;
&lt;br /&gt;
 asterisk -rx &amp;quot;dialplan reload&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Configuration=&lt;br /&gt;
&lt;br /&gt;
Configuration file '''/etc/mor/system.conf'''&lt;br /&gt;
&lt;br /&gt;
'''prelocalization_location''' - Which location to use for prelocalization? Value should be Location ID.&amp;lt;br/&amp;gt;&lt;br /&gt;
'''prelocalization_global_rules''' - Should we include global rules? Value is either 1 or 0 (default 0).&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
  prelocalization_location_id = 17&lt;br /&gt;
  prelocalization_global_rules = 1&lt;br /&gt;
&lt;br /&gt;
Asterisk reload is required:&lt;br /&gt;
&lt;br /&gt;
 asterisk -rx &amp;quot;more reload&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Location rules=&lt;br /&gt;
&lt;br /&gt;
Prelocalization supports only '''Destination''' and '''Source''' rules. '''Combined''' rules are not supported.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Only '''Cut''', '''Add''', '''Min Len''' and  '''Max Len''' are applied when doing prelocalization.&lt;br /&gt;
&lt;br /&gt;
=Script output (X17 and older)=&lt;br /&gt;
&lt;br /&gt;
Prelocalization output is written to the Asterisk verbose log at the beginning of the call:&lt;br /&gt;
                                                                                                                                                                                                                        &lt;br /&gt;
 mor_prelocalization: MOR prelocalization AGI script started                                                                                                                                                                                  &lt;br /&gt;
 mor_prelocalization: Original destination number: 00370123456                                                                                                                                                                                &lt;br /&gt;
 mor_prelocalization: Original source number: +390000000&lt;br /&gt;
 mor_prelocalization: Original source name: test&lt;br /&gt;
 mor_prelocalization: Localized dst number: 370123456 (cut: 00, add: )&lt;br /&gt;
 mor_prelocalization: Localized src number: 390000000 (cut: +, add: )                                                                                                                                                                         &lt;br /&gt;
 mor_prelocalization: MOR prelocalization AGI script stopped&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=See also=&lt;br /&gt;
* [[MOR Localization]]&lt;br /&gt;
* [[Location Groups]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=MOR_Localization&amp;diff=31392</id>
		<title>MOR Localization</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=MOR_Localization&amp;diff=31392"/>
		<updated>2026-03-04T11:54:31Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Description =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;'''Localization transforms received number to E.164 format number.'''&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The main idea of localization is: '''No matter how the user dials the number (destination), when localized it should be in E.164 format.'''&lt;br /&gt;
&lt;br /&gt;
Localization has nothing in common with the numbers you send to providers. It operates with numbers received from the caller.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Depending on the device's physical location, it is often important to allow users to dial numbers in different formats to reach a destination. For this purpose, each device has a field called '''Location''', which describes the device's physical location and defines rules for how the device can dial a destination. In other words, each device IS in (or belongs to) some Location where specific dialing rules apply.&lt;br /&gt;
&lt;br /&gt;
'''Location describes where a caller IS - not where he is calling to!'''&lt;br /&gt;
&lt;br /&gt;
By default, a device has the location 'Global'. Global rules apply to ALL devices. If a device belongs to some other location and the dialed destination has some rule for this destination, then global rules are not activated – they have a lower priority in location rules.&lt;br /&gt;
&lt;br /&gt;
You can access Localization settings in '''SETTINGS –&amp;gt; Billing –&amp;gt; Functions –&amp;gt; Localization'''.&lt;br /&gt;
&lt;br /&gt;
In the main window, you can see the available Locations:&lt;br /&gt;
&lt;br /&gt;
[[Image:localization1.png]]&lt;br /&gt;
&lt;br /&gt;
At first, there is only the Global location. You can't delete this location. It's the default for all devices.&lt;br /&gt;
&lt;br /&gt;
You can add a new Location by entering this Location's name in the field at the bottom of the table:&lt;br /&gt;
&lt;br /&gt;
[[Image:localization2.png]]&lt;br /&gt;
&lt;br /&gt;
and clicking [[Image:add.png]]:&lt;br /&gt;
&lt;br /&gt;
[[Image:localization3.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
== Clone ==&lt;br /&gt;
&lt;br /&gt;
Additionally, you can make a copy of your current Localization rules by clicking the copy icon:&lt;br /&gt;
&lt;br /&gt;
[[Image:Localization_copy_function.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Rules ==&lt;br /&gt;
&lt;br /&gt;
In the Rules column, click the Rules icon to access the Location's rules:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Editbutton.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Localization_rules.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Destination Rules''' – Changes Destination number.&lt;br /&gt;
&lt;br /&gt;
'''CallerID Rules''' – Changes source number.&lt;br /&gt;
&lt;br /&gt;
'''Combined Rules''' – Change Destination number and Source number. Please note that both Destination and Source cells must be matched to apply Combined Rules. Special symbols * and # do not work in combined rules.&lt;br /&gt;
&lt;br /&gt;
'''Priority of rules that are applied first:'''&lt;br /&gt;
* 1) CallerID Rules&lt;br /&gt;
* 2) Combined Rules&lt;br /&gt;
* 3) Destination Rules&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Note that if the match is found in &amp;quot;Combined Rules&amp;quot;, &amp;quot;Destination Rules&amp;quot; are skipped entirely.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=== Removing or adding a prefix ===&lt;br /&gt;
&lt;br /&gt;
To remove a prefix from the dialed number (destination), add a '''Destination Rule''': set '''Cut''' to the prefix you want to remove and '''Add''' to the replacement (if any). You do not need to change the call's owner.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
To remove a prefix from the caller ID (source), use a '''CallerID Rule''' with '''Cut''' and '''Add''' in the same way.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The '''Change Call's owner''', '''Route to DID''', '''Change CallerID Name''', '''Change User LCR to this LCR''', and '''Change User Tariff to this Tariff''' fields are optional; use them only when you need that specific behaviour. They are not required to remove or add a prefix – only '''Cut''' and '''Add''' are needed for that.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=== Rule fields ===&lt;br /&gt;
&lt;br /&gt;
The following settings should be explained for rules:&lt;br /&gt;
&lt;br /&gt;
* '''Name''' – just for informational purposes.&lt;br /&gt;
* '''Cut''' – what prefix should be cut from the number.&lt;br /&gt;
* '''Add''' – what prefix should be added to the number.&lt;br /&gt;
* '''Min Len''' – the minimum length of the number to which the rule is being applied.&lt;br /&gt;
* '''Max Len''' – the maximum length of the number to which the rule is being applied.&lt;br /&gt;
* '''Change User Tariff to this Tariff''' – optional; which Tariff to apply when this rule is applied. Used in special cases, for example [[MOR - LCR/Tariff change based on call prefix | here]]. Leave empty in most cases; not required to remove or add a prefix.&lt;br /&gt;
* '''Change User LCR to this LCR''' – optional; which LCR to apply when this rule is applied. Used in special cases, for example [[MOR - LCR/Tariff change based on call prefix | here]]. Leave empty in most cases; not required to remove or add a prefix.&lt;br /&gt;
* '''Route to DID''' – optional; allows routing calls to DID according to localization rules. Not required to remove or add a prefix.&lt;br /&gt;
* '''Change CallerID Name''' – optional; changes the caller ID name when this rule is applied. Not required to remove or add a prefix.&lt;br /&gt;
* '''Change Call's owner''' – optional; changes the owner of the call depending on the incoming tech prefix. Use only when you need to route the call to a specific user; no prefix is required to remove or add.&lt;br /&gt;
* '''Enter edit mode''' - lets you change all rules at one time.&lt;br /&gt;
&lt;br /&gt;
When you have entered all the necessary values (Cut or Add can be left empty), click [[Image:add.png]].&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
* The normal Lithuania MOB prefix is 3706.&lt;br /&gt;
* The user's device is located in Vilnius, Lithuania (displayed as &amp;quot;Lithuania Vilnius&amp;quot;).&lt;br /&gt;
* By current Lithuanian regulations, the local customer can dial 9-digit numbers starting with 86 to reach Mobile subscribers.&lt;br /&gt;
&lt;br /&gt;
To describe this situation, we create the following rule:&lt;br /&gt;
&lt;br /&gt;
[[Image:localization_5_2.png]]&lt;br /&gt;
&lt;br /&gt;
Rules can be enabled or disabled by clicking the [[Image:check.png]] icon or [[Image:cross.png]] in the '''Enabled?''' column.&lt;br /&gt;
* [[Image:edit.png]]- This icon allows you to edit the details of the rule.&lt;br /&gt;
* [[Image:cross.png]]- This icon allows you to delete the rule.&lt;br /&gt;
&lt;br /&gt;
Now, in the main '''Localization''' window:&lt;br /&gt;
&lt;br /&gt;
[[Image:localization6.png]]&lt;br /&gt;
&lt;br /&gt;
click on [[Image:view.png]] in the '''Devices''' column to access '''Devices''' in Global '''Location''':&lt;br /&gt;
&lt;br /&gt;
[[Image:localization7.png]]&lt;br /&gt;
&lt;br /&gt;
Here, all Devices with a selected location are listed. Choose other locations for the selected Device and click on [[Image:check.png]] icon to activate this change. The device will be assigned to the selected Location.&lt;br /&gt;
&lt;br /&gt;
[[Image:localization8.png]]&lt;br /&gt;
&lt;br /&gt;
'''NOTE''': It's possible to change a device's Location in the Device settings ('''SETTINGS –&amp;gt; Users –&amp;gt; Devices''').&lt;br /&gt;
&lt;br /&gt;
Now our device belongs to Location &amp;quot;Lithuania Vilnius&amp;quot;. And if we dial a mobile number in the Lithuanian format, for example, 863042439, MOR cuts 86 (leaving 3042439) and adds 3706. The result is 37063042439, which is E.164 compatible and can be billed correctly by MOR.&lt;br /&gt;
&lt;br /&gt;
'''NOTE''': Make sure that after localization, your number is always E.164 compatible. [[Call Tracing]] can help you do this.&lt;br /&gt;
&lt;br /&gt;
'''NOTE''': You cannot delete a rule if it is assigned to a device.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Special cases =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
== Cut everything till Hash ==&lt;br /&gt;
&amp;lt;!-- 	''This option is available starting from [[MOR_9_documentation | MOR 9]]''. --&amp;gt;&lt;br /&gt;
With rule '''Cut: *#''' it is possible to cut everything till # (# included) in the dialed destination:&lt;br /&gt;
&lt;br /&gt;
[[Image:Loc_cut_till_hash_2.png]]&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
* Dialed number:  1aaaaaaaaa#37063042439&lt;br /&gt;
* After Localization: 37063042439&lt;br /&gt;
&lt;br /&gt;
Please note that if the dialed number is #37063042439, the call will not go through, because MOR rejects destinations with # in front of it.&lt;br /&gt;
&lt;br /&gt;
This function can be used in fancy MNP (Mobile Number Portability) schemes and perhaps elsewhere.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
NOTE: The '''Add''' value still can be used to add any value after '''Cut''' is used on the Destination.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
== Cut any digits after a specific prefix ==&lt;br /&gt;
&lt;br /&gt;
Works only with Destination and Combined rules.&lt;br /&gt;
&lt;br /&gt;
Cut pattern accepts &amp;quot;x&amp;quot; which indicates any digit:&lt;br /&gt;
&lt;br /&gt;
'''Cut: 12xxx''' &amp;lt;br&amp;gt;&lt;br /&gt;
will cut '''first 5 digits''' from the number which starts with digits &amp;quot;12&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If there are two rules like&lt;br /&gt;
&lt;br /&gt;
'''Cut: 12xxx'''&lt;br /&gt;
&lt;br /&gt;
'''Cut: 1234x'''&lt;br /&gt;
&lt;br /&gt;
and a number&lt;br /&gt;
&lt;br /&gt;
'''12345'''&lt;br /&gt;
&lt;br /&gt;
then the rule '''Cut: 1234x''' will be selected because it matches most of the digits exactly.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Example1:&lt;br /&gt;
&lt;br /&gt;
If we have a rule&lt;br /&gt;
&lt;br /&gt;
'''Cut: 12xxx'''&lt;br /&gt;
&lt;br /&gt;
'''Add: 99'''&lt;br /&gt;
&lt;br /&gt;
Then all the following dialled numbers&lt;br /&gt;
&lt;br /&gt;
1200012345&lt;br /&gt;
&lt;br /&gt;
1257812345&lt;br /&gt;
&lt;br /&gt;
1298712345&lt;br /&gt;
&lt;br /&gt;
will be modified to&lt;br /&gt;
&lt;br /&gt;
9912345&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example2:&lt;br /&gt;
&lt;br /&gt;
If we have a rule&lt;br /&gt;
'''Cut: 123xxx78'''&lt;br /&gt;
&lt;br /&gt;
'''Add: 78'''&lt;br /&gt;
&lt;br /&gt;
Then all numbers starting from 12300078 till 12399978 will be localised to start with 78&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Change LCR/Tariff when CallerID is empty ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
This is an '''optional''' feature for special cases (e.g. applying a different LCR or Tariff when the caller ID is missing).&lt;br /&gt;
&lt;br /&gt;
To change LCR/Tariff when CallerID is empty, set the following in Source Localization:&lt;br /&gt;
&lt;br /&gt;
'''Cut: *'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''Min Len: 0'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''Max Len: 0'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and then choose the LCR/Tariff you want to set for calls without CallerID.&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Reseller localizations =&lt;br /&gt;
The reseller is not using the admin's global localization rules. Instead, he can now copy the rules and modify them to suit his needs. All newly created resellers have those global rules copied automatically from the admin. This feature can be disabled by the admin in [[Reseller_Settings|Reseller Settings]].&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Copy_rules.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''IMPORTANT''': Fields &amp;quot;Change User Tariff to this Tariff&amp;quot; and &amp;quot;Change User LCR to this LCR&amp;quot; will not be copied.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;Default location&amp;quot; does not act as &amp;quot;Global location&amp;quot; on the reseller's account. Only the rules set in the device's settings will be applied.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Route to DID =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
This is an '''optional''' feature. Admin and Reseller PRO users can route calls to a DID according to localization rules.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Localization9.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Start typing the DID number, and you will see all the DIDs that start with that number. If the DID you need is not there, enter more digits - only the first 20 DIDs starting with that number are shown.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= Change owner of call depending on incoming prefix =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
This is an '''optional''' feature for routing the call to a specific user based on the incoming tech prefix.&lt;br /&gt;
&lt;br /&gt;
It is now possible to change the call owner based on the incoming tech prefix.&lt;br /&gt;
&lt;br /&gt;
* Open the localization menu to find the &amp;quot;Change Call's Owner&amp;quot; field.&lt;br /&gt;
[[File:localization8_5.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Enter the incoming prefix that needs to be cut in the &amp;quot;Cut&amp;quot; section.&lt;br /&gt;
* Afterwards, choose a user from the drop-down list and the device to which the call should be assigned.&lt;br /&gt;
[[File:Change_owner2.png]]&lt;br /&gt;
* This feature is also available for resellers.&lt;br /&gt;
* Admin can assign the call to ANY user on the system (even to those that do not belong to the admin).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= See also =&lt;br /&gt;
&lt;br /&gt;
* [[MOR Number Manipulation]]&lt;br /&gt;
** [[MOR Device Rules]]&lt;br /&gt;
** [[MOR Provider Rules]]&lt;br /&gt;
** [[DID handling by Localization]]&lt;br /&gt;
** [[MOR Number Manipulation Examples]]&lt;br /&gt;
* [[MOR Prelocalization]]&lt;br /&gt;
* [[Location Groups]]&lt;br /&gt;
* [http://www.wtng.info/wtng-reg.html World Telephone Numbering Guide]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=MOR_Prelocalization&amp;diff=31391</id>
		<title>MOR Prelocalization</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=MOR_Prelocalization&amp;diff=31391"/>
		<updated>2026-03-04T11:54:22Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Prelocalization allows to do '''additional''' [http://wiki.kolmisoft.com/index.php/Localization Localization] before any other action in MOR. Prelocalization is applied to incoming calls (calls to DID numbers) too.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= Purpose =&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;big&amp;gt;Prelocalization allows for greatly reducing the number of Localization rules.&amp;lt;/big&amp;gt;'''&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MNP routing and EU/Non-EU discrimination require many rules to work. &amp;lt;br&amp;gt;&lt;br /&gt;
When calls come in from clients that can have one of the following formats (Greek example): &lt;br /&gt;
* 210XXXXXXX (national format)&lt;br /&gt;
* 30210XXXXXXX(E.164 format) &lt;br /&gt;
* +30210XXXXXXX (International format) &lt;br /&gt;
* 0030210XXXXXXX (international format)&amp;lt;br&amp;gt;&lt;br /&gt;
If prelocalization does not exist, then each rule applied to localization must be repeated for every dialing type, thus increasing the overall number of rules. &amp;lt;br&amp;gt;&lt;br /&gt;
This is why prelocalization is needed: we avoid adding the same rule multiple times to cover all client dialing types.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Example: In an MNP environment, prefixes are added to the destination numbers. These prefixes have to be removed using localization rules.&amp;lt;br&amp;gt;&lt;br /&gt;
If the prefix added is 569000, then we will need 4 rules in order to solve this, although with prelocalization, we would only need one rule&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Without prelocalization rule:&lt;br /&gt;
&lt;br /&gt;
[[File:prelocalization_example1.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
If prelocalization rules exist, then before MNP prefix is added, or before localization is hit, number would already be localized e.g. 302XXXXXXXXX so we would only need 1 rule instead 4 for one prefix. &amp;lt;br&amp;gt;&lt;br /&gt;
Prelocalization greatly reduces the number of rules needed, so if it exist we would only need the following rule for the same case:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:prelocalization_example2.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=How to enable it=&lt;br /&gt;
''' From X17 Core version 27.0.33, this is no longer needed, continue with [[Prelocalization#Configuration]]'''&lt;br /&gt;
&lt;br /&gt;
'''Latest MOR X12 (or higher) version is required for this feature to work'''&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
!!! Please note that if your '''extensions_mor.conf''' contains '''_[A-Z0-9]!''' instead of '''_X.''' then all extensions described bellow should also be set to '''_[A-Z0-9]!'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Modify '''/etc/asterisk/extensions_mor.conf''' to include MOR prelocalization AGI script (at around 40th line, just above '''exten =&amp;gt; _X.,n,mor(${EXTEN})''')&lt;br /&gt;
&lt;br /&gt;
 exten =&amp;gt; _X.,1,NoOp(MOR starts)&lt;br /&gt;
 exten =&amp;gt; _X.,n,GotoIf($[&amp;quot;${MOR_DIAL_LOCAL_IVR}&amp;quot; != &amp;quot;&amp;quot;]?mor_dial_local_ivr,s,1)&lt;br /&gt;
 exten =&amp;gt; _X.,n,Gosub(diversion_settings,${EXTEN},1)&lt;br /&gt;
 exten =&amp;gt; _X.,n,Gosub(proxy_settings,${EXTEN},1)&lt;br /&gt;
 exten =&amp;gt; _X.,n,Set(__MOR_SIP_TO=${SIP_HEADER(To)})&lt;br /&gt;
 exten =&amp;gt; _X.,n,Set(TIMEOUT(response)=20)&lt;br /&gt;
 exten =&amp;gt; _X.,n,AGI(mor_prelocalization)  ;&amp;lt;--------------------------------------- ADD THIS LINE HERE ----------- !!!!&lt;br /&gt;
 exten =&amp;gt; _X.,n,mor(${EXTEN})&lt;br /&gt;
 exten =&amp;gt; _X.,n,GotoIf($[&amp;quot;${MOR_CARD_USED}&amp;quot; != &amp;quot;&amp;quot;]?mor_callingcard,s,1)&lt;br /&gt;
 exten =&amp;gt; _X.,n,GotoIf($[&amp;quot;${MOR_ANIPIN_USED}&amp;quot; != &amp;quot;&amp;quot;]?mor_anipin,s,1)&lt;br /&gt;
 exten =&amp;gt; _X.,n,GotoIf($[&amp;quot;${DIALSTATUS}&amp;quot; = &amp;quot;BUSY&amp;quot;]?BUSY,1:HANGUP,1)&lt;br /&gt;
&lt;br /&gt;
If you are using [[Mobile Number Portability Addon]], then this line should go BEFORE the MNP addon line and should look like this:&lt;br /&gt;
&lt;br /&gt;
 exten =&amp;gt; _X.,1,AGI(mor_prelocalization)   ;&amp;lt;--------------------------------------- ADD THIS LINE HERE ----------- !!!!&lt;br /&gt;
 exten =&amp;gt; _X.,n,AGI(mor_mnp)&lt;br /&gt;
 exten =&amp;gt; _X.,n,GotoIf($[&amp;quot;${MOR_DIAL_LOCAL_IVR}&amp;quot; != &amp;quot;&amp;quot;]?mor_dial_local_ivr,s,1)&lt;br /&gt;
 exten =&amp;gt; _X.,n,Gosub(diversion_settings,${EXTEN},1)&lt;br /&gt;
 exten =&amp;gt; _X.,n,Gosub(proxy_settings,${EXTEN},1)&lt;br /&gt;
 exten =&amp;gt; _X.,n,Set(__MOR_SIP_TO=${SIP_HEADER(To)})&lt;br /&gt;
 exten =&amp;gt; _X.,n,Set(TIMEOUT(response)=20)&lt;br /&gt;
 exten =&amp;gt; _X.,n,Set(TIMEOUT(digit)=10)&lt;br /&gt;
 exten =&amp;gt; _X.,n,mor(${EXTEN})&lt;br /&gt;
 exten =&amp;gt; _X.,n,GotoIf($[&amp;quot;${MOR_CARD_USED}&amp;quot; != &amp;quot;&amp;quot;]?mor_callingcard,s,1)&lt;br /&gt;
 exten =&amp;gt; _X.,n,GotoIf($[&amp;quot;${MOR_ANIPIN_USED}&amp;quot; != &amp;quot;&amp;quot;]?mor_anipin,s,1)&lt;br /&gt;
 exten =&amp;gt; _X.,n,GotoIf($[&amp;quot;${DIALSTATUS}&amp;quot; = &amp;quot;BUSY&amp;quot;]?BUSY,1:HANGUP,1)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you are using a system with a Proxy solution, then this line should go AFTER proxy_settings and BEFORE MNP addon (if it is used):&lt;br /&gt;
&lt;br /&gt;
 exten =&amp;gt; _X.,1,GotoIf($[&amp;quot;${MOR_DIAL_LOCAL_IVR}&amp;quot; != &amp;quot;&amp;quot;]?mor_dial_local_ivr,s,1)&lt;br /&gt;
 exten =&amp;gt; _X.,n,Gosub(diversion_settings,${EXTEN},1)&lt;br /&gt;
 exten =&amp;gt; _X.,n,Gosub(proxy_settings,${EXTEN},1)&lt;br /&gt;
 exten =&amp;gt; _X.,n,AGI(mor_prelocalization)   ;&amp;lt;---------Prelocalization line should go after proxy and before mnp (if it is used)---------- !!!!&lt;br /&gt;
 exten =&amp;gt; _X.,n,AGI(mor_mnp)&lt;br /&gt;
 exten =&amp;gt; _X.,n,Set(__MOR_SIP_TO=${SIP_HEADER(To)})&lt;br /&gt;
 exten =&amp;gt; _X.,n,Set(TIMEOUT(response)=20)&lt;br /&gt;
 exten =&amp;gt; _X.,n,Set(TIMEOUT(digit)=10)&lt;br /&gt;
 exten =&amp;gt; _X.,n,mor(${EXTEN})&lt;br /&gt;
 exten =&amp;gt; _X.,n,GotoIf($[&amp;quot;${MOR_CARD_USED}&amp;quot; != &amp;quot;&amp;quot;]?mor_callingcard,s,1)&lt;br /&gt;
 exten =&amp;gt; _X.,n,GotoIf($[&amp;quot;${MOR_ANIPIN_USED}&amp;quot; != &amp;quot;&amp;quot;]?mor_anipin,s,1)&lt;br /&gt;
 exten =&amp;gt; _X.,n,GotoIf($[&amp;quot;${DIALSTATUS}&amp;quot; = &amp;quot;BUSY&amp;quot;]?BUSY,1:HANGUP,1)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Asterisk dialplan should be reloaded each time this file is changed:&lt;br /&gt;
&lt;br /&gt;
 asterisk -rx &amp;quot;dialplan reload&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Configuration=&lt;br /&gt;
&lt;br /&gt;
Configuration file '''/etc/mor/system.conf'''&lt;br /&gt;
&lt;br /&gt;
'''prelocalization_location''' - Which location to use for prelocalization? Value should be Location ID.&amp;lt;br/&amp;gt;&lt;br /&gt;
'''prelocalization_global_rules''' - Should we include global rules? Value is either 1 or 0 (default 0).&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
  prelocalization_location_id = 17&lt;br /&gt;
  prelocalization_global_rules = 1&lt;br /&gt;
&lt;br /&gt;
Asterisk reload is required:&lt;br /&gt;
&lt;br /&gt;
 asterisk -rx &amp;quot;more reload&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Location rules=&lt;br /&gt;
&lt;br /&gt;
Prelocalization supports only '''Destination''' and '''Source''' rules. '''Combined''' rules are not supported.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Only '''Cut''', '''Add''', '''Min Len''' and  '''Max Len''' are applied when doing prelocalization.&lt;br /&gt;
&lt;br /&gt;
=Script output (X17 and older)=&lt;br /&gt;
&lt;br /&gt;
Prelocalization output is written to the Asterisk verbose log at the beginning of the call:&lt;br /&gt;
                                                                                                                                                                                                                        &lt;br /&gt;
 mor_prelocalization: MOR prelocalization AGI script started                                                                                                                                                                                  &lt;br /&gt;
 mor_prelocalization: Original destination number: 00370123456                                                                                                                                                                                &lt;br /&gt;
 mor_prelocalization: Original source number: +390000000&lt;br /&gt;
 mor_prelocalization: Original source name: test&lt;br /&gt;
 mor_prelocalization: Localized dst number: 370123456 (cut: 00, add: )&lt;br /&gt;
 mor_prelocalization: Localized src number: 390000000 (cut: +, add: )                                                                                                                                                                         &lt;br /&gt;
 mor_prelocalization: MOR prelocalization AGI script stopped&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=See also=&lt;br /&gt;
* [[MOR Localization]]&lt;br /&gt;
* [[Location Groups]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=MOR_Location_Groups&amp;diff=31390</id>
		<title>MOR Location Groups</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=MOR_Location_Groups&amp;diff=31390"/>
		<updated>2026-03-04T11:52:59Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Description =&lt;br /&gt;
&lt;br /&gt;
Used with [[MOR_Localization#Rules | Source Combined Rules]]. Helps reduce the number of rules.&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
&lt;br /&gt;
Click on Location Groups.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Location_groups_menu.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Create groups:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Location_groups.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Create rules:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Location_groups_rules.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Assign Location Group  ==&lt;br /&gt;
&lt;br /&gt;
Choose your Location Group in [[MOR_Localization#Rules | Source Combined Rules]]:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Location_groups_combined.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Origin Based Rating (OBR) | Call Charging on Location Base =&lt;br /&gt;
&lt;br /&gt;
Origin-Based Rating (OBR) is a billing mechanism that takes into account both the origination (where the call begins) and termination (where the call ends)of a call when calculating billing.&lt;br /&gt;
&lt;br /&gt;
In OBR, the cost of terminating a call depends on the country or region from which the call originated. This means that the terminating provider, often a mobile operator, applies additional fees or surcharges to the standard termination rates based on the caller's country code or geographic location.&lt;br /&gt;
&lt;br /&gt;
Essentially, OBR involves charging different rates for terminating calls based on the originating country, allowing telecom providers to adjust their fees accordingly. This method can result in varying call costs depending on the point of origin, enabling a more nuanced billing structure in the telecommunications industry.&lt;br /&gt;
&lt;br /&gt;
Origin-Based Rating (OBR) is supported by MOR, and here we will cover the following cases:&lt;br /&gt;
&lt;br /&gt;
# Call from EU to EU (Greece as an example)&lt;br /&gt;
# Call from non-EU to EU (Greece as an example)&lt;br /&gt;
# Call from non-EU to non-EU country&lt;br /&gt;
&lt;br /&gt;
In #1 and #2, the Greek number belongs to provider A with NRN 589000, and the Greek destination number is in the format 302XXXXXXXXX, which is made by [[MOR Prelocalization]]. &lt;br /&gt;
&lt;br /&gt;
Later, MNP adds Provider NRN 589000 to the 302XXXXXXXXX, and the call with Destination 589000302XXXXXXXXX comes to MOR Core Localization for further analysis. And here we will take care of it. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
== Case #1 - Call from EU to EU (Greece as an example) ==&lt;br /&gt;
&lt;br /&gt;
[[File:location_groups2.png]]&lt;br /&gt;
&lt;br /&gt;
With this rule, we determine that the call with Destination starting with 589000302 and CallerID from the EU should be routed to LCR10, and Tariff10 should be used. Only one rule covers all of Europe's CallerIDs, which are described in the Localization Group EU.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Case #2 - Call from non-EU to EU (Greece as an example) ==&lt;br /&gt;
&lt;br /&gt;
[[File:location_groups3.png]]&lt;br /&gt;
&lt;br /&gt;
With this rule, we determine that calls with a destination that starts with 589000302 and a CallerID from non-EU countries should be routed to LCR20, and Tariff200 should be used. Only one rule covers the whole of non-Europe's CallerIDs, which are described in the Localization Group non-EU.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
== Case #3 - Call from non-EU to non-EU country ==&lt;br /&gt;
&lt;br /&gt;
Here, no special rule is necessary. A simple destination rule can be used to change the tariff and/or LCR.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=See also=&lt;br /&gt;
* [[MOR Localization]]&lt;br /&gt;
* [[MOR Prelocalization]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=MOR_Device_Rule_Groups&amp;diff=31389</id>
		<title>MOR Device Rule Groups</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=MOR_Device_Rule_Groups&amp;diff=31389"/>
		<updated>2026-03-04T11:52:45Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- functionality available from MOR X12 --&amp;gt;&lt;br /&gt;
= Description =&lt;br /&gt;
&lt;br /&gt;
Device Rule Group is simply a group of [[MOR Device Rules]] which can be assigned to device. This allows easy sharing of common rules between devices, without copying same rules to different devices over and over again. For each device, Device rules consist of rules assigned to Device directly and rules from assigned Device Rule Group. Direct Device rules have higher priority than rules from Device Rule Group.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Usage =&lt;br /&gt;
Device Rule Groups is available under '''Billing-&amp;gt;Users-&amp;gt;Devices-&amp;gt;Device Rule Groups''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Device_Rule_Groups1.png]] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here you can list of Device Rule Groups and create a new Group:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Device_Rule_Groups2.png]] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Clicking on Rules Icon opens Rules page where you can actually enter desired rules for that Group:&lt;br /&gt;
&lt;br /&gt;
[[File:Device_Rule_Groups3.png]] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Device Rule Group can be assigned to device by clicking on already assigned device in Device Rule Group Device list and selecting another group, or in Device Edit window, as shown bellow:&lt;br /&gt;
&lt;br /&gt;
[[File:Device_Rule_Groups4.png]] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=See also=&lt;br /&gt;
* [[MOR Device Rules]]&lt;br /&gt;
* [[MOR Localization]]&lt;br /&gt;
* [[MOR Prelocalization]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=MOR_Prelocalization&amp;diff=31387</id>
		<title>MOR Prelocalization</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=MOR_Prelocalization&amp;diff=31387"/>
		<updated>2026-03-04T11:52:30Z</updated>

		<summary type="html">&lt;p&gt;Admin: Admin moved page Prelocalization to MOR Prelocalization&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Prelocalization allows to do '''additional''' [http://wiki.kolmisoft.com/index.php/Localization Localization] before any other action in MOR. Prelocalization is applied to incoming calls (calls to DID numbers) too.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= Purpose =&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;big&amp;gt;Prelocalization allows to greatly reduce the number of Localization rules.&amp;lt;/big&amp;gt;'''&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
MNP routing and EU/NonEU discrimination need a lot of rules in order to work. &amp;lt;br&amp;gt;&lt;br /&gt;
When calls come in from clients that can have one of the following formats (Greek example): &lt;br /&gt;
* 210XXXXXXX (national format)&lt;br /&gt;
* 30210XXXXXXX(E.164 format) &lt;br /&gt;
* +30210XXXXXXX (International format) &lt;br /&gt;
* 0030210XXXXXXX (international format)&amp;lt;br&amp;gt;&lt;br /&gt;
If prelocalization does not exist, then each rule applied to localization must be repeated for every dialing type, thus increasing the overall amount of rules. &amp;lt;br&amp;gt;&lt;br /&gt;
This is why prelocalization is needed, so we will avoid adding same rule multiple times in order to cover all dialing types from clients.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Example: In MNP environment prefixes are added to the destination numbers. These prefixes have to be removed using localization rules.&amp;lt;br&amp;gt;&lt;br /&gt;
If prefix added is 569000 then we will need 4 rules in order to solve this although with prelocalization we would only need one rule&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Without prelocalization rule:&lt;br /&gt;
&lt;br /&gt;
[[File:prelocalization_example1.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
If prelocalization rules exist, then before MNP prefix is added, or before localization is hit, number would already be localized e.g. 302XXXXXXXXX so we would only need 1 rule instead 4 for one prefix. &amp;lt;br&amp;gt;&lt;br /&gt;
Prelocalization greatly reduces amount of rules needed so if it exist we would only need following rule for the same case:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:prelocalization_example2.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=How to enable it=&lt;br /&gt;
''' From X17 Core version 27.0.33, this is no longer needed, continue with [[Prelocalization#Configuration]]'''&lt;br /&gt;
&lt;br /&gt;
'''Latest MOR X12 (or higher) version is required for this feature to work'''&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
!!! Please note that if your '''extensions_mor.conf''' contains '''_[A-Z0-9]!''' instead of '''_X.''' then all extensions described bellow should also be set to '''_[A-Z0-9]!'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Modify '''/etc/asterisk/extensions_mor.conf''' to include MOR prelocalization AGI script (at around 40th line, just above '''exten =&amp;gt; _X.,n,mor(${EXTEN})''')&lt;br /&gt;
&lt;br /&gt;
 exten =&amp;gt; _X.,1,NoOp(MOR starts)&lt;br /&gt;
 exten =&amp;gt; _X.,n,GotoIf($[&amp;quot;${MOR_DIAL_LOCAL_IVR}&amp;quot; != &amp;quot;&amp;quot;]?mor_dial_local_ivr,s,1)&lt;br /&gt;
 exten =&amp;gt; _X.,n,Gosub(diversion_settings,${EXTEN},1)&lt;br /&gt;
 exten =&amp;gt; _X.,n,Gosub(proxy_settings,${EXTEN},1)&lt;br /&gt;
 exten =&amp;gt; _X.,n,Set(__MOR_SIP_TO=${SIP_HEADER(To)})&lt;br /&gt;
 exten =&amp;gt; _X.,n,Set(TIMEOUT(response)=20)&lt;br /&gt;
 exten =&amp;gt; _X.,n,AGI(mor_prelocalization)  ;&amp;lt;--------------------------------------- ADD THIS LINE HERE ----------- !!!!&lt;br /&gt;
 exten =&amp;gt; _X.,n,mor(${EXTEN})&lt;br /&gt;
 exten =&amp;gt; _X.,n,GotoIf($[&amp;quot;${MOR_CARD_USED}&amp;quot; != &amp;quot;&amp;quot;]?mor_callingcard,s,1)&lt;br /&gt;
 exten =&amp;gt; _X.,n,GotoIf($[&amp;quot;${MOR_ANIPIN_USED}&amp;quot; != &amp;quot;&amp;quot;]?mor_anipin,s,1)&lt;br /&gt;
 exten =&amp;gt; _X.,n,GotoIf($[&amp;quot;${DIALSTATUS}&amp;quot; = &amp;quot;BUSY&amp;quot;]?BUSY,1:HANGUP,1)&lt;br /&gt;
&lt;br /&gt;
If you are using [[Mobile Number Portability Addon]], then this line should go BEFORE MNP addon line and should look like this:&lt;br /&gt;
&lt;br /&gt;
 exten =&amp;gt; _X.,1,AGI(mor_prelocalization)   ;&amp;lt;--------------------------------------- ADD THIS LINE HERE ----------- !!!!&lt;br /&gt;
 exten =&amp;gt; _X.,n,AGI(mor_mnp)&lt;br /&gt;
 exten =&amp;gt; _X.,n,GotoIf($[&amp;quot;${MOR_DIAL_LOCAL_IVR}&amp;quot; != &amp;quot;&amp;quot;]?mor_dial_local_ivr,s,1)&lt;br /&gt;
 exten =&amp;gt; _X.,n,Gosub(diversion_settings,${EXTEN},1)&lt;br /&gt;
 exten =&amp;gt; _X.,n,Gosub(proxy_settings,${EXTEN},1)&lt;br /&gt;
 exten =&amp;gt; _X.,n,Set(__MOR_SIP_TO=${SIP_HEADER(To)})&lt;br /&gt;
 exten =&amp;gt; _X.,n,Set(TIMEOUT(response)=20)&lt;br /&gt;
 exten =&amp;gt; _X.,n,Set(TIMEOUT(digit)=10)&lt;br /&gt;
 exten =&amp;gt; _X.,n,mor(${EXTEN})&lt;br /&gt;
 exten =&amp;gt; _X.,n,GotoIf($[&amp;quot;${MOR_CARD_USED}&amp;quot; != &amp;quot;&amp;quot;]?mor_callingcard,s,1)&lt;br /&gt;
 exten =&amp;gt; _X.,n,GotoIf($[&amp;quot;${MOR_ANIPIN_USED}&amp;quot; != &amp;quot;&amp;quot;]?mor_anipin,s,1)&lt;br /&gt;
 exten =&amp;gt; _X.,n,GotoIf($[&amp;quot;${DIALSTATUS}&amp;quot; = &amp;quot;BUSY&amp;quot;]?BUSY,1:HANGUP,1)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you are using system with Proxy solution, then this line should go AFTER proxy_settings and BEFORE MNP addon (if it is used):&lt;br /&gt;
&lt;br /&gt;
 exten =&amp;gt; _X.,1,GotoIf($[&amp;quot;${MOR_DIAL_LOCAL_IVR}&amp;quot; != &amp;quot;&amp;quot;]?mor_dial_local_ivr,s,1)&lt;br /&gt;
 exten =&amp;gt; _X.,n,Gosub(diversion_settings,${EXTEN},1)&lt;br /&gt;
 exten =&amp;gt; _X.,n,Gosub(proxy_settings,${EXTEN},1)&lt;br /&gt;
 exten =&amp;gt; _X.,n,AGI(mor_prelocalization)   ;&amp;lt;---------Prelocalization line should go after proxy and before mnp (if it is used)---------- !!!!&lt;br /&gt;
 exten =&amp;gt; _X.,n,AGI(mor_mnp)&lt;br /&gt;
 exten =&amp;gt; _X.,n,Set(__MOR_SIP_TO=${SIP_HEADER(To)})&lt;br /&gt;
 exten =&amp;gt; _X.,n,Set(TIMEOUT(response)=20)&lt;br /&gt;
 exten =&amp;gt; _X.,n,Set(TIMEOUT(digit)=10)&lt;br /&gt;
 exten =&amp;gt; _X.,n,mor(${EXTEN})&lt;br /&gt;
 exten =&amp;gt; _X.,n,GotoIf($[&amp;quot;${MOR_CARD_USED}&amp;quot; != &amp;quot;&amp;quot;]?mor_callingcard,s,1)&lt;br /&gt;
 exten =&amp;gt; _X.,n,GotoIf($[&amp;quot;${MOR_ANIPIN_USED}&amp;quot; != &amp;quot;&amp;quot;]?mor_anipin,s,1)&lt;br /&gt;
 exten =&amp;gt; _X.,n,GotoIf($[&amp;quot;${DIALSTATUS}&amp;quot; = &amp;quot;BUSY&amp;quot;]?BUSY,1:HANGUP,1)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Asterisk dialplan should be reloaded each time this file is changed:&lt;br /&gt;
&lt;br /&gt;
 asterisk -rx &amp;quot;dialplan reload&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Configuration=&lt;br /&gt;
&lt;br /&gt;
Configuration file '''/etc/mor/system.conf'''&lt;br /&gt;
&lt;br /&gt;
'''prelocalization_location''' - which Location to use for prelocalization? Value should be Location ID.&amp;lt;br/&amp;gt;&lt;br /&gt;
'''prelocalization_global_rules''' - should we include global rules? Value is either 1 or 0 (default 0).&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
  prelocalization_location_id = 17&lt;br /&gt;
  prelocalization_global_rules = 1&lt;br /&gt;
&lt;br /&gt;
Asterisk reload is required:&lt;br /&gt;
&lt;br /&gt;
 asterisk -rx &amp;quot;more reload&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Location rules=&lt;br /&gt;
&lt;br /&gt;
Prelocalization supports only '''Destination''' and '''Source''' rules. '''Combined''' rules are not supported.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Only '''Cut''', '''Add''', '''Min Len''' and  '''Max Len''' are applied when doing prelocalization.&lt;br /&gt;
&lt;br /&gt;
=Script output (X17 and older)=&lt;br /&gt;
&lt;br /&gt;
Prelocalization output is written to Asterisk verbose log at the beginning of the call:&lt;br /&gt;
                                                                                                                                                                                                                        &lt;br /&gt;
 mor_prelocalization: MOR prelocalization AGI script started                                                                                                                                                                                  &lt;br /&gt;
 mor_prelocalization: Original destination number: 00370123456                                                                                                                                                                                &lt;br /&gt;
 mor_prelocalization: Original source number: +390000000&lt;br /&gt;
 mor_prelocalization: Original source name: test&lt;br /&gt;
 mor_prelocalization: Localized dst number: 370123456 (cut: 00, add: )&lt;br /&gt;
 mor_prelocalization: Localized src number: 390000000 (cut: +, add: )                                                                                                                                                                         &lt;br /&gt;
 mor_prelocalization: MOR prelocalization AGI script stopped&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=See also=&lt;br /&gt;
* [[MOR Localization]]&lt;br /&gt;
* [[Location Groups]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=MOR_Manual&amp;diff=31386</id>
		<title>MOR Manual</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=MOR_Manual&amp;diff=31386"/>
		<updated>2026-03-04T11:51:58Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;iframe width=&amp;quot;640&amp;quot; height=&amp;quot;360&amp;quot; src=&amp;quot;https://www.youtube.com/embed/R65ufpHOz_g&amp;quot; title=&amp;quot;YouTube video player&amp;quot; frameborder=&amp;quot;0&amp;quot; allow=&amp;quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture&amp;quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;mkmeta&amp;gt;Detailed instructions how to use MOR Class 5 Softswitch&amp;lt;/mkmeta&amp;gt;&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;MOR is a Class 5 Softswitch with Billing and Routing with extended functionality, increased stability, and professional support directly from the developers. It enables VoIP providers to offer various services.&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= Introduction =&lt;br /&gt;
* [[Introduction]] [[Image:flag_esp.jpg|alt=&amp;quot;flag&amp;quot;|link=|right|link=Introduction (es)]]&lt;br /&gt;
* [[Who is this product designed for]]&lt;br /&gt;
* [[MOR Functionality]]&lt;br /&gt;
* [[Supported Business Models]]&lt;br /&gt;
* [[MOR Admin Interface|Admin Interface]]&lt;br /&gt;
* [[How to make first call|How to make a first call]] [[Image:flag_rus.jpg|alt=&amp;quot;flag&amp;quot;|link=|right|link=How to make first call (ru)]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Concepts/Definitions =&lt;br /&gt;
* [[MOR Terminology]]&lt;br /&gt;
* [[Billing Concepts]] [[Image:flag_rus.jpg|right|alt=&amp;quot;flag&amp;quot;|link=|link=Billing Concepts (ru)]]&lt;br /&gt;
* [[Billing Logic]]&lt;br /&gt;
* [[Call explained]]&lt;br /&gt;
* [[E.164]]&lt;br /&gt;
* [[Rounding]]&lt;br /&gt;
* [[Multi-Tax system]]&lt;br /&gt;
* [[What is a PIN?]]&lt;br /&gt;
* [[ASR/ACD]]&lt;br /&gt;
* [[Margin and Markup]]&lt;br /&gt;
* [[What are callgroups and pickupgroups|What are callgroups and pickupgroups?]]&lt;br /&gt;
* [[Balance and Credit]]&lt;br /&gt;
* [[Local Calls]]&lt;br /&gt;
* [[Prepaid Logic]]&lt;br /&gt;
* [[Authentication]]&lt;br /&gt;
* [[Fax over VoIP]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Configuration =&lt;br /&gt;
* [[mor.conf]]&lt;br /&gt;
* [[Performance Suggestions]]&lt;br /&gt;
* [[Configuration from GUI]]&lt;br /&gt;
** [[reCAPTCHA]]&lt;br /&gt;
** [[Payments configuration]]&lt;br /&gt;
** [[Default device settings]]&lt;br /&gt;
** [[Default_user|Default user settings]]&lt;br /&gt;
** [[Accountant permissions]]&lt;br /&gt;
** [[Logo change]]&lt;br /&gt;
** [[Currencies]]&lt;br /&gt;
** [[Translations]]&lt;br /&gt;
** [[Global_date_format | Global date format]]&lt;br /&gt;
** [[Remove Manual link from admin GUI]]&lt;br /&gt;
* [[Voicemail]]&lt;br /&gt;
* [[Multi Server support]]&lt;br /&gt;
* [[MOR White-labeling|White-labeling]]&lt;br /&gt;
* Emails&lt;br /&gt;
** [[Configuration_from_GUI#Emails|Email settings]]&lt;br /&gt;
** [[Emails|Mass Emails]]&lt;br /&gt;
** [[Email variables]]&lt;br /&gt;
* [[WebRTC]]&lt;br /&gt;
* [[Time Zone list]]&lt;br /&gt;
* [[MOR SIP Header Transformations]]&lt;br /&gt;
* [[MOR STIR/SHAKEN]]&lt;br /&gt;
* [[PJSIP Codec negotiation]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= [[MOR Number Manipulation | Number Manipulation]] =&lt;br /&gt;
* [[MOR Localization | Localization]]&lt;br /&gt;
* [[MOR Device Rules | Device Rules]]&lt;br /&gt;
** [[MOR Device Rule Groups | Device Rule Groups]]&lt;br /&gt;
* [[MOR Provider Rules | Provider Rules]]&lt;br /&gt;
* [[DID handling by Localization]]&lt;br /&gt;
* [[MOR Number Manipulation Examples | Number Manipulation Examples]]&lt;br /&gt;
* [[Block wrong short numbers with Localization]]&lt;br /&gt;
* [[MOR - LCR/Tariff change based on call prefix]]&lt;br /&gt;
* [[Prefix finder]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=[[Users]] =&lt;br /&gt;
* [[User Details]]&lt;br /&gt;
** [[Warning balance]]&lt;br /&gt;
** [[User Blocking]]&lt;br /&gt;
* [[Hide Users]]&lt;br /&gt;
* [[Why MOR does not allow to delete users|Why MOR does not allow users to be deleted]]&lt;br /&gt;
* [[How to create User and Device|How to create a User and Device]]&lt;br /&gt;
* [[MOR_forgot_user_password|How to reset lost GUI password]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= [[Devices]] =&lt;br /&gt;
* [[Device settings]]&lt;br /&gt;
** [[H323 Device settings]]&lt;br /&gt;
** [[Extension lines]]&lt;br /&gt;
** [[Ring several devices at same time]]&lt;br /&gt;
** [[How to create User and Device|How to create a User and Device]]&lt;br /&gt;
** [[Allowed Addresses]]&lt;br /&gt;
* [[Devices Bulk Create]]&lt;br /&gt;
* [[Trunks]]&lt;br /&gt;
* [[CLIs (Incoming CallerIDs)]]&lt;br /&gt;
** [[ANI/CLI ban system]]&lt;br /&gt;
* [[Duplicate call prevention]]&lt;br /&gt;
* [[Allow loss calls]]&lt;br /&gt;
* [[Device groups]]&lt;br /&gt;
* [[Call Flow]]&lt;br /&gt;
* [[Which codecs should I choose for devices|Which codecs should I choose for devices?]]&lt;br /&gt;
**[[Change_Audio/Video_Codecs_priority| Codecs priority]]&lt;br /&gt;
* [[Authentication|How to configure IP Authentication for Device]]&lt;br /&gt;
* [[Registration_Status|Device registration status]]&lt;br /&gt;
* [[MOR Device Rules]]&lt;br /&gt;
* [[Feature Codes]]&lt;br /&gt;
* [[Hide Device Password]]&lt;br /&gt;
* [[Disallow duplicate device usernames]]&lt;br /&gt;
* [[Disallow users to change their email]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= [[Providers]] =&lt;br /&gt;
&lt;br /&gt;
(also known as terminators, suppliers, vendors or trunks)&lt;br /&gt;
&lt;br /&gt;
* [[Terminators]]&lt;br /&gt;
* [[Provider with several IP|Provider with several IPs]]&lt;br /&gt;
* [[H323 Provider settings]]&lt;br /&gt;
* [[Provider with ANI]]&lt;br /&gt;
* [[Configure Provider which can make calls]]&lt;br /&gt;
* [[Configure Provider with dynamic IP]]&lt;br /&gt;
* [[Simultaneous call limitation]]&lt;br /&gt;
* [[NO ANSWER/BUSY interpretation for providers]]&lt;br /&gt;
* [[Provider_Deviations|Provider Deviations]]&lt;br /&gt;
* [[Provider AGI script]]&lt;br /&gt;
* Provider Configuration&lt;br /&gt;
** [[Net2phone configuration | Net2phone]]&lt;br /&gt;
** [[Broadvoice configuration | Broadvoice]]&lt;br /&gt;
** [[Eutelia]]&lt;br /&gt;
** [[IXC]]&lt;br /&gt;
** [[Configuring DIDWW | DIDWW]]&lt;br /&gt;
** [[Vitelity]]&lt;br /&gt;
** [[Vono]]&lt;br /&gt;
** [[How_to_add_Voicetrading_Provider|Voicetrading]]&lt;br /&gt;
** [[Portech GSM as Provider | Portech]]&lt;br /&gt;
** [[DID Logic]]&lt;br /&gt;
** [[Voxbeam]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= [[Tariffs]] =&lt;br /&gt;
* [[Directions and Destinations]]&lt;br /&gt;
** [[Destinations Groups]]&lt;br /&gt;
** [[Destination Groups Policy]]&lt;br /&gt;
** [[Block some Destination to User|Block a Destination to a User]]&lt;br /&gt;
** [[Export and bulk import of unassigned destinations]]&lt;br /&gt;
* [[Day setup]]&lt;br /&gt;
* [[Bulk change Tariffs for Users]]&lt;br /&gt;
* [[Wholesale Tariff | Wholesale]]&lt;br /&gt;
** [[Entering Rates for Wholesale Tariff]]&lt;br /&gt;
** [[Rate import from CSV]]&lt;br /&gt;
** [[Blocked Rates]]&lt;br /&gt;
* Retail&lt;br /&gt;
** [[Advanced Rates | Advanced (Retail) Rates]]&lt;br /&gt;
*** [[Entering Rates for Retail Tariff]]&lt;br /&gt;
*** [[Advanced Rates for Users| Advanced (Retail) Rates for Users]]&lt;br /&gt;
** [[Custom Rates]]&lt;br /&gt;
* [[Tariff Transformation]]&lt;br /&gt;
** [[Make Retail Tariff from Wholesale Tariff explained]]&lt;br /&gt;
* [[Why User can't check his Rates]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Call Routing =&lt;br /&gt;
* [[LCR]]&lt;br /&gt;
* [[LCR Logic]]&lt;br /&gt;
* [[How to add Provider to LCR]]&lt;br /&gt;
* [[Call Routing by price]]&lt;br /&gt;
* [[Call Routing by priority (Manual LCR)]]&lt;br /&gt;
* [[Call routing per destination basis]]&lt;br /&gt;
** [[How to route call to specific Destination through specific Provider]]&lt;br /&gt;
** [[How to block calls]]&lt;br /&gt;
** [[Blocked_Countries | How to block countries]]&lt;br /&gt;
** [[Block some Destination to User|Block a Destination to a User]]&lt;br /&gt;
* [[MOR - LCR/Tariff change based on call prefix]]&lt;br /&gt;
* [[Routing by Percent]] or Weight-based routing&lt;br /&gt;
* [[Why call was not routed through other provider/trunk?|Why was a call not routed through another provider/trunk?]]&lt;br /&gt;
* [[Intelligent Internal Routing]]&lt;br /&gt;
* Advanced [[extensions_mor_custom.conf]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= DIDs =&lt;br /&gt;
* [[DID Management]]&lt;br /&gt;
** [[Assign DID to Trunk]]&lt;br /&gt;
* [[Work flow for DID]]&lt;br /&gt;
* [[DID Billing]]&lt;br /&gt;
** [[DID Billing Time explained]]&lt;br /&gt;
* [[DIDs Usage]]&lt;br /&gt;
* [[Personal DIDs]]&lt;br /&gt;
* [[Example - Configuring DID to ring some Device]]&lt;br /&gt;
* [[PBX Function External DID]]&lt;br /&gt;
* [[Ring-Groups]]&lt;br /&gt;
* [[DID with VoxBone using his URI]]&lt;br /&gt;
* [[Forward DID to External Number]]&lt;br /&gt;
* [[How to charge DID on a monthly basis]]&lt;br /&gt;
* [[DID handling by Localization]]&lt;br /&gt;
* [[DID Blocking]]&lt;br /&gt;
* [[Dial Plans]]&lt;br /&gt;
** [[Authorization by PIN]]&lt;br /&gt;
** [[Authorization by ANI]]&lt;br /&gt;
** [[Calling Card Dial Plan]]&lt;br /&gt;
** [[Callback Dial Plan]]&lt;br /&gt;
** [[IVR Dial Plan]]&lt;br /&gt;
** [[STATISTICS - Various - DIDs]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= [[Accounting]] =&lt;br /&gt;
* [[Services]]&lt;br /&gt;
** [[Flat-Rates]]&lt;br /&gt;
* [[Subscriptions]]&lt;br /&gt;
* [[Invoices]]&lt;br /&gt;
** [[Invoice configuration]]&lt;br /&gt;
** [[Pay Invoice with balance deduction]]&lt;br /&gt;
** [[Invoice by CallerID]]&lt;br /&gt;
* [[Payments]]&lt;br /&gt;
* [[Vouchers]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Reporting =&lt;br /&gt;
* [[Active Calls]]&lt;br /&gt;
* [[Last Calls]]&lt;br /&gt;
* [[Local Calls Stats]]&lt;br /&gt;
* [[Users Calls]]&lt;br /&gt;
* [[Users Finances]]&lt;br /&gt;
* [[Loss Making Calls]]&lt;br /&gt;
* [[DIDs Report]]&lt;br /&gt;
* [[Providers Statistics]]&lt;br /&gt;
* [[Providers Calls]]&lt;br /&gt;
* [[Statement Of Account]]&lt;br /&gt;
* [[Aggregate]]&lt;br /&gt;
* [[First Activity]]&lt;br /&gt;
* [[Quick Stats]]&lt;br /&gt;
* [[Simultaneous Calls stats]]&lt;br /&gt;
* [[Calls by Source]]&lt;br /&gt;
* [[Login Stats]]&lt;br /&gt;
* [[Profit Stats]]&lt;br /&gt;
* [[Country Stats]]&lt;br /&gt;
* [[Hangup Cause Report]]&lt;br /&gt;
* [[Graphs]]&lt;br /&gt;
* [[Google Maps integration]]&lt;br /&gt;
** [[Get Google Maps key]]&lt;br /&gt;
* [[Balance in phone]]&lt;br /&gt;
* [[Privacy to hide Destination ends]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Troubleshooting =&lt;br /&gt;
&lt;br /&gt;
* [[Frequently_Asked_Questions_(FAQ) | Frequently Asked Questions]]&lt;br /&gt;
* [[Action log]]&lt;br /&gt;
* [[Call Tracing]]&lt;br /&gt;
* [[Integrity Check]]&lt;br /&gt;
* [[Hangupcause Codes]]&lt;br /&gt;
** [[H323 hangupcause codes]]&lt;br /&gt;
** [[Hangupcause Sounds]]&lt;br /&gt;
** [[Different code send to User compared to received from Provider]]&lt;br /&gt;
* [[Call Info]]&lt;br /&gt;
** [[Call log explanation]]&lt;br /&gt;
* [[SIP debug info]]&lt;br /&gt;
* [[Provider connection testing]]&lt;br /&gt;
* [[Asterisk CLI]]&lt;br /&gt;
** [[Watch active calls/channels in Asterisk server from CLI]]&lt;br /&gt;
** [[Get Asterisk CLI output for specific call]]&lt;br /&gt;
* [[MOR's Core version]]&lt;br /&gt;
* [[Lots of calls made by System Admin user]]&lt;br /&gt;
* [[Renew Devices]]&lt;br /&gt;
* [[Email log]]&lt;br /&gt;
* [[MOR forward Q.850 Reason header]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Maintenance = &lt;br /&gt;
&lt;br /&gt;
* [[How to restart Asterisk server]]&lt;br /&gt;
* [[Upgrade MOR GUI]]&lt;br /&gt;
* [[Lost MOR GUI admin password]]&lt;br /&gt;
* [[MOR Server Speedup]]&lt;br /&gt;
* [[Second Admin account]]&lt;br /&gt;
* [[Asterisk keepalive script]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Security =&lt;br /&gt;
* [[How to be secure using MOR]]&lt;br /&gt;
* [[MOR Change default passwords]]&lt;br /&gt;
* [[Blocking SIP Scanners]]&lt;br /&gt;
* [[MOR iptables Chains]]&lt;br /&gt;
* [[MOR two factor authentication]]&lt;br /&gt;
* [[How to set up SSL certificate with Let's Encrypt]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Testing =&lt;br /&gt;
&lt;br /&gt;
* [[VoIP Bandwidth Calculator]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Payment gateways =&lt;br /&gt;
&lt;br /&gt;
* [[Payment_Gateway_Addon | Payments Gateway Addon]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Other functionality =&lt;br /&gt;
* [[SIP Header Manipulation]]&lt;br /&gt;
* [[IVR system]]&lt;br /&gt;
** [[IVR for Calling Cards]]&lt;br /&gt;
** [[IVR Greeting for DID]]&lt;br /&gt;
* [[Callback]]&lt;br /&gt;
** [[WEB Callback]]&lt;br /&gt;
** [[Callback over Email]]&lt;br /&gt;
** [[MOR API callback init | API Callback_init]]&lt;br /&gt;
** [[Callback setup example]]&lt;br /&gt;
* [[PBX Functions]]&lt;br /&gt;
** [[Voicemail]]&lt;br /&gt;
** [[Dial Local]]&lt;br /&gt;
** [[PBX Function External DID|External DID]]&lt;br /&gt;
* [[Fax2Email]]&lt;br /&gt;
* [[Recordings Addon | Recordings]]&lt;br /&gt;
* [[PhoneBook]]&lt;br /&gt;
* [[Speed Dials]]&lt;br /&gt;
* [[Backup system]]&lt;br /&gt;
* [[Data import]]&lt;br /&gt;
* CDR&lt;br /&gt;
** [[CDR Import]]&lt;br /&gt;
** [[CDR Rerating]]&lt;br /&gt;
** [[CDR Disputes|CDR Disputes]]&lt;br /&gt;
* [[Online registration]]&lt;br /&gt;
** [[Online registration customization]]&lt;br /&gt;
* [[Quick Forwards]]&lt;br /&gt;
** [[Quickforwards rules]]&lt;br /&gt;
* [[Transfers with MOR]]&lt;br /&gt;
* [[GUI on Mobile Devices]]&lt;br /&gt;
* [[PBX connection to MOR]]&lt;br /&gt;
** [[MOR and Trixbox]]&lt;br /&gt;
* [[MOR API]]&lt;br /&gt;
** [[API Configuration]]&lt;br /&gt;
* [[Cron actions]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= [[MOR Addons|'''MOR Addons''']] =&lt;br /&gt;
* [[Limited Addons]]&lt;br /&gt;
* [[Automatic Tariff Import]]&lt;br /&gt;
* [[Auto-Dialer Addon]]&lt;br /&gt;
* [[Call Shop Addon]] &lt;br /&gt;
* [[Callback|Callback Addon]] &lt;br /&gt;
* [[Calling Cards Addon]]&lt;br /&gt;
* [[Mobile Number Portability Addon]]&lt;br /&gt;
* [[Monitorings Addon]]&lt;br /&gt;
** [[Spy_real-time_calls|Spy real-time calls]]&lt;br /&gt;
** [[Alerts]]&lt;br /&gt;
** [[Alert Groups]]&lt;br /&gt;
** [[Alert Schedules]]&lt;br /&gt;
** [[Dynamic Blacklist Functionality]]&lt;br /&gt;
* [[Payment Gateway Addon]]&lt;br /&gt;
* [[Recordings Addon]]&lt;br /&gt;
* [[Reseller Addon]]&lt;br /&gt;
* [[Reseller Pro Addon]]&lt;br /&gt;
* [[PBX_Functions_Addon | PBX Functions Addon]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Tutorials = &lt;br /&gt;
* [[Usual configuration sequence]]&lt;br /&gt;
** [[How to make first call]]&lt;br /&gt;
* [[How to create User and Device]]&lt;br /&gt;
* [[Dial Local | How to setup Dial Local function]]&lt;br /&gt;
* [[Calling Card setup example | How to setup Calling Cards]]&lt;br /&gt;
** [[How to setup Access Number to TopUp Card by CallerID]]&lt;br /&gt;
* [[Callback setup example | How to setup Callback]]&lt;br /&gt;
* [[Conference with MOR + Trixbox | How to setup Conferences using Trixbox]]&lt;br /&gt;
* [[How to forward the Call when Device is offline]]&lt;br /&gt;
* IVRs&lt;br /&gt;
** [[IVR for Calling Cards | How to setup IVR for Calling Cards]]&lt;br /&gt;
* DIDs&lt;br /&gt;
** [[Example - Configuring DID to ring some Device | How to configure DID to ring some Device]]&lt;br /&gt;
** [[Forward DID to External Number | How to forward DID to External Number]]&lt;br /&gt;
** [[How to charge DID on a monthly basis]]&lt;br /&gt;
** [[IVR Greeting for DID|How to add Greeting for DID]]&lt;br /&gt;
* [[How to configure 911 service]]&lt;br /&gt;
* [[Block some Destination to User | How to block a Destination to a User]]&lt;br /&gt;
* [[How to make several connections from one IP]]&lt;br /&gt;
* [[How to be secure using MOR]]&lt;br /&gt;
* [[How to change GUI port]]&lt;br /&gt;
* [[How to change qualify packets frequency]]&lt;br /&gt;
* [[MOR 10CC]]&lt;br /&gt;
* [[VitalPBX interconnection with MOR]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Old Manuals =&lt;br /&gt;
* [http://packets.kolmisoft.com/packets/docs/MOR_X4_Manual.pdf MOR X4 Manual]&lt;br /&gt;
* [http://packets.kolmisoft.com/packets/docs/MOR_X3_Manual.pdf MOR X3 Manual]&lt;br /&gt;
* [http://packets.kolmisoft.com/packets/docs/MOR_12_Manual.pdf MOR 12 Manual]&lt;br /&gt;
* [http://packets.kolmisoft.com/packets/docs/MOR_11_Manual.pdf MOR 11 Manual]&lt;br /&gt;
* [http://packets.kolmisoft.com/packets/docs/MOR_10_Manual.pdf MOR 10 Manual]&lt;br /&gt;
* [[Material for testing users]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=LCR&amp;diff=31385</id>
		<title>LCR</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=LCR&amp;diff=31385"/>
		<updated>2026-03-04T11:51:40Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Description=&lt;br /&gt;
&lt;br /&gt;
LCR (Least Cost Routing) is a set of Providers that should be used to send a call when trying to dial any destination - for example, by the cheapest rate. &lt;br /&gt;
&lt;br /&gt;
The correct name for such a function is a Routing Table because the function supports other ways of routing, not just finding the cheapest route.&lt;br /&gt;
&lt;br /&gt;
By default LCR supports fail-over. That is, if one provider fails, the next one is dialed. This is completely invisible for the caller and lets you increase the chances of the user reaching his destination. If one Provider is not capable of delivering a call, the system will try to use the remaining [[How_to_add_Provider_to_LCR | Providers]].&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
==Fail-over explanation==&lt;br /&gt;
&lt;br /&gt;
=== Use only first Provider in the row ===&lt;br /&gt;
&lt;br /&gt;
This option can allow/deny failover for LCR.&lt;br /&gt;
&lt;br /&gt;
When it is enabled it only allows the first Provider in the Routing Table/LCR to be used.&lt;br /&gt;
&lt;br /&gt;
Please note that when using ANI Authentication, a second query is made to get LCR info.&lt;br /&gt;
If this option is set to &amp;quot;Yes&amp;quot; on the first query, the second query will not change it.&lt;br /&gt;
&lt;br /&gt;
In other words - if the first LCR denies Failover, the second ANI LCR can't enable Failover.&lt;br /&gt;
&lt;br /&gt;
This is by design to avoid situations where the misconfiguration can create loops in the call flow.&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
&lt;br /&gt;
With such configuration:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[image:lcr_fo_case1.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
System will do following:&lt;br /&gt;
&lt;br /&gt;
* system tries to use &amp;quot;Kolmisoft PREMIUM&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
* if above fails, system tries to use &amp;quot;Kolmisoft STANDARD&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
* end.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
With such configuration:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[image:lcr_fo_case2.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
System will do following:&lt;br /&gt;
* system tries to use &amp;quot;Kolmisoft PREMIUM&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
* end.&lt;br /&gt;
&lt;br /&gt;
NOTE: if the original User is being changed by ANI, and if the original User has &amp;quot;Use only first Provider in the row&amp;quot; set to YES on its LCR, then even if resulting User LCR has &amp;quot;Use only first Provider in the row&amp;quot; set to NO, the system will act as it is set to YES. (See description above why it is so)&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
With such configuration:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[image:lcr_fo_case3.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The system will do the following:&lt;br /&gt;
* system tries to use &amp;quot;Kolmisoft PREMIUM&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
* if above fails, the system tries to use &amp;quot;Kolmisoft STANDARD&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
* if above fails, the system tries to use provider &amp;quot;112&amp;quot; even if its rate is higher than User rate;&lt;br /&gt;
&lt;br /&gt;
* end.&lt;br /&gt;
&lt;br /&gt;
It is possible to change User's tariff when the Failover provider is used. By default, the current User's tariff is used.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:failover_provider_user_tariff.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Usage=&lt;br /&gt;
&lt;br /&gt;
Go to '''SETTINGS –&amp;gt; Billing –&amp;gt; LCR'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:lcr_path.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Here you can see the list off all LCRs&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:lcr_main.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
* Name – name of LCR.&lt;br /&gt;
* Order – type of routing mode.&lt;br /&gt;
* Providers – quantity of providers in LCR. Click on it to [[How_to_add_Provider_to_LCR | Add Providers to LCR]]&lt;br /&gt;
* [[Call_routing_per_destination_basis | By destination]]&lt;br /&gt;
* Usage Details – the list of Users and Card Groups where this LCR is used.&lt;br /&gt;
* [[LCR make tariff | Make Tariff from LCR Providers to CSV]] – feature that gets you a CSV with the MIN/MAX prices selected from the list of Providers in LCR. Click on the [[Image:excel.png]] icon and the download should start automatically. (De-activated provider will be taken into CSV. &amp;quot;by Destination&amp;quot; will not be taken into CSV)&lt;br /&gt;
* LCR copy – press on icon to make LCR copy.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
==Supported routing modes==&lt;br /&gt;
&lt;br /&gt;
* [[Call Routing by price|By Price]] - cheapest first (Least Cost Routing).&lt;br /&gt;
* [[Call Routing by priority (Manual LCR) | By priority]].&lt;br /&gt;
* [[Routing by Percent| By percent]] or Weight-based routing.&lt;br /&gt;
&lt;br /&gt;
The user has one base LCR, so that all his calls are routed by some preset rule.&lt;br /&gt;
&lt;br /&gt;
It is possible to route different destinations for a User using [[Call routing per destination basis]].&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
==Creation==&lt;br /&gt;
Press [[Image:icon_add.png]]'''New LCR''' to create LCR.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=== VIDEO: How to create LCR ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
 &amp;lt;iframe width=&amp;quot;640&amp;quot; height=&amp;quot;360&amp;quot; src=&amp;quot;https://www.youtube.com/embed/7sCaBH35hXc&amp;quot; frameborder=&amp;quot;0&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt; &lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
==Additional Configuration==&lt;br /&gt;
&lt;br /&gt;
Go to LCRs list and press [[image:icon_edit.png]] icon. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:lcr_time_periods.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''First Providers percent limit''' - visible when order by Price is selected. If the following Providers will have higher prices by this percent compared to the first Provider, these Providers will be skipped. 0 value disables the use of this setting.&amp;lt;br&amp;gt;&lt;br /&gt;
'''Minimal Rate Margin Percent''' - use only those Providers which generate profit (per minute) equal or higher than defined percentage value in this field. For example, if you pay to your Provider 1 EUR/min and your Minimal Rate Margin Percent is set to 50%, then only calls with a user rate equal to or higher than 1.5 EUR/min are allowed to call. After 1 min of call, you will pay 1 EUR to your provider, and the user will pay you 1.5 EUR. Your profit will be 0.5 EUR which is 50% more of what you paid to your Provider. If your Minimal Rate Margin is -30%, then you allow some losses in your calls. If you pay 1 EUR to your Provider after 1 minute of call, then the user should pay you 0.7 EUR or more. You will pay 1 EUR and you will get 0.7 EUR which is 30% less than what you paid.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
===LCR Time Periods===&lt;br /&gt;
&amp;lt;!---This functionality is available from MOR X4---&amp;gt;&lt;br /&gt;
Sometimes there is such demand to change LCR for some time period. This functionality gives you the ability to do that. In the LCR Edit page time periods can be set. &lt;br /&gt;
&lt;br /&gt;
The time period defines the exact time period LCR will be active. There is a limit of five periods in one LCR. The rest of the time will be used the main LCR.&lt;br /&gt;
&lt;br /&gt;
The timezone in Time Periods is in the Server's (Linux) timezone.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Examples'''&lt;br /&gt;
&lt;br /&gt;
# Select '''Date''' from 1 of January to 28 of February and choose '''Hour : Minute''' from 09:00 to 18:59. Selected LCR will be used from 1 of January till 28 of February at time from 09:00 till 18:59.&lt;br /&gt;
# Select just '''Hour : Minute''' from 19:00 to 08:59 and selected LCR will be used every day at time from 19:00 till 08:59.&lt;br /&gt;
# Select '''Weekday''' from Monday to Friday and choose '''Hour : Minute''' from 13:00 to 15:59. Selected LCR will be used  every week from Monday till Friday at time from 13:00 till 15:59.&lt;br /&gt;
# Select '''Date''' from 1 of January to 31 of January and '''Weekday''' from Monday to Monday. Selected LCR will be used every Monday in January.&lt;br /&gt;
&lt;br /&gt;
If two periods overlap, then it is an undefined condition. There is no algorithm to prioritize one line over another. Avoid the overlap to ensure that the right LCR is used.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===LCR Loss Calls===&lt;br /&gt;
It is possible to enable Loss Calls per LCR. The default setting - unchecked.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:LCR_loss_calls.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
This setting allows you to decide whether you want to allow users a provider if the provider's rate to a destination is higher than the user's rate.&lt;br /&gt;
&lt;br /&gt;
By allowing such a call, you will pay more to the provider than the user pays to you for it, which means that you will take a loss on the call.&lt;br /&gt;
&lt;br /&gt;
==Copying LCRs between resellers==&lt;br /&gt;
&amp;lt;!---This functionality is available from MOR 12---&amp;gt;&lt;br /&gt;
Sometimes you need to make a LCR which takes quite a long time to make. If you have made a similar one before you can just copy it and change appropriate details. &lt;br /&gt;
&lt;br /&gt;
Go to '''SETTINGS''' -&amp;gt; '''Billing''' -&amp;gt; '''LCR''' -&amp;gt; '''Copy LCR'''&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:lcr_copy_path.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
You will see this window:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:lcr_copy.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Choose ''Original LCR reseller'' and ''Cloned LCR reseller'' and click ''Clone'' button.&lt;br /&gt;
&lt;br /&gt;
Please note that LCR will not be allowed to copy if reseller B is not allowed to use Providers which are used by Reseller A.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=See also=&lt;br /&gt;
&lt;br /&gt;
* [[LCR Logic]]&lt;br /&gt;
* [[How to add Provider to LCR]]&lt;br /&gt;
* [[Call Routing by price]]&lt;br /&gt;
* [[Call Routing by priority (Manual LCR) | Call Routing by priority ]]&lt;br /&gt;
* [[Routing by Percent | Call Routing by percent]] or Weight-based routing&lt;br /&gt;
* [[Call routing per destination basis]]&lt;br /&gt;
* [[MOR - LCR/Tariff change based on call prefix]]&lt;br /&gt;
* [[Why call was not routed through other provider/trunk?|Why was a call not routed through another provider/trunk?]]&lt;br /&gt;
* [[LCR_make_tariff|Make Tariff from LCR Providers to CSV]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=Tariffs&amp;diff=31384</id>
		<title>Tariffs</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=Tariffs&amp;diff=31384"/>
		<updated>2026-03-04T11:51:31Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;div align=&amp;quot;center&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;iframe width=&amp;quot;640&amp;quot; height=&amp;quot;360&amp;quot; src=&amp;quot;https://www.youtube.com/embed/q3M72nsN4Ts&amp;quot; title=&amp;quot;YouTube video player&amp;quot; frameborder=&amp;quot;0&amp;quot; allow=&amp;quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture&amp;quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Description=&lt;br /&gt;
&lt;br /&gt;
Tariffs are sets of rates (prices) to different destinations. There are three types of tariffs: providers wholesale (inbound), users wholesale (outbound) and users retail (outbound).&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
===Tariff types===&lt;br /&gt;
&lt;br /&gt;
There are three types of tariffs – '''Wholesale''', '''Retail''' and '''By Provider'''. Note that Tariffs for [[Providers]] type are also Wholesale. The difference between '''wholesale''' and '''retail''' tariffs is in the way rates are set for destinations.&lt;br /&gt;
&lt;br /&gt;
In wholesale tariffs, rates can be set to every destination possible (by prefix). In retail tariffs, destinations are grouped, which makes it possible to have lower rates. Wholesale and retail tariffs are used in different situations, and each type has its  advantages and disadvantages.&lt;br /&gt;
&lt;br /&gt;
The advantage for wholesale providers is the possibility of entering different rates for different destinations (prefixes). It is useful to set this tariff when you resell services to other providers.&lt;br /&gt;
&lt;br /&gt;
If your clients are retail end-users, it is better to use the retail tariff. They are easier to manage and understand for the final user.&lt;br /&gt;
&lt;br /&gt;
By Provider Tariff type is dynamic and adds fixed markup on top of the Provider's rates per Destination. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Usage=&lt;br /&gt;
&lt;br /&gt;
Go to '''SETTINGS –&amp;gt; Billing –&amp;gt; Tariffs'''.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:tariffs_path.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
You will see full list of all types of tariff:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:tariffs.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
* Click on [[Image:icon_add.png]]'''New tariff''' to create new tariff. &amp;lt;br&amp;gt;&lt;br /&gt;
* [[Image:excel.png]]'''Destinations CSV''' exports all destinations list. &amp;lt;br&amp;gt;&lt;br /&gt;
* Click on [[image:icon_edit.png]]'''Change Tariff for Users''' to [[Bulk change Tariffs for Users]].&lt;br /&gt;
* Search applied for searching tariffs where chosen prefix has rate.&lt;br /&gt;
* You can see two numbers in Rates count, for example 251/251. First number shows active rates number, the second number shows total rates number. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
===Wholesale Tariffs for Providers and for Users===&lt;br /&gt;
&lt;br /&gt;
As you can see in picture above there are ability to manage [[Image:coins.png]] '''[[Entering Rates for Wholesale Tariff | Rates ()]]''' manually,  [[Image:excel.png]][[Rate import from CSV|Import from CSV]], [[Rates Update|update Rates]] by Destination mask, delete all Rates form Tariff. Also you can [[Make Retail Tariff from Wholesale Tariff explained | Make user retail tariff]] from wholesale tariff or make new wholesale tariff from old one. When Tariff has [[Rate Effective From | Effective From]] Rates then Active Rates will be taken. Check your tariff rates by exporting CSV files. Click on [[Image:Details-icon.png]] icon to see list of places, where this Tariff is assigned.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Effective From date'''&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;!--Available from MOR X5--&amp;gt;&lt;br /&gt;
Wholesale's Tariff Rates lists has column named [[Rate Effective From | Effective from]] which shows the date when the rate specified becomes active. This date cannot be changed or created in GUI, it can be added to GUI through [[Rate import from CSV |Tariff import]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
===Retail Tariffs===&lt;br /&gt;
&lt;br /&gt;
As you can see in picture above there is an ability to manage [[Image:coins.png]] '''[[Entering Rates for Retail Tariff | Rates]]''' manually and to delete all rates from tariff. Check your tariff rates by exporting CSV files. Click on [[Image:Details-icon.png]] icon to see list of places, where this tariff is assigned.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Click on '''Make User Retail Tariff''' to make a new Retail Tariff from current.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:MakeRetailTariff.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
*Tariff name: New tariff name&lt;br /&gt;
*Add Rate amount to all Minutes: Add a value to current rates. It is possible to add a Percentage or Value, for example, 10% or 0.1. Input length is limited to 20 characters.&lt;br /&gt;
*Add Rate amount to all Events: Add a value to all Events. Events and Minutes are also a part of [[Advanced Rates]]. Input length is limited to 20 characters.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===By Provider Tariffs (Dynamic Tariff Type) ===&lt;br /&gt;
&lt;br /&gt;
'''Dynamic User Tariff by Provider Tariff''' allows to avoid repetitive work with Rates import for End Users every time Provider changes his Price sheets. When this Tariff is assigned to User, his rates will depend on Provider's rates. You can manage User's billing by changing delta value and delta percent in this type of Tariff. For example, if you set delta percent to be 10%, then User will be billed by Provider's rate plus 10% of that rate. Your profit will be 10% of your selfcost.&lt;br /&gt;
Click on [[Image:Details-icon.png]] icon to see list of places, where this tariff is assigned.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=From Accountant=&lt;br /&gt;
&lt;br /&gt;
Accountant must have [[Accountant permissions]] to manage Admins Tariffs.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=From Reseller/Reseller PRO=&lt;br /&gt;
&lt;br /&gt;
Resellers have their own tariffs list and they are able to manage them independent from Admin.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=See also=&lt;br /&gt;
&lt;br /&gt;
* [[Entering Rates for Wholesale Tariff]]&lt;br /&gt;
* [[Entering Rates for Retail Tariff]]&lt;br /&gt;
* [[Advanced Rates]]&lt;br /&gt;
* [[Rate import from CSV]]&lt;br /&gt;
* [[Importing Tariffs from CSV with wrong Regional Settings]]&lt;br /&gt;
* [[Make Retail Tariff from Wholesale Tariff explained]]&lt;br /&gt;
* [[Bulk change Tariffs for Users]]&lt;br /&gt;
* [[Day setup]]&lt;br /&gt;
* [[MOR - LCR/Tariff change based on call prefix]]&lt;br /&gt;
* [[Change Tariff for Connection Points]]&lt;br /&gt;
* [[How to copy a Tariff]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=MOR_Localization&amp;diff=31383</id>
		<title>MOR Localization</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=MOR_Localization&amp;diff=31383"/>
		<updated>2026-03-04T11:51:08Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Description =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;'''Localization transforms received number to E.164 format number.'''&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The main idea of localization is: '''No matter how the user dials the number (destination), when localized it should be in E.164 format.'''&lt;br /&gt;
&lt;br /&gt;
Localization has nothing in common with the numbers you send to providers. It operates with numbers received from the caller.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Depending on the device's physical location, it is often important to allow users to dial numbers in different formats to reach a destination. For this purpose, each device has a field called '''Location''', which describes the device's physical location and defines rules for how the device can dial a destination. In other words, each device IS in (or belongs to) some Location where specific dialing rules apply.&lt;br /&gt;
&lt;br /&gt;
'''Location describes where a caller IS - not where he is calling to!'''&lt;br /&gt;
&lt;br /&gt;
By default, a device has the location 'Global'. Global rules apply to ALL devices. If a device belongs to some other location and the dialed destination has some rule for this destination, then global rules are not activated – they have a lower priority in location rules.&lt;br /&gt;
&lt;br /&gt;
You can access Localization settings in '''SETTINGS –&amp;gt; Billing –&amp;gt; Functions –&amp;gt; Localization'''.&lt;br /&gt;
&lt;br /&gt;
In the main window, you can see the available Locations:&lt;br /&gt;
&lt;br /&gt;
[[Image:localization1.png]]&lt;br /&gt;
&lt;br /&gt;
At first, there is only the Global location. You can't delete this location. It's the default for all devices.&lt;br /&gt;
&lt;br /&gt;
You can add a new Location by entering this Location's name in the field at the bottom of the table:&lt;br /&gt;
&lt;br /&gt;
[[Image:localization2.png]]&lt;br /&gt;
&lt;br /&gt;
and clicking [[Image:add.png]]:&lt;br /&gt;
&lt;br /&gt;
[[Image:localization3.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
== Clone ==&lt;br /&gt;
&lt;br /&gt;
Additionally, you can make a copy of your current Localization rules by clicking the copy icon:&lt;br /&gt;
&lt;br /&gt;
[[Image:Localization_copy_function.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Rules ==&lt;br /&gt;
&lt;br /&gt;
In the Rules column, click the Rules icon to access the Location's rules:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Editbutton.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Localization_rules.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Destination Rules''' – Changes Destination number.&lt;br /&gt;
&lt;br /&gt;
'''CallerID Rules''' – Changes source number.&lt;br /&gt;
&lt;br /&gt;
'''Combined Rules''' – Change Destination number and Source number. Please note that both Destination and Source cells must be matched to apply Combined Rules. Special symbols * and # do not work in combined rules.&lt;br /&gt;
&lt;br /&gt;
'''Priority of rules that are applied first:'''&lt;br /&gt;
* 1) CallerID Rules&lt;br /&gt;
* 2) Combined Rules&lt;br /&gt;
* 3) Destination Rules&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Note that if the match is found in &amp;quot;Combined Rules&amp;quot;, &amp;quot;Destination Rules&amp;quot; are skipped entirely.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=== Removing or adding a prefix ===&lt;br /&gt;
&lt;br /&gt;
To remove a prefix from the dialed number (destination), add a '''Destination Rule''': set '''Cut''' to the prefix you want to remove and '''Add''' to the replacement (if any). You do not need to change the call's owner.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
To remove a prefix from the caller ID (source), use a '''CallerID Rule''' with '''Cut''' and '''Add''' in the same way.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The '''Change Call's owner''', '''Route to DID''', '''Change CallerID Name''', '''Change User LCR to this LCR''', and '''Change User Tariff to this Tariff''' fields are optional; use them only when you need that specific behaviour. They are not required to remove or add a prefix – only '''Cut''' and '''Add''' are needed for that.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=== Rule fields ===&lt;br /&gt;
&lt;br /&gt;
The following settings should be explained for rules:&lt;br /&gt;
&lt;br /&gt;
* '''Name''' – just for informational purposes.&lt;br /&gt;
* '''Cut''' – what prefix should be cut from the number.&lt;br /&gt;
* '''Add''' – what prefix should be added to the number.&lt;br /&gt;
* '''Min Len''' – the minimum length of the number to which the rule is being applied.&lt;br /&gt;
* '''Max Len''' – the maximum length of the number to which the rule is being applied.&lt;br /&gt;
* '''Change User Tariff to this Tariff''' – optional; which Tariff to apply when this rule is applied. Used in special cases, for example [[MOR - LCR/Tariff change based on call prefix | here]]. Leave empty in most cases; not required to remove or add a prefix.&lt;br /&gt;
* '''Change User LCR to this LCR''' – optional; which LCR to apply when this rule is applied. Used in special cases, for example [[MOR - LCR/Tariff change based on call prefix | here]]. Leave empty in most cases; not required to remove or add a prefix.&lt;br /&gt;
* '''Route to DID''' – optional; allows routing calls to DID according to localization rules. Not required to remove or add a prefix.&lt;br /&gt;
* '''Change CallerID Name''' – optional; changes the caller ID name when this rule is applied. Not required to remove or add a prefix.&lt;br /&gt;
* '''Change Call's owner''' – optional; changes the owner of the call depending on the incoming tech prefix. Use only when you need to route the call to a specific user; no prefix is required to remove or add.&lt;br /&gt;
* '''Enter edit mode''' - lets you change all rules at one time.&lt;br /&gt;
&lt;br /&gt;
When you have entered all the necessary values (Cut or Add can be left empty), click [[Image:add.png]].&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
* The normal Lithuania MOB prefix is 3706.&lt;br /&gt;
* The user's device is located in Vilnius, Lithuania (displayed as &amp;quot;Lithuania Vilnius&amp;quot;).&lt;br /&gt;
* By current Lithuanian regulations, the local customer can dial 9-digit numbers starting with 86 to reach Mobile subscribers.&lt;br /&gt;
&lt;br /&gt;
To describe this situation, we create the following rule:&lt;br /&gt;
&lt;br /&gt;
[[Image:localization_5_2.png]]&lt;br /&gt;
&lt;br /&gt;
Rules can be enabled or disabled by clicking the [[Image:check.png]] icon or [[Image:cross.png]] in the '''Enabled?''' column.&lt;br /&gt;
* [[Image:edit.png]]- This icon allows you to edit the details of the rule.&lt;br /&gt;
* [[Image:cross.png]]- This icon allows you to delete the rule.&lt;br /&gt;
&lt;br /&gt;
Now, in the main '''Localization''' window:&lt;br /&gt;
&lt;br /&gt;
[[Image:localization6.png]]&lt;br /&gt;
&lt;br /&gt;
click on [[Image:view.png]] in the '''Devices''' column to access '''Devices''' in Global '''Location''':&lt;br /&gt;
&lt;br /&gt;
[[Image:localization7.png]]&lt;br /&gt;
&lt;br /&gt;
Here, all Devices with a selected location are listed. Choose other locations for the selected Device and click on [[Image:check.png]] icon to activate this change. The device will be assigned to the selected Location.&lt;br /&gt;
&lt;br /&gt;
[[Image:localization8.png]]&lt;br /&gt;
&lt;br /&gt;
'''NOTE''': It's possible to change a device's Location in the Device settings ('''SETTINGS –&amp;gt; Users –&amp;gt; Devices''').&lt;br /&gt;
&lt;br /&gt;
Now our device belongs to Location &amp;quot;Lithuania Vilnius&amp;quot;. And if we dial a mobile number in the Lithuanian format, for example, 863042439, MOR cuts 86 (leaving 3042439) and adds 3706. The result is 37063042439, which is E.164 compatible and can be billed correctly by MOR.&lt;br /&gt;
&lt;br /&gt;
'''NOTE''': Make sure that after localization, your number is always E.164 compatible. [[Call Tracing]] can help you do this.&lt;br /&gt;
&lt;br /&gt;
'''NOTE''': You cannot delete a rule if it is assigned to a device.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Special cases =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
== Cut everything till Hash ==&lt;br /&gt;
&amp;lt;!-- 	''This option is available starting from [[MOR_9_documentation | MOR 9]]''. --&amp;gt;&lt;br /&gt;
With rule '''Cut: *#''' it is possible to cut everything till # (# included) in the dialed destination:&lt;br /&gt;
&lt;br /&gt;
[[Image:Loc_cut_till_hash_2.png]]&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
* Dialed number:  1aaaaaaaaa#37063042439&lt;br /&gt;
* After Localization: 37063042439&lt;br /&gt;
&lt;br /&gt;
Please note that if the dialed number is #37063042439, the call will not go through, because MOR rejects destinations with # in front of it.&lt;br /&gt;
&lt;br /&gt;
This function can be used in fancy MNP (Mobile Number Portability) schemes and perhaps elsewhere.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
NOTE: The '''Add''' value still can be used to add any value after '''Cut''' is used on the Destination.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
== Cut any digits after a specific prefix ==&lt;br /&gt;
&lt;br /&gt;
Works only with Destination and Combined rules.&lt;br /&gt;
&lt;br /&gt;
Cut pattern accepts &amp;quot;x&amp;quot; which indicates any digit:&lt;br /&gt;
&lt;br /&gt;
'''Cut: 12xxx''' &amp;lt;br&amp;gt;&lt;br /&gt;
will cut '''first 5 digits''' from the number which starts with digits &amp;quot;12&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If there are two rules like&lt;br /&gt;
&lt;br /&gt;
'''Cut: 12xxx'''&lt;br /&gt;
&lt;br /&gt;
'''Cut: 1234x'''&lt;br /&gt;
&lt;br /&gt;
and a number&lt;br /&gt;
&lt;br /&gt;
'''12345'''&lt;br /&gt;
&lt;br /&gt;
then the rule '''Cut: 1234x''' will be selected because it matches most of the digits exactly.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Example1:&lt;br /&gt;
&lt;br /&gt;
If we have a rule&lt;br /&gt;
&lt;br /&gt;
'''Cut: 12xxx'''&lt;br /&gt;
&lt;br /&gt;
'''Add: 99'''&lt;br /&gt;
&lt;br /&gt;
Then all the following dialled numbers&lt;br /&gt;
&lt;br /&gt;
1200012345&lt;br /&gt;
&lt;br /&gt;
1257812345&lt;br /&gt;
&lt;br /&gt;
1298712345&lt;br /&gt;
&lt;br /&gt;
will be modified to&lt;br /&gt;
&lt;br /&gt;
9912345&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example2:&lt;br /&gt;
&lt;br /&gt;
If we have a rule&lt;br /&gt;
'''Cut: 123xxx78'''&lt;br /&gt;
&lt;br /&gt;
'''Add: 78'''&lt;br /&gt;
&lt;br /&gt;
Then all numbers starting from 12300078 till 12399978 will be localised to start with 78&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Change LCR/Tariff when CallerID is empty ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
This is an '''optional''' feature for special cases (e.g. applying a different LCR or Tariff when the caller ID is missing).&lt;br /&gt;
&lt;br /&gt;
To change LCR/Tariff when CallerID is empty, set the following in Source Localization:&lt;br /&gt;
&lt;br /&gt;
'''Cut: *'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''Min Len: 0'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''Max Len: 0'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and then choose the LCR/Tariff you want to set for calls without CallerID.&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Reseller localizations =&lt;br /&gt;
The reseller is not using the admin's global localization rules. Instead, he can now copy the rules and modify them to suit his needs. All newly created resellers have those global rules copied automatically from the admin. This feature can be disabled by the admin in [[Reseller_Settings|Reseller Settings]].&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Copy_rules.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''IMPORTANT''': Fields &amp;quot;Change User Tariff to this Tariff&amp;quot; and &amp;quot;Change User LCR to this LCR&amp;quot; will not be copied.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;quot;Default location&amp;quot; does not act as &amp;quot;Global location&amp;quot; on the reseller's account. Only the rules set in the device's settings will be applied.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Route to DID =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
This is an '''optional''' feature. Admin and Reseller PRO users can route calls to a DID according to localization rules.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Localization9.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Start typing the DID number, and you will see all the DIDs that start with that number. If the DID you need is not there, enter more digits - only the first 20 DIDs starting with that number are shown.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= Change owner of call depending on incoming prefix =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
This is an '''optional''' feature for routing the call to a specific user based on the incoming tech prefix.&lt;br /&gt;
&lt;br /&gt;
It is now possible to change the call owner based on the incoming tech prefix.&lt;br /&gt;
&lt;br /&gt;
* Open the localization menu to find the &amp;quot;Change Call's Owner&amp;quot; field.&lt;br /&gt;
[[File:localization8_5.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Enter the incoming prefix that needs to be cut in the &amp;quot;Cut&amp;quot; section.&lt;br /&gt;
* Afterwards, choose a user from the drop-down list and the device to which the call should be assigned.&lt;br /&gt;
[[File:Change_owner2.png]]&lt;br /&gt;
* This feature is also available for resellers.&lt;br /&gt;
* Admin can assign the call to ANY user on the system (even to those that do not belong to the admin).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= See also =&lt;br /&gt;
&lt;br /&gt;
* [[MOR Number Manipulation]]&lt;br /&gt;
** [[MOR Device Rules]]&lt;br /&gt;
** [[MOR Provider Rules]]&lt;br /&gt;
** [[DID handling by Localization]]&lt;br /&gt;
** [[MOR Number Manipulation Examples]]&lt;br /&gt;
* [[Prelocalization]]&lt;br /&gt;
* [[Location Groups]]&lt;br /&gt;
* [http://www.wtng.info/wtng-reg.html World Telephone Numbering Guide]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=Mobile_Number_Portability_Addon&amp;diff=31382</id>
		<title>Mobile Number Portability Addon</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=Mobile_Number_Portability_Addon&amp;diff=31382"/>
		<updated>2026-03-04T11:50:52Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!---This functionality is available from MOR 8---&amp;gt;&lt;br /&gt;
[http://en.wikipedia.org/wiki/Mobile_number_portability Mobile number portability (MNP)] enables mobile telephone users to retain their mobile telephone numbers when changing from one mobile network operator to another.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
MNP Addon for MOR allows the system owner to check if the number belongs to another network and, if so, route it through different providers or bill it with a different price.&lt;br /&gt;
&lt;br /&gt;
The current implementation allows saving numbers in a MySQL database on any server (not necessarily the local server).&lt;br /&gt;
&lt;br /&gt;
Before each call, MOR MNP Addon checks the dialed number and, if it is found in the database, adds a prefix to it.&lt;br /&gt;
&lt;br /&gt;
By prefixing MOR, you can set different routing (LCR) or billing (Tariff) for this number. [[MOR Localization | Localization rules]] should be used to perform these actions.&lt;br /&gt;
&lt;br /&gt;
Detailed technique is described here: [[MOR - LCR/Tariff change based on call prefix]]&lt;br /&gt;
&lt;br /&gt;
Kolmisoft cannot create a unique database for all MNP services across all countries worldwide. MOR admin has to&lt;br /&gt;
&lt;br /&gt;
manually enter numbers in the MNP database (process described below) in order for this solution to work. 'mor_mnp' database has&lt;br /&gt;
&lt;br /&gt;
to contain only the necessary data (telephone numbers).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= Installation =&lt;br /&gt;
&lt;br /&gt;
Do such steps:&lt;br /&gt;
&lt;br /&gt;
1. Update MOR scripts:&lt;br /&gt;
 rm -fr /usr/src/mor&lt;br /&gt;
 svn co http://svn.kolmisoft.com/mor/install_script/trunk/ /usr/src/mor&lt;br /&gt;
2. Run MNP installation script:&lt;br /&gt;
 /usr/src/mor/sh_scripts/install_mnp.sh&lt;br /&gt;
3. Depending on MOR version:&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''MOR X16 (or older)'''&lt;br /&gt;
&lt;br /&gt;
Run the script, which will update Asterisk extlines to work with the MNP database:&lt;br /&gt;
 /usr/src/mor/test/scripts/asterisk/mnp_cfgs.sh&lt;br /&gt;
&lt;br /&gt;
'''MOR X17 (or later)'''&lt;br /&gt;
&lt;br /&gt;
Starting from MOR X17, enable MNP in /etc/asterisk/mor.conf&lt;br /&gt;
&lt;br /&gt;
 mnp_enabled = 1&lt;br /&gt;
 asterisk -rx &amp;quot;mor reload.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
== How to see if MNP works ==&lt;br /&gt;
&lt;br /&gt;
Open Asterisk CLI. During the call, check the very first lines shown in the CLI. In about the 10th line, you should be able to see lines like that:&lt;br /&gt;
&lt;br /&gt;
'''MOR X16 (or older)'''&lt;br /&gt;
&lt;br /&gt;
     -- Launched AGI Script /var/lib/asterisk/agi-bin/mor_mnp&lt;br /&gt;
 mor_mnp: &lt;br /&gt;
 mor_mnp: MOR MNP AGI script started.&lt;br /&gt;
 mor_mnp: Successfully connected to the database.&lt;br /&gt;
 mor_mnp: Extension: 37012312345&lt;br /&gt;
 mor_mnp: New extension: 37012312345&lt;br /&gt;
 mor_mnp: MOR MNP AGI script stopped.&lt;br /&gt;
 mor_mnp: &lt;br /&gt;
&lt;br /&gt;
'''MOR X17 (or later)'''&lt;br /&gt;
&lt;br /&gt;
In the call log, the following line should be visible:&lt;br /&gt;
&lt;br /&gt;
 [2023-01-17 15:32:03] NOTICE[10659][C-00000007]: app_mor_various.c:4088 _mor_log: Checking number 37012312345 in MNP database&lt;br /&gt;
&lt;br /&gt;
Also, check the output of '''asterisk -rx &amp;quot;mor show status&amp;quot;''', you should see MNP status:&lt;br /&gt;
&lt;br /&gt;
 MNP enabled: 1, MNP active: 1&lt;br /&gt;
&lt;br /&gt;
MNP enabled - shows if MOR core is aware of MNP existence.&amp;lt;br&amp;gt;&lt;br /&gt;
MNP active - shows if MOR core successfully connected to MNP database.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you cannot see it. Something is wrong with the configuration.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Upgrade/Update =&lt;br /&gt;
&lt;br /&gt;
After [[Upgrade_MOR_GUI |MOR Upgrade]] or Update run /usr/src/mor/test/scripts/asterisk/mnp_cfgs.sh&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Database =&lt;br /&gt;
&lt;br /&gt;
Config to DB in: ''/usr/local/mor/mor_mnp.conf''&lt;br /&gt;
&lt;br /&gt;
It should be a MySQL database mor_mnp:&lt;br /&gt;
&lt;br /&gt;
 DROP TABLE IF EXISTS `numbers`;&lt;br /&gt;
 CREATE TABLE `numbers` (&lt;br /&gt;
  `number` varchar(50) NOT NULL,&lt;br /&gt;
  `prefix` varchar(20) NOT NULL,&lt;br /&gt;
  PRIMARY KEY  (`number`),&lt;br /&gt;
  UNIQUE KEY `number` (`number`)&lt;br /&gt;
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make sure you have set the correct MySQL permissions for the mor_mnp database, and that local or remote Asterisk has the correct settings in /usr/local/mor/mor_mnp.conf. If your number is still not recognized, double-check if you have it in your mor_mnp database!&lt;br /&gt;
&lt;br /&gt;
An example of how to set MySQL permissions:&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
 GRANT REPLICATION SLAVE , REPLICATION CLIENT ON * . * TO 'mor'@'localhost' IDENTIFIED BY 'mor' WITH MAX_QUERIES_PER_HOUR 0&lt;br /&gt;
 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;&lt;br /&gt;
&lt;br /&gt;
 GRANT ALL PRIVILEGES ON `mor_mnp` . * TO 'mor'@'localhost' WITH GRANT OPTION ;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= How to use MNP =&lt;br /&gt;
&lt;br /&gt;
You need to insert two values in mor_mnp database. These values are a number and a prefix.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
To manage the mor_mnp database, you can use PhpMyAdmin:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;http://&amp;lt;your server IP&amp;gt;/mordbadmin&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
PhpMyAdmin login details can be found in the file /root/phpMyAdminPassword&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
If after logging in to PhpMyAdmin, the MySQL login page will appear, use these details to log in to MySQL:&lt;br /&gt;
&lt;br /&gt;
username: mor&lt;br /&gt;
&lt;br /&gt;
password: mor&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Now click &amp;quot;_mnp (1)&amp;quot; menu item on the left to select mor_mnp database.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;numbers&amp;quot; menu item will appear after that.&lt;br /&gt;
&lt;br /&gt;
Click on the &amp;quot;numbers&amp;quot; menu item to manage the number table.&lt;br /&gt;
&lt;br /&gt;
Now, click on the &amp;quot;Insert&amp;quot; tab at the top of the page.&lt;br /&gt;
&lt;br /&gt;
The field number and prefix will appear.&lt;br /&gt;
&lt;br /&gt;
Enter desired values and click &amp;quot;Go&amp;quot; to insert these values.&lt;br /&gt;
&lt;br /&gt;
Done!&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= Number localization =&lt;br /&gt;
&lt;br /&gt;
In situations when a number can be dialed in multiple ways, you can set '''mnp_prefixes''' variable in '''/usr/local/mor/mor_mnp.conf'''.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example, if number 123456789 can be dialed with the following prefixes '''00370'''123456789, '''370'''123456789, '''8'''123456789, then you can set '''mnp_prefixes''' variable with the following prefixes:&lt;br /&gt;
&lt;br /&gt;
 mnp_prefixes = 00370,370,8&lt;br /&gt;
&lt;br /&gt;
Then you will be able to upload only a single number 123456789 into the MNP database, and this number will be matched when the client dials '''00370'''123456789, '''370'''123456789 or '''8'''123456789.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= MNP tags in SIP INVITE =&lt;br /&gt;
&lt;br /&gt;
MNP tags (npdi and rn) can be enabled by setting '''Enable MNP tags''' to '''yes''' in Provider configuration.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If MNP tags are enabled and MNP lookup was successful, then npdi and rn tags will be added to SIP INVITE:&lt;br /&gt;
&lt;br /&gt;
 INVITE sip:DST_NUMBER;npdi;rn=MNP_NUMBER@IP SIP/2.0&lt;br /&gt;
&lt;br /&gt;
here: &lt;br /&gt;
&lt;br /&gt;
* DST_NUMBER - localized destination number, for example, +370123456789&lt;br /&gt;
* MNP_NUMBER - localized destination number with MNP prefix, for example +370'''999'''123456789&lt;br /&gt;
&lt;br /&gt;
If the number is not found in the MNP database, then only the npdi tag will be added to SIP INVITE:&lt;br /&gt;
&lt;br /&gt;
 INVITE sip:DST_NUMBER;npdi@IP SIP/2.0&lt;br /&gt;
&lt;br /&gt;
here:&lt;br /&gt;
&lt;br /&gt;
* DST_NUMBER - localized destination number, for example, +370123456&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Note''' that only SIP INVITE requests will be modified. Other SIP headers (such as TO, FROM) are not affected by '''Enable MNP tags''' setting.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= How to import numbers from CSV =&lt;br /&gt;
&lt;br /&gt;
There is no such option to import numbers from CSV in the MOR GUI, but numbers can be imported directly to the MNP database.&lt;br /&gt;
&lt;br /&gt;
This procedure is described here:&lt;br /&gt;
&lt;br /&gt;
1. You need to have a CSV file on your server, and the file should look like this:&lt;br /&gt;
&lt;br /&gt;
 ...&lt;br /&gt;
 37012312345;9991&lt;br /&gt;
 37012312344;9991&lt;br /&gt;
 37112312343;9992&lt;br /&gt;
 37112354321;9992&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
2. Open MySQL CLI:&lt;br /&gt;
&lt;br /&gt;
 mysql mor_mnp&lt;br /&gt;
&lt;br /&gt;
3. Create a temporary table and import a CSV file into it:&lt;br /&gt;
&lt;br /&gt;
 CREATE TABLE temp (col_1 VARCHAR(50) default NULL , col_2 VARCHAR(20) default NULL);&lt;br /&gt;
&lt;br /&gt;
 LOAD DATA LOCAL INFILE '/home/mnpnumbers.csv' IGNORE INTO TABLE temp FIELDS TERMINATED BY ';' ;&lt;br /&gt;
&lt;br /&gt;
4. Copy data from the temporary table to 'numbers' table:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;INSERT INTO numbers (number,prefix) SELECT TRIM(REPLACE(col_1, '\r', '')), TRIM(REPLACE(col_2, '\r', '')) FROM temp &lt;br /&gt;
 WHERE ( TRIM(REPLACE(col_1, '\r', '')) REGEXP '^[0-9]+$' = 1) and (TRIM(REPLACE(col_2, '\r', '')) REGEXP '^[0-9]+$' = 1) ;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
NOTE: This query skips values that contain non-numeric characters.&lt;br /&gt;
&lt;br /&gt;
For example row&lt;br /&gt;
&lt;br /&gt;
 ...&lt;br /&gt;
 +370123123456;9997&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
will not be imported to 'numbers' table.&lt;br /&gt;
&lt;br /&gt;
5. Delete temporary table:&lt;br /&gt;
&lt;br /&gt;
 DROP TABLE temp;&lt;br /&gt;
&lt;br /&gt;
Done. Numbers are imported to 'numbers' table. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Automatic import script ==&lt;br /&gt;
&lt;br /&gt;
Script downloads compressed (ZIP) CSV with a list of numbers from the SFTP server and imports in with default prefix to the MNP database. Current ZIP file required. Only SFTP is supported. The script does not import prefixes from CSV. CSV should contain an only list of numbers.&lt;br /&gt;
&lt;br /&gt;
The script is located in /usr/src/mor/sh_scripts/mnp_numbers_import.sh&lt;br /&gt;
&lt;br /&gt;
Script uses the same configuration file /usr/local/mor/mor_mnp.conf. Options which are specific to this script:&lt;br /&gt;
&lt;br /&gt;
 download_url = sftp.server.com:/path/to/file.zip  #some remote location of a number file (for sftp)&lt;br /&gt;
 username = ftpuser                                #user name to connect to a remote server&lt;br /&gt;
 password = ftppassword                            #password for a user to connect to a remote server&lt;br /&gt;
 default_prefix = 0009                             #default prefix for numbers (current version does not support prefix import)&lt;br /&gt;
&lt;br /&gt;
'''Note:'''&amp;lt;br&amp;gt;&lt;br /&gt;
If you are using the MOR X18+ version on Rocky Linux 9 and an FTP server on an older operating system, then these errors can occur using the script:&lt;br /&gt;
 Unable to negotiate with xxx.xxx.xxx.xxx port 22: no matching host key type found. Their offer: ssh-rsa,ssh-dss&lt;br /&gt;
&lt;br /&gt;
 ssh_dispatch_run_fatal: Connection to xxx.xxx.xxx.xxx port 22: error in libcrypto&lt;br /&gt;
&lt;br /&gt;
The best way is to upgrade the FTP server to a new operating system. If you do not want to upgrade your FTP server, then you can use another option to run this command on the MOR Rocky Linux 9 server:&lt;br /&gt;
 update-crypto-policies --set DEFAULT:SHA1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= How to configure external MNP database =&lt;br /&gt;
&lt;br /&gt;
Skip this step if your MOR billing installation is on one server.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Locate mor_mnp.conf file&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 cd /usr/local/mor&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Edit the file with your favorite text editor, for example:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 mcedit mor_mnp.conf&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should see similar values, '''mind the gaps in the file, they should be exactly the same as in the example below''':&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 host = localhost&lt;br /&gt;
 db = mor_mnp&lt;br /&gt;
 user = mor&lt;br /&gt;
 secret = mor&lt;br /&gt;
 port = 3306&lt;br /&gt;
 server_id = 1&lt;br /&gt;
 show_sql = 0&lt;br /&gt;
 debug = 1&lt;br /&gt;
 mnp_prefixes = 00370,370,8&lt;br /&gt;
&lt;br /&gt;
Change the values to the ones you need:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
host - your database IP address&amp;lt;br&amp;gt;&lt;br /&gt;
server_id - your Asterisk server id, same as in /etc/asterisk/mor.conf&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= How can I add a specific prefix on a call to the ported number? =&lt;br /&gt;
&lt;br /&gt;
It's possible to add a specific prefix to the call in this way:&lt;br /&gt;
* Create a duplicated provider (for example, you have &amp;quot;Provider A (no MNP) and &amp;quot;Provider A (with MNP)&amp;quot;)&lt;br /&gt;
* Create [[MOR Provider Rules | Provider Rules]] for that provider by adding a prefix 060&lt;br /&gt;
* MOR will route numbers in the MNP database through that provider according to the [[MOR Provider Rules | Provider Rules]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=See also=&lt;br /&gt;
* [[MOR Addons]]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Least-cost_routing#Impact_of_mobile-number_portability_in_VOIP_and_LCR_environments Impact of MNP in VOIP and LCR environments]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.kolmisoft.com/index.php?title=LCR_make_tariff&amp;diff=31381</id>
		<title>LCR make tariff</title>
		<link rel="alternate" type="text/html" href="https://wiki.kolmisoft.com/index.php?title=LCR_make_tariff&amp;diff=31381"/>
		<updated>2026-03-04T11:50:41Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!---''This option is available starting from [[MOR_10_documentation | MOR 10]] also backported to [[MOR_9_documentation | MOR 9]]''---&amp;gt;&lt;br /&gt;
=About=&lt;br /&gt;
This feature allows you to make tariff from LCR. Tariff is exported to CSV file and contains both MIN and MAX rates&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
==How to make Tariff from LCR?==&lt;br /&gt;
&lt;br /&gt;
1. Go to '''SETTINGS - Billing -&amp;gt; LCR''':&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Lcr_path.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
2. Click on of the [[Image:excel.png]] icon to generate the tariff&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:lcr_main.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
3. You will get a file to download. Inside there will be text like this:&lt;br /&gt;
 Afghanistan,Afghanistan proper,93,FIX,1,2&lt;br /&gt;
 Albania,Albania proper,355,FIX,3,4&lt;br /&gt;
 Algeria,Algeria proper,213,FIX,4,5&lt;br /&gt;
 American Samoa,American Samoa proper,1684,FIX,1,2&lt;br /&gt;
 Andorra,Andorra proper,376,FIX,1,1&lt;br /&gt;
 Angola,Angola proper,244,FIX,2,2&lt;br /&gt;
 Anguilla,Anguilla proper,1264,FIX,3,5&lt;br /&gt;
 Antarctica,,672,FIX,1,3&lt;br /&gt;
&lt;br /&gt;
Let's take the first line:&lt;br /&gt;
&lt;br /&gt;
 Afghanistan,Afghanistan proper,93,FIX,1,2&lt;br /&gt;
&lt;br /&gt;
 1 will be MIN rate, 2 will be MAX rate&lt;br /&gt;
&lt;br /&gt;
Notice: Exported file contains both MIN and MAX rates.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
= Zero Rates =&lt;br /&gt;
&lt;br /&gt;
By default zero rates (rate = 0.0) are not included in the output file.&lt;br /&gt;
&lt;br /&gt;
It can be changed by checking '''Show zero rates in LCR tariff export''', in '''SETTINGS - Functionality - Tariffs/Rates''':&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:lcrtariffzerorates.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=See also=&lt;br /&gt;
&lt;br /&gt;
* [[LCR Logic]]&lt;br /&gt;
* [[How to add Provider to LCR]]&lt;br /&gt;
* [[Call Routing by priority (Manual LCR)]]&lt;br /&gt;
* [[Call routing per destination basis]]&lt;br /&gt;
* [[MOR - LCR/Tariff change based on call prefix]]&lt;br /&gt;
* [[Routing by Percent]] or Weight-based routing&lt;br /&gt;
* [[Why call was not routed through other provider/trunk?|Why was a call not routed through another provider/trunk?]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
</feed>