<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.innovaphone.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Tru</id>
	<title>innovaphone wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.innovaphone.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Tru"/>
	<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Special:Contributions/Tru"/>
	<updated>2026-05-07T14:06:05Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.3</generator>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:Softwarephone_recommended_settings&amp;diff=45494</id>
		<title>Howto:Softwarephone recommended settings</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:Softwarephone_recommended_settings&amp;diff=45494"/>
		<updated>2017-01-06T10:20:01Z</updated>

		<summary type="html">&lt;p&gt;Tru: /* Integration in myPBX Client */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Applies To==&lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
* innovaphone Softwarephone&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Keywords: softphone, softwarephone, settings, protocol, tcp, h.323, qos, quality --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Registration Protocol==&lt;br /&gt;
&lt;br /&gt;
===Problem Details===&lt;br /&gt;
The Softwarephone needs to setup a signaling connection to the PBX. With H323 (UDP), the signaling needs several ports and they are opened on demand for each action. Sometimes it can happen that the port opening takes too long on some Windows machines and the Softwarephone doesn&#039;t respond to any requests. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Conclusion ===&lt;br /&gt;
From v11, please use H323/TCP or H323/TLS for signaling protocol. With TCP, there is one permanent session open and this prevents any Windows Session timeouts&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==QoS Settings==&lt;br /&gt;
&lt;br /&gt;
===Problem Details===&lt;br /&gt;
Because the Softwarephone is a Realtime Communication Client, the Softwarephones network traffic must have a higher network priority than other Applications (Like all VoIP Traffic). If it is not prioritized, you can have Problems with bad Audio Quality.&lt;br /&gt;
&lt;br /&gt;
=== Conclusion ===&lt;br /&gt;
Policy-based QoS must be configured on Windows Machines where the Softwarephone is running.&lt;br /&gt;
&lt;br /&gt;
For a more detailed description, see [[Howto:Set Type of Service (ToS) DiffServ DSCP Values for innovaphone Windows Applications (SoftwarePhone, myPBX Video)]].&lt;br /&gt;
&lt;br /&gt;
[[Image:Policy-basedQoS.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Integration in myPBX Client==&lt;br /&gt;
&lt;br /&gt;
If you are using the Softwarephone with the myPBX Client, it&#039;s recommended to use the myPBX Integration where the login parameters are automatically taken from the myPBX Client.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;This only works if Netlogon is disabled in the PBX!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The “Start Software Phone” flag in the myPBX configuration allows the registration and login data to be transferred automatically to the Software Phone.&lt;br /&gt;
&lt;br /&gt;
[[Image:swphone-mypbx1.jpg]]&lt;/div&gt;</summary>
		<author><name>Tru</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=File:Swphone-mypbx1.jpg&amp;diff=45493</id>
		<title>File:Swphone-mypbx1.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=File:Swphone-mypbx1.jpg&amp;diff=45493"/>
		<updated>2017-01-06T10:19:08Z</updated>

		<summary type="html">&lt;p&gt;Tru: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tru</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:Softwarephone_recommended_settings&amp;diff=45492</id>
		<title>Howto:Softwarephone recommended settings</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:Softwarephone_recommended_settings&amp;diff=45492"/>
		<updated>2017-01-06T10:18:14Z</updated>

		<summary type="html">&lt;p&gt;Tru: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Applies To==&lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
* innovaphone Softwarephone&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Keywords: softphone, softwarephone, settings, protocol, tcp, h.323, qos, quality --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Registration Protocol==&lt;br /&gt;
&lt;br /&gt;
===Problem Details===&lt;br /&gt;
The Softwarephone needs to setup a signaling connection to the PBX. With H323 (UDP), the signaling needs several ports and they are opened on demand for each action. Sometimes it can happen that the port opening takes too long on some Windows machines and the Softwarephone doesn&#039;t respond to any requests. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Conclusion ===&lt;br /&gt;
From v11, please use H323/TCP or H323/TLS for signaling protocol. With TCP, there is one permanent session open and this prevents any Windows Session timeouts&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==QoS Settings==&lt;br /&gt;
&lt;br /&gt;
===Problem Details===&lt;br /&gt;
Because the Softwarephone is a Realtime Communication Client, the Softwarephones network traffic must have a higher network priority than other Applications (Like all VoIP Traffic). If it is not prioritized, you can have Problems with bad Audio Quality.&lt;br /&gt;
&lt;br /&gt;
=== Conclusion ===&lt;br /&gt;
Policy-based QoS must be configured on Windows Machines where the Softwarephone is running.&lt;br /&gt;
&lt;br /&gt;
For a more detailed description, see [[Howto:Set Type of Service (ToS) DiffServ DSCP Values for innovaphone Windows Applications (SoftwarePhone, myPBX Video)]].&lt;br /&gt;
&lt;br /&gt;
[[Image:Policy-basedQoS.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Integration in myPBX Client==&lt;br /&gt;
&lt;br /&gt;
If you are using the Softwarephone with the myPBX Client, it&#039;s recommended to use the myPBX Integration where the login parameters are automatically taken from the myPBX Client.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;This only works if Netlogon is disabled in the PBX!&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The “Start Software Phone” flag in the myPBX configuration allows the registration and login data to be transferred automatically to the Software Phone.&lt;br /&gt;
&lt;br /&gt;
[[Image:swphone-mypbx1.jpg]]&lt;/div&gt;</summary>
		<author><name>Tru</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:Faxserver_with_Mailclients&amp;diff=45393</id>
		<title>Howto:Faxserver with Mailclients</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:Faxserver_with_Mailclients&amp;diff=45393"/>
		<updated>2016-12-21T16:37:18Z</updated>

		<summary type="html">&lt;p&gt;Tru: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Mail to Fax with Mailclients==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;This works only for sending Mails to the Faxserver and does not work for receiving Mails from the Faxserver!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Only Mail to Fax is working directly from Clients, for Fax to Mail you need always a Mailserver!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
These are examples howto setup the Mail-Clients for this access.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example for Thunderbird:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Image:Thunderbird.jpg]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example for Outlook:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Image:Outlook.jpg]]&lt;/div&gt;</summary>
		<author><name>Tru</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=File:Orca_savefile.jpg&amp;diff=44523</id>
		<title>File:Orca savefile.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=File:Orca_savefile.jpg&amp;diff=44523"/>
		<updated>2016-10-19T13:14:34Z</updated>

		<summary type="html">&lt;p&gt;Tru: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tru</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=File:Orca_rows_content.jpg&amp;diff=44522</id>
		<title>File:Orca rows content.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=File:Orca_rows_content.jpg&amp;diff=44522"/>
		<updated>2016-10-19T13:14:17Z</updated>

		<summary type="html">&lt;p&gt;Tru: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tru</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=File:Orca_addrows.jpg&amp;diff=44521</id>
		<title>File:Orca addrows.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=File:Orca_addrows.jpg&amp;diff=44521"/>
		<updated>2016-10-19T13:14:00Z</updated>

		<summary type="html">&lt;p&gt;Tru: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tru</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=File:Orca_openfile.jpg&amp;diff=44520</id>
		<title>File:Orca openfile.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=File:Orca_openfile.jpg&amp;diff=44520"/>
		<updated>2016-10-19T13:13:37Z</updated>

		<summary type="html">&lt;p&gt;Tru: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tru</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=File:Download_orca.jpg&amp;diff=44519</id>
		<title>File:Download orca.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=File:Download_orca.jpg&amp;diff=44519"/>
		<updated>2016-10-19T13:13:15Z</updated>

		<summary type="html">&lt;p&gt;Tru: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tru</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference12r1:Concept_Softwarephone&amp;diff=44518</id>
		<title>Reference12r1:Concept Softwarephone</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference12r1:Concept_Softwarephone&amp;diff=44518"/>
		<updated>2016-10-19T13:12:00Z</updated>

		<summary type="html">&lt;p&gt;Tru: /* Rollout */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Concept|{{PAGENAME}}]]&lt;br /&gt;
&lt;br /&gt;
= General =&lt;br /&gt;
&lt;br /&gt;
Innovaphone SoftwarePhone  is the implementation of innovaphones HW phones software as a Windows process. So all the features native to the hardwarephones are present in SoftwarePhone  as well. SoftwarePhone  has no UI, it is operated via myPBX or 3rd Party CTI client (ex: Estos Procall).&lt;br /&gt;
&lt;br /&gt;
=System Requirements=&lt;br /&gt;
The innovaphone SoftwarePhone requires:&lt;br /&gt;
*Windows 7 or later.&lt;br /&gt;
*Innovaphone PBX with SoftwarePhones&amp;lt;v&amp;gt; License.&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
&lt;br /&gt;
Prior to installing the  10.00  Version of  innovaphone SoftwarePhone  an eventually installed 9.00 version must be manually deinstalled. From version 10.00 on, subsequent releases can be updated without first deinstalling the older version.&lt;br /&gt;
When updating the installation, the previous configuration (if existing) is reused. Otherwise a default configuration is installed.&lt;br /&gt;
 &lt;br /&gt;
The following items are installed:&lt;br /&gt;
&lt;br /&gt;
* SoftwarePhone .exe and related files (dll) in Program files (x86)\innovaphone\SoftwarePhone &lt;br /&gt;
* Hid.tbl (the code definitoins of supported USB headsets) in Program files (x86) \innovaphone\SoftwarePhone &lt;br /&gt;
* The config files „swphone_config.cfg“ and „swphone_command.cfg” in the User Roaming directory (if no previous configuration is located there, otherwise the old configuration is used, Roaming Directory Location : &amp;lt;drive&amp;gt;:\Users\&amp;lt;User&amp;gt;\AppData\Roaming\innovaphone\SoftwarePhone\)&lt;br /&gt;
&lt;br /&gt;
Installation Process:&lt;br /&gt;
&lt;br /&gt;
* http port 80 ist checked to be available as the SoftwarePhone ’s web configuration port. If not free, a search starting at port 10006 is executed to find a free port. The URL file, containing the configuration  servers web @ is adjusted to the determined free port&lt;br /&gt;
* SoftwarePhone  is startet.&lt;br /&gt;
&lt;br /&gt;
Resetting to defaults:&lt;br /&gt;
&lt;br /&gt;
*Resetting to default configuration could be done by copying the config files from the Install Directory to the Roaming Directory.&lt;br /&gt;
&lt;br /&gt;
Unattended Installation of softwarephone for ALLUSERS:&lt;br /&gt;
&lt;br /&gt;
*It&#039;s possible to install softwarephone for ALLUSERS by using the command:&lt;br /&gt;
 Msiexec /i softwarephone.msi ALLUSERS=1&lt;br /&gt;
&lt;br /&gt;
= Configuration =&lt;br /&gt;
&lt;br /&gt;
The configuration is opened by selecting “Configuration” from the start menu. A browser connection is opend to the server running as part of SoftwarePhone and the configuration menu is displayed. &lt;br /&gt;
&lt;br /&gt;
Default login is admin/swphone.&lt;br /&gt;
&lt;br /&gt;
The configuration options are the same as for the hardware phones with a few specifics referring to SoftwarePhone running as a Windows process:&lt;br /&gt;
&lt;br /&gt;
* User Configuration&lt;br /&gt;
This tab is unique in the way that it can only be accessed from the computer SoftwarePhone is running on. Here the typical End User Configurations are set: Audio, USB-headset and process operational parameters.&lt;br /&gt;
* Application&lt;br /&gt;
The Applicatons run mode and priority can be set and wheter to register with the computers name at the PBX.&lt;br /&gt;
* Audio&lt;br /&gt;
The desired audio devices can be selected.&lt;br /&gt;
* Audio&lt;br /&gt;
The Audio –Input, -Output and –Ringing device can be selected. &lt;br /&gt;
* USB&lt;br /&gt;
To use the USB headsets function buttons here the device and appropriate map are selected.&lt;br /&gt;
&lt;br /&gt;
The default credentials are admin / swphone&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;„Application, Audio and USB Configuration&amp;quot;&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
This config GUI is unique in the way that it can only be accessed (right click on the softwarephone icon) from the computer SoftwarePhone is running on. Here the typical End User Configurations are set: Audio, USB-headset and process operational parameters.&lt;br /&gt;
&lt;br /&gt;
[[Image:user_config.png]]&lt;br /&gt;
 &lt;br /&gt;
&#039;&#039;&#039;Application Settings Run Mode:&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
* Manual: SoftwarePhone  needs to be started manually&lt;br /&gt;
* Login: SoftwarePhone   will be started when the user logs in (don&#039;t set this option if myPBX Launcher have option &amp;quot;Run Softwarephone&amp;quot; in the same PC). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Microphone:&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
The microphone selection.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Speaker:&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
	The speaker selection&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ringer:&#039;&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
	The Ringing device selection&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;USB Device:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
	The USB headset selction.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;USB Map:&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
The codepage selection for the selected usb device. Here one or two choices are presented. If a selection item that refers to the selected USB Device use this. If only “generic HID Telephonie Page” is available you can try to use the headsets button (some headsets support the generic codes)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE:&#039;&#039;&#039; If the headsets buttons do not work for call control, then call control is solely available through myPbx. Nevertheless the USB headset can be used as the audio-in/output device.&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;[Tab:„Application“]&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
Admin mode Application configuration.&lt;br /&gt;
&lt;br /&gt;
[[Image:swphone_application.jpg]]&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Application Run Mode, Application Priority:  see  „User Configuration“&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Register Mode:&#039;&#039;&#039; &lt;br /&gt;
* Default: Registration modes like the  HW phones.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE:&#039;&#039;&#039; Anonymous registration might not work in all environments, especially those that prevent multicasts. For example, when using SoftwarePhone  over a vpn 	  connection ensure that multicast forwarding is guaranteed. Also, if a virtual machine is running on the same computer it might prevent&lt;br /&gt;
multicasts being sent on the LAN.&lt;br /&gt;
&lt;br /&gt;
* Computername: &lt;br /&gt;
The best way for registering SoftwarePhone  at the PBX. It uses the computername as it is visible on the LAN. The computername is determined by SoftwarePhone  and the appropriate parameters are set for the “Phone” modul. This configuration appears in the field “Name” under the “Phone” tab  (Example for computer„LBU-VOSTRO-W7“ ):&lt;br /&gt;
&lt;br /&gt;
[[Image:swphone_registration.jpg]]&lt;br /&gt;
 &lt;br /&gt;
== &#039;&#039;&#039;[Tab:&amp;quot;Audio”]:&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
Admin mode Audio configuration. Items see  „User Configuration“&lt;br /&gt;
&lt;br /&gt;
== &#039;&#039;&#039;[Tab:“USB”]:&#039;&#039;&#039; ==&lt;br /&gt;
&lt;br /&gt;
Admin mode Audio configuration. Items see  „User Configuration“&lt;br /&gt;
&lt;br /&gt;
= Rollout =&lt;br /&gt;
&lt;br /&gt;
Especially in larger installations it is desirable to have a mechanism for automatic configuration of the SoftwarePhones. This can be accomplished in the following way:&lt;br /&gt;
&lt;br /&gt;
SoftwarePhones installation package (softwarephone .msi)can be parametrized by creating an [http://support.microsoft.com/kb/255905/en-us Orca MSI database editor] transform with the parameters:&lt;br /&gt;
URL and POLL. Theses parameters are entered in the “Property” table&lt;br /&gt;
&lt;br /&gt;
[[Image:download_orca.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Image:orca_openfile.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Image:orca_addrows.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Image:orca_rows_content.jpg]]&lt;br /&gt;
&lt;br /&gt;
[[Image:orca_savefile.jpg]]&lt;br /&gt;
&lt;br /&gt;
It is recommended that the “POLL” value be set to “1” (shortest time:  1minute).  &lt;br /&gt;
When SoftwarePhone is installed with the transform it starts, waits 1 min (poll period) then accesses the script file specified in the “POLL” parameter and executes the commands therein. &lt;br /&gt;
To register SoftwarePhone  with the computername at the PBX the script file should look as follows (example showing the PBX @ “192.168.178.22” with the identifier  „IP800-06-25-6e” :&lt;br /&gt;
&lt;br /&gt;
 …&lt;br /&gt;
 #set the PBX @ and Identifier&lt;br /&gt;
 config change PHONE SIG /prot H323 /gk-addr 192.168.178.22 /gk-id IP800-06-25-6e&lt;br /&gt;
&lt;br /&gt;
 #register with computername&lt;br /&gt;
 mod cmd APP0 app-set /op OK /reg_mode ComputerName&lt;br /&gt;
&lt;br /&gt;
 #reset the automatic configuration update&lt;br /&gt;
 config add UP1 /url &lt;br /&gt;
&lt;br /&gt;
 #reset SoftwarePhone and apply config&lt;br /&gt;
 reset &lt;br /&gt;
&lt;br /&gt;
Another method to provide configurations to the installed SoftwarePhone s is preparing a configuration template by configuring one SoftwarePhone  entity, then using the generated “swphone_commands.cfg” file in the &amp;lt;users roaming directory &amp;gt;\innovaphone\SoftwarePhone &lt;br /&gt;
as the template, copying it to the update location  and using it in the script file:&lt;br /&gt;
&lt;br /&gt;
 #invoke configuration template&lt;br /&gt;
 mod cmd UP0 cfg  &amp;lt;update directory location&amp;gt;/swphone_commands.cfg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This method is particularly helpful when many USB headset of the same type are used.&lt;br /&gt;
&lt;br /&gt;
= Setting QoS =&lt;br /&gt;
See [[Howto:Softphone recommended settings]].&lt;br /&gt;
&lt;br /&gt;
= Supported USB headsets =&lt;br /&gt;
&lt;br /&gt;
The following USB headsets are supported for onhook/offhook functionality:&lt;br /&gt;
&lt;br /&gt;
{{FIXME|reason=&amp;quot;Needs to be tested&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
* innovaphone IP 10 (I)&lt;br /&gt;
* innovaphone IP 10 (II)&lt;br /&gt;
* Handset for Voip (Couple) (ZMM)&lt;br /&gt;
* Handset for Voip (Internet) (ZMM)&lt;br /&gt;
* Claritel-i750 - vp (generated)&lt;br /&gt;
* GN 8120 USB&lt;br /&gt;
* Plantronics CS50/CS60-USB Headset&lt;br /&gt;
* GN 9350&lt;br /&gt;
* GN 9335e USB port&lt;br /&gt;
* Jabra A330 device 2&lt;br /&gt;
* Jabra BIZ 2400&lt;br /&gt;
* Jabra LINK 320 USB&lt;br /&gt;
* Jabra LINK 350 USB&lt;br /&gt;
* Jabra LINK 360 USB *&lt;br /&gt;
* Jabra PRO 9460 (1041)&lt;br /&gt;
* Jabra PRO 94(60/70) (1042)&lt;br /&gt;
* Jabra GO 6470 (1003)&lt;br /&gt;
* Jabra GO 6470 (1004)&lt;br /&gt;
* Jabra PRO 930 (930-25-509-101)&lt;br /&gt;
* Jabra LINK 350 OC&lt;br /&gt;
* Jabra GO 6430 (6430-17-20-201) | Version C&lt;br /&gt;
* Jabra SUPREME UC (5078-230-310)&lt;br /&gt;
* Plantronics Savi 740&lt;br /&gt;
* Sennheiser VoIP USB headset&lt;br /&gt;
* Sennheiser DECT&lt;br /&gt;
* Sennheiser CEHS-CI 02&lt;br /&gt;
* Jabra SPEAK 410 USB Mono&lt;br /&gt;
* Jabra SPEAK 410 USB Stereo&lt;br /&gt;
* Jabra BIZ 2400 Mono USB&lt;br /&gt;
* Jabra BIZ 2400 USB Mono&lt;br /&gt;
* Jabra BIZ 2400 USB Mono (2)&lt;br /&gt;
* Jabra PRO 9450&lt;br /&gt;
* Jabra PRO 9450 (2)&lt;br /&gt;
* Jabra BIZ 620 Mono&lt;br /&gt;
* Jabra UC Voice 550 Duo(5599-829-209)&lt;br /&gt;
* Jabra UC Voice 550 Mono(5593-829-209)&lt;br /&gt;
* Jabra LINK 280(280-09)&lt;br /&gt;
* Jabra LINK 14201-30 (DHSG-USB Adapter)&lt;br /&gt;
* GN Netcom Jabra 2000 USB Duo NC EMEA&lt;br /&gt;
* GN2000 Stereo USB&lt;br /&gt;
* Plantronics - Voyager PRO UC v2 (USB/bluetooth)&lt;br /&gt;
* Plantronics - CALISTO P420 USB&lt;br /&gt;
* Plantronics - Voyager PRO UC v2 (USB/bluetooth) (2)&lt;br /&gt;
* Plantronics - Blackwire C320 (85619-02)&lt;br /&gt;
* Plantronics - Blackwire C720 (87506-02)&lt;br /&gt;
* Plantronics - DA45 (USB/Wired)&lt;br /&gt;
* Plantronics - Blackwire C620 (USB/Wired)&lt;br /&gt;
* Plantronics - C420 (product aa10)&lt;br /&gt;
* Plantronics - C420 (product aa14)&lt;br /&gt;
* Plantronics - C435 (P.N. 85800-05)&lt;br /&gt;
* Plantronics D100 (USB/Bluetooth, Savi W430, W440)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;*&#039;&#039;&#039; - Reported by costumer not working the MAP keys, however was detected by the Softwarephone.&lt;br /&gt;
&lt;br /&gt;
= Special headsets and behaviours =&lt;br /&gt;
Depending on the headset, the used firmware of the headset and special settings in the headset configuration - the standard delivered USB-HID-table inside the softphone-package will not always work.&lt;br /&gt;
&lt;br /&gt;
Improvements in the hid-table concerning special headset behaviour will be delivered with new firmware/service release versions of the softwarephone.&lt;br /&gt;
&lt;br /&gt;
As the &amp;quot;standard&amp;quot; hid-table may work for most of the headsets, selection of the improved table has to be done manually according to the description below:&lt;br /&gt;
&lt;br /&gt;
== Activation ==&lt;br /&gt;
After start-up of the softwarephone, right click the softwarephone-icon in the event-tray and select &amp;quot;Configuration&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[Image:Swphone_hid_adaption.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At the USB-map selection, one can select the headset to be used.&lt;br /&gt;
In the lowermost field, the table to be used has to be selected.&lt;br /&gt;
If the default table does not work, the improved one named &amp;lt;headset&amp;gt;-2 can be selected.&lt;br /&gt;
&lt;br /&gt;
[[Image:Swphone_hid_adaption_map.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Details see below.&lt;br /&gt;
== Jabra 930 UC ==&lt;br /&gt;
&lt;br /&gt;
* Problem: Onhook at headset only possible with two clicks. &lt;br /&gt;
* Fixed: to one-click-onhook&lt;br /&gt;
* Map to select: Jabra PRO 930-2 (930-25-509-101)&lt;br /&gt;
* Headset settings: [[Image:jabra930-2_settings.png]]&lt;br /&gt;
&lt;br /&gt;
= Troubleshooting Connectivity Problems =&lt;br /&gt;
&lt;br /&gt;
If you experience problems with softwarephone attaching to the PBX or not being able to make calls please check the following:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;check in the “Phone” tab whether the state is “up”&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;check in the “General” tab if License is “Valid”&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Start a command window as Administrator and issue a “netstat –a –b &amp;gt; swphone_netstat.txt&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In the “swphone_netstat.txt” file search for “1720”. There should be an entry like this:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;TCP    0.0.0.0:1720           LBU-VOSTRO-W7:0        LISTENING&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;[softwarephone.exe].&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Please search for other occurances of “&#039;&#039;&#039;1720&#039;&#039;&#039;” to ensure that no other processes listen to this port.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Make a softwarephone trace to see if the packets are received by softwarephone&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In the “Maintenance” tab “Tracing” enable “&#039;&#039;&#039;H.323 Signaling&#039;&#039;&#039;”, “&#039;&#039;&#039;Phone&#039;&#039;&#039;” and “&#039;&#039;&#039;All TCP/UDP Traffic&#039;&#039;&#039;”. Then try to make the call. In the resulting trace you should see the events like the following:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;0:0103:337:3 - RECV RESULT[](662 from pla(192.168.178.22:60003) type: 1)&lt;br /&gt;
0:0103:337:3 - PHONE_LISTEN.1 -&amp;gt; PHONE_REG.1 : SIG_SETUP faststart=3ac8bec cmd=PROPOSAL cdpn=400&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If these events are no present in the trace it could be that the firewall settings prevent some of softwarephone’s functions. This could be the Firewall.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Check the firewall settings for softwarephone&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Please open the “System Administration\Windows-Firewall\Allow Program.. Ensure that softwarephone is enabled on the required interfaces. If this doesn’t solve the problem then temporaryly disable the firewall completely and try again. &lt;br /&gt;
Now even with the firewall disabled there could be some other security software that causes the problem. To find out if packets to the “h323hostcall” port (1720) are filtered by the firewall you can use the commands “&#039;&#039;&#039;netsh wfp capture start&#039;&#039;&#039;” to start a trace of the test and “&#039;&#039;&#039;netsh wfp capture stop&#039;&#039;&#039;” to stop the trace. The trace is written into the file: “&#039;&#039;&#039;wfpdiag.cab&#039;&#039;&#039;” . Extract the file: “&#039;&#039;&#039;wfpdiag.xml&#039;&#039;&#039;”. In this file search for “1720”. If the packet is filtered by the firewall an entry like the following can be found:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;netEvent&amp;gt;&lt;br /&gt;
   &amp;lt;header&amp;gt;&lt;br /&gt;
     &amp;lt;timeStamp&amp;gt;2013-11-05T11:20:27.367Z&amp;lt;/timeStamp&amp;gt;&lt;br /&gt;
     &amp;lt;flags numItems=&amp;quot;8&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;item&amp;gt;FWPM_NET_EVENT_FLAG_IP_PROTOCOL_SET&amp;lt;/item&amp;gt;&lt;br /&gt;
       &amp;lt;item&amp;gt;FWPM_NET_EVENT_FLAG_LOCAL_ADDR_SET&amp;lt;/item&amp;gt;&lt;br /&gt;
       &amp;lt;item&amp;gt;FWPM_NET_EVENT_FLAG_REMOTE_ADDR_SET&amp;lt;/item&amp;gt;&lt;br /&gt;
       &amp;lt;item&amp;gt;FWPM_NET_EVENT_FLAG_LOCAL_PORT_SET&amp;lt;/item&amp;gt;&lt;br /&gt;
       &amp;lt;item&amp;gt;FWPM_NET_EVENT_FLAG_REMOTE_PORT_SET&amp;lt;/item&amp;gt;&lt;br /&gt;
       &amp;lt;item&amp;gt;FWPM_NET_EVENT_FLAG_APP_ID_SET&amp;lt;/item&amp;gt;&lt;br /&gt;
       &amp;lt;item&amp;gt;FWPM_NET_EVENT_FLAG_USER_ID_SET&amp;lt;/item&amp;gt;&lt;br /&gt;
       &amp;lt;item&amp;gt;FWPM_NET_EVENT_FLAG_IP_VERSION_SET&amp;lt;/item&amp;gt;&lt;br /&gt;
     &amp;lt;/flags&amp;gt;&lt;br /&gt;
     &amp;lt;ipVersion&amp;gt;FWP_IP_VERSION_V4&amp;lt;/ipVersion&amp;gt;&lt;br /&gt;
     &amp;lt;ipProtocol&amp;gt;6&amp;lt;/ipProtocol&amp;gt;&lt;br /&gt;
     &#039;&#039;&#039;&amp;lt;localAddrV4&amp;gt;192.168.178.21&amp;lt;/localAddrV4&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
     &#039;&#039;&#039;&amp;lt;remoteAddrV4&amp;gt;192.168.178.22&amp;lt;/remoteAddrV4&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
     &amp;lt;localPort&amp;gt;&#039;&#039;&#039;1720&#039;&#039;&#039;&amp;lt;/localPort&amp;gt;&lt;br /&gt;
     &amp;lt;remotePort&amp;gt;60007&amp;lt;/remotePort&amp;gt;&lt;br /&gt;
     &amp;lt;scopeId&amp;gt;0&amp;lt;/scopeId&amp;gt;&lt;br /&gt;
     &amp;lt;appId&amp;gt;							&lt;br /&gt;
       &amp;lt;data&amp;gt; …&amp;lt;/data&amp;gt;&lt;br /&gt;
       &amp;lt;asString&amp;gt;...&amp;lt;/asString&amp;gt;&lt;br /&gt;
     &amp;lt;/appId&amp;gt;&lt;br /&gt;
     &amp;lt;userId&amp;gt;S-1-5-21-3364624427-3176291796-194291593-006&amp;lt;/userId&amp;gt;&lt;br /&gt;
   &amp;lt;/header&amp;gt;&lt;br /&gt;
   &amp;lt;type&amp;gt;FWPM_NET_EVENT_TYPE_CLASSIFY_DROP&amp;lt;/type&amp;gt;&lt;br /&gt;
   &amp;lt;classifyDrop&amp;gt;&lt;br /&gt;
     &amp;lt;filterId&amp;gt;105267&amp;lt;/filterId&amp;gt;&lt;br /&gt;
     &amp;lt;layerId&amp;gt;44&amp;lt;/layerId&amp;gt;&lt;br /&gt;
     &amp;lt;reauthReason&amp;gt;0&amp;lt;/reauthReason&amp;gt;&lt;br /&gt;
     &amp;lt;originalProfile&amp;gt;2&amp;lt;/originalProfile&amp;gt;&lt;br /&gt;
     &amp;lt;currentProfile&amp;gt;2&amp;lt;/currentProfile&amp;gt;&lt;br /&gt;
   &amp;lt;/classifyDrop&amp;gt;&lt;br /&gt;
 &amp;lt;/netEvent&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
where the &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;localAddrV4&amp;gt;192.168.178.21&amp;lt;/localAddrV4&amp;gt; &lt;br /&gt;
&lt;br /&gt;
and the &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;remoteAddrV4&amp;gt;192.168.178.22&amp;lt;/remoteAddrV4&amp;gt; &lt;br /&gt;
&lt;br /&gt;
should be your computers and the PBX’s @. &lt;br /&gt;
&lt;br /&gt;
* Check if the setup from the PBX is received at the local computer and what happens with it&lt;br /&gt;
&lt;br /&gt;
Sometimes, Antivirus Packages can implement their own network access policy. This can result in a h323 release complete with cause “User Busy” to an incoming Setup from the PBX before any other softwarephone is reached. To see which process Sends/Receives the packets in a flow you can use the “netmon”, Microsofts free Packet tracer.&lt;br /&gt;
&lt;br /&gt;
= How to obtain debug traces of softwarephone using icollect =&lt;br /&gt;
&lt;br /&gt;
Included in the installation path (C:\Program Files (x86)\innovaphone\SoftwarePhone) there is a tool called &#039;&#039;&#039;icollect.exe&#039;&#039;&#039;. After we reproduce a problem we can run this tool to generate debug files that are saved in the roaming folder (C:\Users\&amp;lt;User&amp;gt;\AppData\Roaming\innovaphone) as &amp;quot;debug-info.zip&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
If the issue it&#039;s related to an application crash  please enable the &amp;quot;File Trace&amp;quot; flag at &amp;quot;http://localhost:10006/debug.xml&amp;quot; before and restart the softwarephone. &lt;br /&gt;
&lt;br /&gt;
This is necessary when reporting a bug/problem with innovaphone softwarephone v11.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE: Please when providing a crash dump captured by icollect always use the latest SR (service release) of the softwarephone. Don&#039;t send us crash dumps of older versions since this will just take more time/effort to be analyzed by our developer team.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=Known Issue=&lt;br /&gt;
&lt;br /&gt;
=== G.711 only and G729 Optional===&lt;br /&gt;
The software phone does support G.711 codec only, no G.723 or G.722.&lt;br /&gt;
Optionally we can use G729 if G729 Channel licenses are present and available on the PBX.&lt;br /&gt;
&lt;br /&gt;
===Another program is blocking the softphone===&lt;br /&gt;
&lt;br /&gt;
Another program (e.g XCAPI) might be listening on tcp port 1720 as well. If you want to use both programs simultaneously you can change the signaling port of the softphone to another port like 1721.&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;http://localhost/!config add PHONE SIG /ep-addr 0.0.0.0:1721&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to find out which program is listening on which port we recommend using a little tool called TCP View. You’ll find it here:&lt;br /&gt;
&lt;br /&gt;
http://technet.microsoft.com/en-us/sysinternals/bb897437.aspx&lt;br /&gt;
&lt;br /&gt;
=== No license obtained from PBX if SIP Protocol it&#039;s used===&lt;br /&gt;
&lt;br /&gt;
When using Innovaphone v10 softwarephone with SIP Protocol no license it&#039;s obtained from the PBX. It&#039;s necessary to use H.323 always.&lt;br /&gt;
&lt;br /&gt;
=== Headset Basestation doesn&#039;t Ring ===&lt;br /&gt;
&lt;br /&gt;
Often it&#039;s reported that the Basestation of Wireless Headsets doesn&#039;t Ring on incoming call, this is a feature that is missing and there exist already a Feature Request for it - [[Support:DVL-Feature_Requests#Alerting_on_Wireless_headset_base_also | Alerting on Wireless headset base also]] .&lt;br /&gt;
&lt;br /&gt;
=== Windows Volume lowers automatically when receiving a call ===&lt;br /&gt;
&lt;br /&gt;
The volume can be set for swphone exclusively by the Windows mixer. It appears in the mixer because it has a Audio stream Interface to the Windows Audio System, but no way adjust the volume by itself. When such an effect occurs it is best to check the Windows configuration: if it is set to Change volume for applications when certain Events occur:&lt;br /&gt;
&lt;br /&gt;
[http://superuser.com/questions/74116/windows-7-lowers-applications-volume-automatically Windows 7 lowers applications&#039; volume automatically]&lt;br /&gt;
&lt;br /&gt;
=== H.323/TLS Connection not Trusted by Default ===&lt;br /&gt;
&lt;br /&gt;
Please check the [[Reference11r1:Concept_H.323_over_TCP/TLS_(H.460.17)#Known_Issues|H.323/TLS Known Issues article]].&lt;/div&gt;</summary>
		<author><name>Tru</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference10:Concept_Reporting&amp;diff=44513</id>
		<title>Reference10:Concept Reporting</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference10:Concept_Reporting&amp;diff=44513"/>
		<updated>2016-10-19T12:19:45Z</updated>

		<summary type="html">&lt;p&gt;Tru: /* Report XML and CSV */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Requirements==&lt;br /&gt;
&lt;br /&gt;
It is needed to have the [[Reference10:Concept_Linux_Application_Platform|application platform]] installed and running.&lt;br /&gt;
&lt;br /&gt;
===Calculation of required disk space===&lt;br /&gt;
&lt;br /&gt;
An average CDR requires 2080 bytes of disk space inside the database.&amp;lt;br&amp;gt;&lt;br /&gt;
So &#039;&#039;&#039;one GB&#039;&#039;&#039; disk space is needed for ~&#039;&#039;&#039;516222 CDRs&#039;&#039;&#039;. &amp;lt;br&amp;gt;&lt;br /&gt;
One call may have one or multiple CDRs depending on the call flow, the used PBX objects and their configuration.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;&lt;br /&gt;
It is strongly recommended that you try to precalculate your required disk space and configure a suiting value under [[#Configure_scheduled_CDR_cleanup]].&amp;lt;br&amp;gt;&lt;br /&gt;
Don&#039;t forget to configure the alarm server under [[Reference10:Concept_Linux_Application_Platform#Alarm_Server]] to receive an alarm if the disk is nearly full (10% disk space remaining).&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
&lt;br /&gt;
Download the latest version of innovaphone reporting.&lt;br /&gt;
&lt;br /&gt;
Log into the application platform, go to the Applications tag, click on [[ Reference10:Concept_Linux_Application_Platform#Upload.2FUpdate|Upload/Update]] and upload the downloaded file. &lt;br /&gt;
The installation will start automatically and the page will refresh every two seconds showing the installation process. &lt;br /&gt;
If there is no error during the installation you will see at the end &amp;quot;Installation was succesfull&amp;quot;. Otherwise,&lt;br /&gt;
you will get &amp;quot;installation failed&amp;quot; and the reason why it went wrong.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Hotfix===&lt;br /&gt;
If you have already installed the latest version of Reporting, simply download the Reporting...HotfixIncremental for your platform (VM or IPxx10) or if you have missed some hotfixes, download the Reporting...HotfixCumulative archive, which contains all hotfixes since hotfix1.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Upload this hotfix archive [[Reference10:Concept_Linux_Application_Platform#Upload.2FUpdate|here]].&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
===Device===&lt;br /&gt;
&lt;br /&gt;
====License====&lt;br /&gt;
It is required to have a Reporting license installed on your device. Check under [[ Reference10:General/License ]] if you already have one.&lt;br /&gt;
&lt;br /&gt;
 Set the Reporting flag for each PBX object, which should be reported on the objects properties page.&lt;br /&gt;
&lt;br /&gt;
====CDR Gateway====&lt;br /&gt;
Any innovaphone device which sends [[Reference10:Concept_Call_Detail_Record_CDR_PBX|CDRs]] to the reporting application must have at least one CDR interface configured under [[ Reference10:Gateway/CDR ]]:&lt;br /&gt;
&lt;br /&gt;
* Type: LOCAL-AP or REMOTE-AP/REMOTE-AP-S&lt;br /&gt;
&lt;br /&gt;
If HTTP/HTTPS is selected then some other parameters must be set:&lt;br /&gt;
&lt;br /&gt;
* Address: ip address of the application platform&lt;br /&gt;
* Port: 80 for REMOTE-AP&lt;br /&gt;
* Port: 443 for REMOTE-AP-S&lt;br /&gt;
* Method: POST/GET&lt;br /&gt;
* Path: ap/cdr.fcgi&lt;br /&gt;
&lt;br /&gt;
The application platform is by default password protected, so you&#039;ll have to perform one of these steps: &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* configure an authenticated URL for &#039;&#039;&#039;ap/cdr.fcgi&#039;&#039;&#039; under [[ Reference10:Services/HTTP/Client ]] (recommended)&lt;br /&gt;
** If you configure an authenticated URL (with the linux webserver credentials), don&#039;t forget to configure port 80 or port 443 for secure transport (Remote-AP-S) like https://111.111.111.111:443/ap or http://111.111.111.111:80/ap&lt;br /&gt;
* configure &#039;&#039;&#039;ap/cdr.fcgi&#039;&#039;&#039; as public web path on the innovaphone application platform [[ Reference10:Concept_Linux_Application_Platform#Change_web_server_properties_and_public_access_to_the_web.2Fwebdav|Public Web Paths ]]&lt;br /&gt;
&lt;br /&gt;
 Configure a second CDR interface, if you use [[#Replication|Replication]].&lt;br /&gt;
&lt;br /&gt;
====Enable PBX CDRs====&lt;br /&gt;
Enable the &amp;quot;Generate CDRs&amp;quot; flag under [[ Reference10:PBX/Config/General ]].&lt;br /&gt;
&lt;br /&gt;
===innovaphone Application Platform===&lt;br /&gt;
&lt;br /&gt;
If the reporting URL/user/password is not configured in your device as authenticated URL, configure &#039;&#039;&#039;ap/cdr.fcgi&#039;&#039;&#039; as public web path on the innovaphone application platform [[ Reference10:Concept_Linux_Application_Platform#Change_web_server_properties_and_public_access_to_the_web.2Fwebdav|Public Web Paths ]].&lt;br /&gt;
&lt;br /&gt;
===Database===&lt;br /&gt;
&lt;br /&gt;
Reporting creates the innovaphone-reporting database to store CDRs sent from any innovaphone devices (appendix 7.6 explains the database structure). &lt;br /&gt;
PostgreSQL is also available for other applications and any of them could create its own database. &lt;br /&gt;
&lt;br /&gt;
====Password====&lt;br /&gt;
&lt;br /&gt;
Reporting creates the database user &#039;&#039;&#039;innovaphone-reporting&#039;&#039;&#039; with default password &#039;&#039;&#039;reporting&#039;&#039;&#039;. &lt;br /&gt;
This password may be changed at the innovaphone Reporting page under Config/Database.&lt;br /&gt;
&lt;br /&gt;
====Remote Access====&lt;br /&gt;
&lt;br /&gt;
There are tools (PgAdmin III) that allow to connect to application databases remotely. &lt;br /&gt;
It is first needed to configure the IP you are connecting from under Config/Database at the innovaphone reporting page.&lt;br /&gt;
&lt;br /&gt;
For the PgAdmin III it is imporant to use innovaphone-reporting as Service-DB (Wartungs-DB). Default login credentials - User: innovaphone-reporting - Password: reporting&lt;br /&gt;
&lt;br /&gt;
====Delete CDRs====&lt;br /&gt;
&lt;br /&gt;
You can delete CDRs for certain/all users in a certain timespan. If you enter &#039;&#039;&#039;%&#039;&#039;&#039; as object, all users are selected.&lt;br /&gt;
&lt;br /&gt;
 Note that PostgreSQL doesn&#039;t free the space on the disk! If you need free disk space, issue this command on the shell:&lt;br /&gt;
 &#039;&#039;sudo -u postgres vacuumdb -f innovaphone-reporting&#039;&#039;&lt;br /&gt;
 This may take some time and CDRs won&#039;t be received during this time.&lt;br /&gt;
&lt;br /&gt;
====Configure scheduled CDR cleanup====&lt;br /&gt;
&lt;br /&gt;
If you activate scheduled cleanup, CDRs older than the configured amount of months will be automatically deleted.&amp;lt;br&amp;gt;&lt;br /&gt;
The scheduled task is started once a day at 2 AM.&lt;br /&gt;
&lt;br /&gt;
===PBX===&lt;br /&gt;
&lt;br /&gt;
If you use multiple PBX devices which are not Master/Slave, you have to select, which identifier is unique for a user under Config/PBX:&lt;br /&gt;
* System Name (default)&lt;br /&gt;
* PBX Name&lt;br /&gt;
&lt;br /&gt;
The selected value determines, which values are shown in the PBX dropdown box for report creation or report mail configuration.&lt;br /&gt;
&lt;br /&gt;
===Replication===&lt;br /&gt;
&lt;br /&gt;
You can configure a second innovaphone application platform with an installed innovaphone Reporting for replication purposes.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Mode:&lt;br /&gt;
** &#039;&#039;&#039;Off&#039;&#039;&#039;: no replication&lt;br /&gt;
** &#039;&#039;&#039;Master&#039;&#039;&#039;: the local server is the master server&lt;br /&gt;
** &#039;&#039;&#039;Standby&#039;&#039;&#039;: the local server is the standby server, filters will be replicated from the master and can&#039;t be changed here&lt;br /&gt;
* Master/Standby Server: the IP address of the master or standby server&lt;br /&gt;
* Database password: the PostgreSQL database password of the other server (default is &#039;&#039;&#039;reporting&#039;&#039;&#039;).&lt;br /&gt;
* Synchronisation interval: the interval in minutes (range 1-60) in which a sync is done&lt;br /&gt;
&lt;br /&gt;
Now configure a second [[#CDR_Gateway|CDR Gateway]] for the standby server.&lt;br /&gt;
&lt;br /&gt;
The current status can be seen here too. If the status is &#039;&#039;&#039;Failed&#039;&#039;&#039; take a look at the log file &#039;&#039;&#039;innovaphone Reporting Replication&#039;&#039;&#039; under [[ Reference10:Concept_Linux_Application_Platform#Logs|Diagnostics/Logs]] or look at the last trace output at the bottom of the page.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
How replication works is described [[#Replication_2|here]].&lt;br /&gt;
&lt;br /&gt;
===LDAP===&lt;br /&gt;
&lt;br /&gt;
Several LDAP servers and dialing locations can be configured here.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
PBX field must correspond to a name of a PBX since PBX&#039;s names are available in CDRs. The received CDR is parsed to get the PBX name and this name will be used to find the corresponding LDAP server and dialing location needed to resolve names.&lt;br /&gt;
&lt;br /&gt;
Each configured LDAP server and dialing location can be activated/deactivated with the &#039;&#039;&#039;active&#039;&#039;&#039; flag.&lt;br /&gt;
&lt;br /&gt;
[[Image:ldap_update.png]]&lt;br /&gt;
&lt;br /&gt;
If the country where you configure LDAP does not have Trunk/National prefix you should leave &amp;quot;National Prefix&amp;quot; and &amp;quot;Area Code&amp;quot; empty.&lt;br /&gt;
&lt;br /&gt;
In the number Attributes field please do &#039;&#039;&#039;not&#039;&#039;&#039; add any additional characters to the attributes like &amp;quot;:P&amp;quot;, &amp;quot;:D&amp;quot; or &amp;quot;@&amp;quot;, for instance &amp;quot;homePhone:P, mobile:M, telephoneNumber:D&amp;quot;. This does not work. That would be correct: &amp;quot;homePhone, mobile, telephoneNumber&amp;quot;&lt;br /&gt;
&lt;br /&gt;
LDAP Internal Search flag allows reporting to perform name resolution also for internal numbers.&lt;br /&gt;
&lt;br /&gt;
===Report Mails===&lt;br /&gt;
&lt;br /&gt;
Automatic report generation can be configured here:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;time&#039;&#039;&#039;: daytime at which the report is sent&lt;br /&gt;
* &#039;&#039;&#039;user reports&#039;&#039;&#039;: &lt;br /&gt;
** Creates for each matching user a separate report&lt;br /&gt;
** Users are matched by &#039;&#039;&#039;Object (Long Name)&#039;&#039;&#039;&lt;br /&gt;
** A user report only contains calls for this user&lt;br /&gt;
** The email address of the user is built by its &#039;&#039;&#039;H323 name&#039;&#039;&#039; and the &#039;&#039;&#039;System Name&#039;&#039;&#039; of its PBX (h323@systemname) or determined by the E-Mail field of the user&lt;br /&gt;
* &#039;&#039;&#039;interval&#039;&#039;&#039;: &lt;br /&gt;
** daily: Mail will be send daily with the automatic period &amp;quot;last day&amp;quot;&lt;br /&gt;
** weekly: Mail will be send weekly with the automatic period &amp;quot;last week&amp;quot;&lt;br /&gt;
** monthly: Mail will be send daily with the automatic period &amp;quot;last month&amp;quot;&lt;br /&gt;
* &#039;&#039;&#039;day&#039;&#039;&#039;: the day, at which the report is sent&lt;br /&gt;
* &#039;&#039;&#039;mail adresses&#039;&#039;&#039;: recipients of the report (comma separated)&lt;br /&gt;
* &#039;&#039;&#039;Sender E-Mail address&#039;&#039;&#039;: sender email address, which may be present as [[ Reference10:Concept_Linux_Application_Platform#Relay_Hosts | relay host ]]&lt;br /&gt;
* &#039;&#039;&#039;compress&#039;&#039;&#039;: compress the attachment or not&lt;br /&gt;
* &#039;&#039;&#039;sort by&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;sort order&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;language&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;send time&#039;&#039;&#039;: the time of a day, when the report is sent&lt;br /&gt;
&lt;br /&gt;
The explanation for the other settings can be found [[ #Report_Creation | here. ]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:mails.png]]&lt;br /&gt;
&lt;br /&gt;
===Users===&lt;br /&gt;
&lt;br /&gt;
You can configure multiple users, who shall have access to reports without having access to the whole reporting configuration.&amp;lt;br&amp;gt;&lt;br /&gt;
The user can login with his user name and password on: &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
http(s)://Linux-IP/apps/innovaphone-reporting/user/login.php&lt;br /&gt;
&lt;br /&gt;
The admin can assign one or more base filters to the user. A base filter is explained [[ #Base_filter | here]].&amp;lt;br&amp;gt;&lt;br /&gt;
If the user creates new reports, new own filters or report mails, he &#039;&#039;&#039;has&#039;&#039;&#039; to use one of his assigned base filters.&lt;br /&gt;
&lt;br /&gt;
 If you are using multiple PBX systems, the user has only access to these systems, which are configured in the base filters of the user.&lt;br /&gt;
 If the user has no base filter with a limitation to a certain &amp;quot;System Name&amp;quot;/&amp;quot;PBX Name&amp;quot; (depends on your [[ #PBX | PBX configuration ]]),&lt;br /&gt;
 he will have access to all systems!&lt;br /&gt;
&lt;br /&gt;
[[Image:users.jpg]]&lt;br /&gt;
&lt;br /&gt;
====User Login====&lt;br /&gt;
&lt;br /&gt;
A logged in user can create reports, own filters and report mails based on his assigned base filters.&lt;br /&gt;
&lt;br /&gt;
[[Image:Userlogin.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Images===&lt;br /&gt;
&lt;br /&gt;
You may upload images to be used as logo or footer in pdf reports.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Logos must be 32x32 and footer can have a maximum width of 450 pixels and a maximum height of 50 pixels.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These images can have jpeg or png format.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Relay CDRs===&lt;br /&gt;
&lt;br /&gt;
Relay CDRs can be stored in log files by the Reporting application. Configure a CDR gateway as already described and relay CDRs will be written to the webdav file &#039;&#039;&#039;/cdr/cdr.txt&#039;&#039;&#039;.&lt;br /&gt;
The file is rotated on 1 MB size. The first rotated file is uncompressed, further files will be gz compressed. Max ten files are kept. Older files will be deleted:&amp;lt;br&amp;gt;&lt;br /&gt;
* cdr.txt&lt;br /&gt;
* cdr.txt.1&lt;br /&gt;
* cdr.txt.2.gz&lt;br /&gt;
* cdr.txt.3.gz&lt;br /&gt;
* cdr.txt.4.gz&lt;br /&gt;
* cdr.txt.5.gz&lt;br /&gt;
* cdr.txt.6.gz&lt;br /&gt;
* cdr.txt.7.gz&lt;br /&gt;
* cdr.txt.8.gz&lt;br /&gt;
* cdr.txt.9.gz&lt;br /&gt;
&lt;br /&gt;
===innovaphone-reporting web access===&lt;br /&gt;
&lt;br /&gt;
You can configure a separate authentication for the innovaphone-reporting web site [[Reference10:Concept_Linux_Application_Platform#Change_application_access_credentials|here]].&amp;lt;br&amp;gt;&lt;br /&gt;
One can just login on the reporting site with this access.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Integration Voice recorder===&lt;br /&gt;
&lt;br /&gt;
The innovaphone voice recording can be integrated and a remote control of the player is possible, see relative article. &lt;br /&gt;
&lt;br /&gt;
==Filters==&lt;br /&gt;
===General===&lt;br /&gt;
&lt;br /&gt;
Filters are set up to create reports based on certain conditions. A filter can have multiple conditions and multiple filters can be combined on report creation (combine is performed with an &#039;&#039;&#039;OR&#039;&#039;&#039;).&amp;lt;br&amp;gt;&lt;br /&gt;
A filter has a unique &#039;&#039;&#039;name&#039;&#039;&#039; with an optional &#039;&#039;&#039;description&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Conditions===&lt;br /&gt;
&lt;br /&gt;
[[Image:filter.png]]&lt;br /&gt;
&lt;br /&gt;
There are five or seven condition sections depending on what is selected under &#039;&#039;&#039;States&#039;&#039;&#039;. Conditions inside same section are &#039;&#039;&#039;OR&#039;&#039;&#039; associated while different sections are &#039;&#039;&#039;AND&#039;&#039;&#039; associated.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(Object == Terra &#039;&#039;&#039;OR&#039;&#039;&#039; Object == Uranus) &#039;&#039;&#039;AND&#039;&#039;&#039; (PBX == sifi) &#039;&#039;&#039;AND&#039;&#039;&#039; (Number == 0049%)&lt;br /&gt;
&lt;br /&gt;
====Base filter====&lt;br /&gt;
&lt;br /&gt;
If you select another filter as base filter, the conditions of the base filter are implicitly &#039;&#039;&#039;AND&#039;&#039;&#039; conjuncted, when the current filter is used.&amp;lt;br&amp;gt;&lt;br /&gt;
So if the base filter defines two PBX values, e.g. &amp;quot;Berlin&amp;quot; and &amp;quot;Hamburg&amp;quot; and the current filter defines one PBX value, e.g. &amp;quot;Berlin&amp;quot;, only objects of the PBX &amp;quot;Berlin&amp;quot; will be filtered:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 (pbx=&amp;quot;Berlin&amp;quot;) AND (pbx=&amp;quot;Berlin&amp;quot; OR pbx=&amp;quot;Hamburg&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
If a user defines an own filter for his reports, he has to use a base filter, which he is allowed to use. So each filter, which he uses, will have at least one base filter condition, which the admin has defined.&lt;br /&gt;
&lt;br /&gt;
 You have to take care with the conditions of the current filter and the base filter, &lt;br /&gt;
 as it is now easy to create a filter with mutually exclusive conditions, e.g. if &lt;br /&gt;
 the filter has pbx=&amp;quot;Berlin&amp;quot; and the base filter pbx=&amp;quot;Hamburg&amp;quot; =&amp;gt; no matching records.&lt;br /&gt;
&lt;br /&gt;
====Anonym====&lt;br /&gt;
&lt;br /&gt;
If you check this flag, a report created with this filter or with a filter, where this filter is a basefilter, will by anonymized.&lt;br /&gt;
&lt;br /&gt;
====Local====&lt;br /&gt;
&lt;br /&gt;
Define one ore more conditions for the local party, defined by:&lt;br /&gt;
&lt;br /&gt;
* Object: the cn/PBX object name&lt;br /&gt;
* Number: the number&lt;br /&gt;
* Groups: a group of the PBX object&lt;br /&gt;
&lt;br /&gt;
====Remote====&lt;br /&gt;
&lt;br /&gt;
Define one or more conditions for the remote party, defined by:&lt;br /&gt;
&lt;br /&gt;
* Number: the number&lt;br /&gt;
* Remote display name: the display name&lt;br /&gt;
&lt;br /&gt;
====PBX====&lt;br /&gt;
&lt;br /&gt;
Define one ore more conditions for the PBX, defined by:&lt;br /&gt;
&lt;br /&gt;
* PBX: the PBX name&lt;br /&gt;
* Node: the node name&lt;br /&gt;
&lt;br /&gt;
====States====&lt;br /&gt;
&lt;br /&gt;
* No Response&lt;br /&gt;
* Connected&lt;br /&gt;
* Busy&lt;br /&gt;
* No Channel&lt;br /&gt;
&lt;br /&gt;
====Directions====&lt;br /&gt;
&lt;br /&gt;
* Incoming&lt;br /&gt;
* Outgoing&lt;br /&gt;
* Transfer: calls, which have been transferred to the current local party&lt;br /&gt;
* Call Forward: calls, which have been forwarded to the current local party&lt;br /&gt;
&lt;br /&gt;
====Call Duration====&lt;br /&gt;
&lt;br /&gt;
Time the call was connected.&lt;br /&gt;
&lt;br /&gt;
This condition will be &#039;&#039;&#039;AND&#039;&#039;&#039; with the others if all &#039;&#039;&#039;States&#039;&#039;&#039; are selected.&amp;lt;br&amp;gt;&lt;br /&gt;
If Busy, No Channel or No Response is unselected, then the filter will search for Connected calls with connected time greater or smaller than &#039;&#039;&#039;Call Duration&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
====Alert Duration====&lt;br /&gt;
&lt;br /&gt;
Time the call was ringing independent of the status of the call afterwards.&lt;br /&gt;
&lt;br /&gt;
This condition will be &#039;&#039;&#039;AND&#039;&#039;&#039; with the others if all &#039;&#039;&#039;States&#039;&#039;&#039; are selected.&amp;lt;br&amp;gt;&lt;br /&gt;
If Busy, No Channel or Connected is unselected, then the filter will search only for Not Connected Calls that were ringing more or less time than &#039;&#039;&#039;Alert Duration&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
====Report times====&lt;br /&gt;
&lt;br /&gt;
Define the time where calls should be counted.&amp;lt;br&amp;gt;&lt;br /&gt;
You can optionally define the weekday(s) of calls.&lt;br /&gt;
&lt;br /&gt;
====Images====&lt;br /&gt;
&lt;br /&gt;
* Logo: This must be 32x32 pixel image in jpeg or png format.&amp;lt;br&amp;gt;&lt;br /&gt;
* Footer: Maximum width of 450 pels and maximum height of 50 pels. Also jpeg or png format.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Using Patterns====&lt;br /&gt;
&lt;br /&gt;
You can use these [[ #PostgreSQL_Patterns | PostgreSQL Patterns ]] for every condition.&lt;br /&gt;
&lt;br /&gt;
==Report Creation==&lt;br /&gt;
===General===&lt;br /&gt;
&lt;br /&gt;
It is possible to generate call lists for single users or more complex reports by means of filters.&lt;br /&gt;
&lt;br /&gt;
===Web Interface===&lt;br /&gt;
&lt;br /&gt;
Reporting application provides a web interface to generate reports.&lt;br /&gt;
&lt;br /&gt;
[[Image:Report_hide.png]]&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PBX&#039;&#039;&#039;: select the PBX for the report. The values of the drop down box depend on your [[#PBX | PBX configuration]]&lt;br /&gt;
* &#039;&#039;&#039;Object (Long Name)&#039;&#039;&#039;: corresponds to the PBX Long Name assigned to a specific user (% is a special postgresql character, which matches any string)&lt;br /&gt;
* &#039;&#039;&#039;Filter&#039;&#039;&#039;: one or multiple filters can be defined (&#039;&#039;&#039;OR&#039;&#039;&#039; joined)&lt;br /&gt;
* &#039;&#039;&#039;Group by&#039;&#039;&#039;: the result can be grouped by Date or Object&lt;br /&gt;
* &#039;&#039;&#039;Hide last X digits&#039;&#039;&#039;: you may replace the last digits of an external number with a &#039;*&#039;. &lt;br /&gt;
** LDAP must be configured in order to use this capability but if you want no LDAP funtionality, just unset the Active Box in LDAP.&lt;br /&gt;
** Actually, the pbx/phys value of a call is matched against the LDAP pbx value and if the number starts with the external line prefix.&lt;br /&gt;
* &#039;&#039;&#039;Anonym&#039;&#039;&#039;: do not show internal names/numbers&lt;br /&gt;
** If anonym is set, hide last digits is set to 3, if not set&lt;br /&gt;
* &#039;&#039;&#039;Filter Info&#039;&#039;&#039;: the report will contain information about the configured settings and filter information&lt;br /&gt;
* &#039;&#039;&#039;Displayed Duration&#039;&#039;&#039;: &lt;br /&gt;
** Call Duration (Total): the total call duration, e.g. with the duration of a subsequent transfer&lt;br /&gt;
** Call Duration (User): just the time, the user was connected&lt;br /&gt;
** Billing Duration: the duration, a user must be billed for&lt;br /&gt;
** None of these durations contain the alert duration, which is separatly listed&lt;br /&gt;
&lt;br /&gt;
[[Image:reporting_report.png | A normal report. The summary shows incoming / outgoing summaries]]&lt;br /&gt;
&lt;br /&gt;
[[Image:grouped_report.png | A grouped report. Each group has an own summary]]&lt;br /&gt;
&lt;br /&gt;
====Print====&lt;br /&gt;
&lt;br /&gt;
Click the print icon to open a printable version of the report.&lt;br /&gt;
&lt;br /&gt;
====Save====&lt;br /&gt;
You can save the report as &#039;&#039;&#039;pdf&#039;&#039;&#039; or as &#039;&#039;&#039;xml&#039;&#039;&#039; by using the corresponding icon.&amp;lt;br&amp;gt;&lt;br /&gt;
You can also download a report in &#039;&#039;&#039;csv&#039;&#039;&#039; format without call history. The report uses &#039;&#039;&#039;comma&#039;&#039;&#039; as delimeter character, &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; as text qualifier and &#039;&#039;&#039;PBX Object/Remote Party&#039;&#039;&#039; columns should be defined as Text (avoid telephone numbers to be considered as numbers by Excel). &#039;&#039;&#039;UTF-8&#039;&#039;&#039; must be used as character set.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Sorting====&lt;br /&gt;
&lt;br /&gt;
Each sortable column has a clickable column head. This sorting will be also used when opening the printable version or saving the report as PDF.&lt;br /&gt;
&lt;br /&gt;
====Icons====&lt;br /&gt;
The icons are explained in the [[#Call list icons|appendix]].&lt;br /&gt;
&lt;br /&gt;
===Remote Interface===&lt;br /&gt;
&lt;br /&gt;
See [[#Remote_Interface_2|Remote Interface Appendix]]&lt;br /&gt;
&lt;br /&gt;
==Backup and Restore==&lt;br /&gt;
&lt;br /&gt;
You can both manually and automatically backup the database and configuration files for Reporting under [[Reference10:Concept_Linux_Application_Platform#Backup|Administration/Backup]] in the application platform.&lt;br /&gt;
&lt;br /&gt;
Configuration details for the update server can be found [[Reference10:Concept_Linux_Application_Platform#Backup|here]].&lt;br /&gt;
&lt;br /&gt;
===Configuration Files===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;saveinnovaphone-reportingcfgs&#039;&#039;&#039; is the command used to automatically save configuration files with the [[Reference10:Concept_Linux_Application_Platform#Command_File|Command File]].&lt;br /&gt;
&lt;br /&gt;
===Data===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;saveinnovaphone-reportingdb&#039;&#039;&#039; is the command to automatically backup the whole innovaphone Reporting database with the [[Reference10:Concept_Linux_Application_Platform#Command_File|Command File]].&lt;br /&gt;
&lt;br /&gt;
 If you restore the reporting database, you should keep in mind, that this might take several hours for a system&lt;br /&gt;
 on a CF card, depending on the size of the restored database. The backup process itself is quite fast with a few minutes.&lt;br /&gt;
&lt;br /&gt;
===Logs===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;saveinnovaphone-reportinglogs&#039;&#039;&#039; to save log files with the [[Reference10:Concept_Linux_Application_Platform#Command_File|Command File]].&lt;br /&gt;
&lt;br /&gt;
==Appendix==&lt;br /&gt;
===PostgreSQL Patterns===&lt;br /&gt;
For filter conditions or for the pbx object value you can use the following patterns inside a string:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;%&#039;&#039;&#039;: matches any string of zero or more characters&lt;br /&gt;
* &#039;&#039;&#039;_&#039;&#039;&#039;: matches any single character&lt;br /&gt;
&lt;br /&gt;
 Example:&lt;br /&gt;
 &#039;&#039;&#039;Sat%&#039;&#039;&#039; will match all pbx objects, which start with the string &#039;&#039;&#039;Sat&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
 We do always perform case insensitiv searches!&lt;br /&gt;
&lt;br /&gt;
===innovaphone Reporting XML===&lt;br /&gt;
&amp;lt;code type=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
    &amp;lt;application&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;innovaphone Reporting&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;desc&amp;gt;Reporting software&amp;lt;/desc&amp;gt;&lt;br /&gt;
    &amp;lt;directory&amp;gt;innovaphone-reporting&amp;lt;/directory&amp;gt;&lt;br /&gt;
    &amp;lt;href&amp;gt;report.php&amp;lt;/href&amp;gt;&lt;br /&gt;
    &amp;lt;linux-username&amp;gt;innovaphone-reporting&amp;lt;/linux-username&amp;gt;&lt;br /&gt;
    &amp;lt;packages&amp;gt;&lt;br /&gt;
        &amp;lt;package&amp;gt;php5-gd&amp;lt;/package&amp;gt;&lt;br /&gt;
        &amp;lt;package&amp;gt;php5-ldap&amp;lt;/package&amp;gt;&lt;br /&gt;
    &amp;lt;/packages&amp;gt;&lt;br /&gt;
    &amp;lt;database name=&amp;quot;innovaphone-reporting&amp;quot; username=&amp;quot;innovaphone-reporting&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;cronjobs&amp;gt;&lt;br /&gt;
        &amp;lt;cronjob script=&amp;quot;/etc/cron.d/reporting_replication&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;cronjob script=&amp;quot;/etc/cron.d/reporting_cleanup&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;cronjob script=&amp;quot;/etc/cron.d/reporting_mails&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/cronjobs&amp;gt;&lt;br /&gt;
    &amp;lt;log-files&amp;gt;&lt;br /&gt;
        &amp;lt;log title=&amp;quot;Postgresql-8.4&amp;quot; no-clear=&amp;quot;true&amp;quot;&amp;gt;/var/log/postgresql/postgresql-8.4-main.log&amp;lt;/log&amp;gt;&lt;br /&gt;
        &amp;lt;log title=&amp;quot;Reporting cleanup&amp;quot;&amp;gt;/var/www/innovaphone/apps/innovaphone-reporting/log/reporting_cleanup.log&amp;lt;/log&amp;gt;&lt;br /&gt;
        &amp;lt;log title=&amp;quot;innovaphone Reporting&amp;quot;&amp;gt;/var/www/innovaphone/apps/innovaphone-reporting/log/innovaphone-reporting.log&amp;lt;/log&amp;gt;&lt;br /&gt;
        &amp;lt;log title=&amp;quot;innovaphone Reporting Replication&amp;quot;&amp;gt;/var/www/innovaphone/apps/innovaphone-reporting/log/reporting_replication.log&amp;lt;/log&amp;gt;&lt;br /&gt;
    &amp;lt;/log-files&amp;gt;&lt;br /&gt;
    &amp;lt;config-files&amp;gt;&lt;br /&gt;
        &amp;lt;conf&amp;gt;/etc/postgresql/8.4/main/pg_hba.conf&amp;lt;/conf&amp;gt;&lt;br /&gt;
        &amp;lt;conf&amp;gt;/etc/postgresql/8.4/main/postgresql.conf&amp;lt;/conf&amp;gt;&lt;br /&gt;
        &amp;lt;conf&amp;gt;/home/innovaphone-reporting/reporting.conf&amp;lt;/conf&amp;gt;&lt;br /&gt;
        &amp;lt;conf&amp;gt;/home/root/ssl_cert/server.key&amp;lt;/conf&amp;gt;&lt;br /&gt;
        &amp;lt;conf&amp;gt;/home/root/ssl_cert/server.crt&amp;lt;/conf&amp;gt;&lt;br /&gt;
        &amp;lt;conf&amp;gt;/etc/cron.d/reporting_replication&amp;lt;/conf&amp;gt;&lt;br /&gt;
        &amp;lt;conf&amp;gt;/etc/cron.d/reporting_cleanup&amp;lt;/conf&amp;gt;&lt;br /&gt;
        &amp;lt;conf&amp;gt;/etc/cron.d/reporting_mails&amp;lt;/conf&amp;gt;&lt;br /&gt;
	&amp;lt;conf&amp;gt;/var/www/innovaphone/apps/innovaphone-reporting/report_images&amp;lt;/conf&amp;gt;&lt;br /&gt;
    &amp;lt;/config-files&amp;gt;&lt;br /&gt;
    &amp;lt;backup&amp;gt;&lt;br /&gt;
        &amp;lt;command title=&amp;quot;Save innovaphone Reporting configuration files&amp;quot; cmd=&amp;quot;saveinnovaphone-reportingcfgs&amp;quot; script=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;command title=&amp;quot;Save innovaphone Reporting database&amp;quot; cmd=&amp;quot;saveinnovaphone-reportingdb&amp;quot; script=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;command title=&amp;quot;Save innovaphone Reporting log files&amp;quot; cmd=&amp;quot;saveinnovaphone-reportinglogs&amp;quot; script=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/backup&amp;gt;&lt;br /&gt;
    &amp;lt;restore&amp;gt;&lt;br /&gt;
        &amp;lt;command title=&amp;quot;Restore innovaphone Reporting configuration files&amp;quot; cmd=&amp;quot;restoreinnovaphone-reportingcfgs&amp;quot; script=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;action&amp;gt;/etc/init.d/postgresql restart&amp;lt;/action&amp;gt;&lt;br /&gt;
            &amp;lt;action&amp;gt;/etc/init.d/cron restart&amp;lt;/action&amp;gt;&lt;br /&gt;
        &amp;lt;/command&amp;gt; &lt;br /&gt;
        &amp;lt;command title=&amp;quot;Restore innovaphone Reporting database&amp;quot; cmd=&amp;quot;restoreinnovaphone-reportingdb&amp;quot; script=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/restore&amp;gt;&lt;br /&gt;
    &amp;lt;uninstall script=&amp;quot;/usr/bin/sudo /usr/local/bin/uninstall_script.sh -f &#039;innovaphone-reporting.xml&#039; -linux_user yes -linux_group yes -database yes -database_user yes -log_script &#039;/var/www/innovaphone/log/appl_uninstall.log&#039;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;to-delete&amp;gt;&lt;br /&gt;
            &amp;lt;to-del path=&amp;quot;/usr/local/bin/reporting_cleanup.sh&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;to-del path=&amp;quot;/usr/local/bin/reporting_replication.out&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;to-del path=&amp;quot;/usr/local/bin/reporting_replication.sh&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;to-del path=&amp;quot;/home/innovaphone-reporting/tmp&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/to-delete&amp;gt;&lt;br /&gt;
    &amp;lt;/uninstall&amp;gt;&lt;br /&gt;
    &amp;lt;lighttpd-auth&amp;gt;1&amp;lt;/lighttpd-auth&amp;gt;&lt;br /&gt;
    &amp;lt;public-web-paths&amp;gt;&lt;br /&gt;
        &amp;lt;path&amp;gt;mypbx&amp;lt;/path&amp;gt;&lt;br /&gt;
        &amp;lt;path&amp;gt;user&amp;lt;/path&amp;gt;&lt;br /&gt;
    &amp;lt;/public-web-paths&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Installed Debian Packages===&lt;br /&gt;
&lt;br /&gt;
The following packages (and their dependencies) are installed with innovaphone Reporting:&lt;br /&gt;
&lt;br /&gt;
* php5-gd&lt;br /&gt;
* php5-ldap&lt;br /&gt;
&lt;br /&gt;
===Configuration Files===&lt;br /&gt;
&lt;br /&gt;
pg_hba.conf is the client authentication configuration file and controls which hosts are allowed to connect, how clients&lt;br /&gt;
are authenticated, which PostgreSQL user names they can use and which databases they can access.&lt;br /&gt;
&lt;br /&gt;
postgresql.conf is the PostgreSQL configuration file&lt;br /&gt;
&lt;br /&gt;
===Data Files===&lt;br /&gt;
&lt;br /&gt;
If you backup the innovaphone reporting database, you&#039;ll get a gz archiv, which contains the whole innovaphone-reporting database.&lt;br /&gt;
&lt;br /&gt;
===Report XML and CSV===&lt;br /&gt;
The field description below applies for the &#039;&#039;&#039;XML&#039;&#039;&#039; and &#039;&#039;&#039;CSV&#039;&#039;&#039; columns! &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code type=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;report&amp;gt;&lt;br /&gt;
    &amp;lt;record&amp;gt;&lt;br /&gt;
      ....&lt;br /&gt;
      &amp;lt;time time=&amp;quot;1301303966&amp;quot; utc=&amp;quot;1301303966&amp;quot;&amp;gt;2011-03-28 11:19:26&amp;lt;/time&amp;gt;&lt;br /&gt;
      &amp;lt;obj&amp;gt;Saturn&amp;lt;/obj&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;870998fee909d311b2ec009033105dc9&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;call&amp;gt;int&amp;lt;/call&amp;gt;&lt;br /&gt;
      &amp;lt;alert-duration seconds=&amp;quot;0&amp;quot;&amp;gt;0:00&amp;lt;/alert-duration&amp;gt;&lt;br /&gt;
      &amp;lt;flow&amp;gt;&lt;br /&gt;
        &amp;lt;ev caller=&amp;quot;ep1&amp;quot; ep1_number=&amp;quot;101&amp;quot; ep1_name=&amp;quot;saturn&amp;quot; ep1_dn=&amp;quot;Saturn&amp;quot; &lt;br /&gt;
                         ep2_number=&amp;quot;102&amp;quot; ep2_name=&amp;quot;uranus&amp;quot; ep2_dn=&amp;quot;Uranus&amp;quot; status=&amp;quot;co&amp;quot; entry=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;/flow&amp;gt;&lt;br /&gt;
      &amp;lt;call-duration seconds=&amp;quot;2&amp;quot;&amp;gt;0:02&amp;lt;/call-duration&amp;gt;&lt;br /&gt;
      &amp;lt;billing-duration seconds=&amp;quot;2&amp;quot;&amp;gt;0:02&amp;lt;/billing-duration&amp;gt;&lt;br /&gt;
      &amp;lt;conn-duration seconds=&amp;quot;2&amp;quot;&amp;gt;0:02&amp;lt;/conn-duration&amp;gt;&lt;br /&gt;
      &amp;lt;groups&amp;gt;&lt;br /&gt;
        &amp;lt;group&amp;gt;test&amp;lt;/group&amp;gt;&lt;br /&gt;
        &amp;lt;group&amp;gt;test2&amp;lt;/group&amp;gt;&lt;br /&gt;
      &amp;lt;/groups&amp;gt;&lt;br /&gt;
      &amp;lt;node&amp;gt;root&amp;lt;/node&amp;gt;&lt;br /&gt;
      &amp;lt;pbx&amp;gt;.&amp;lt;/pbx&amp;gt;&lt;br /&gt;
      &amp;lt;cause&amp;gt;&amp;lt;/cause&amp;gt;&lt;br /&gt;
      &amp;lt;dir&amp;gt;o&amp;lt;/dir&amp;gt;&lt;br /&gt;
      &amp;lt;status&amp;gt;co&amp;lt;/status&amp;gt;&lt;br /&gt;
      &amp;lt;type/&amp;gt;&lt;br /&gt;
      &amp;lt;remote number=&amp;quot;102&amp;quot; name=&amp;quot;uranus&amp;quot; dn=&amp;quot;Uranus&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;callback  number=&amp;quot;456&amp;quot; name=&amp;quot;abc&amp;quot; dn=&amp;quot;123&amp;quot; time=&amp;quot;1301305962&amp;quot;&amp;gt;2011-03-28 11:52:42&amp;lt;/callback&amp;gt;&lt;br /&gt;
    &amp;lt;/record&amp;gt;&lt;br /&gt;
    ....&lt;br /&gt;
  &amp;lt;/report&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* time: the node contains a formatted time string of the local time&lt;br /&gt;
** attribute &#039;&#039;&#039;time&#039;&#039;&#039; is a unix timestamp (referring to the local time stamp of the CDR)&lt;br /&gt;
** attribute &#039;&#039;&#039;utc&#039;&#039;&#039; is a unix timestamp (referring to the utc time stamp of the CDR)&lt;br /&gt;
* obj: the PBX object name (also called cn)&lt;br /&gt;
* id: the conference id of the call&lt;br /&gt;
* call: &#039;&#039;&#039;int&#039;&#039;&#039; (internal) or &#039;&#039;&#039;ext&#039;&#039;&#039; (external) call&lt;br /&gt;
* flow &#039;&#039;&#039;(XML only)&#039;&#039;&#039;: the call flow&lt;br /&gt;
** ev&lt;br /&gt;
***ep1 (ep1_number, ep1_name, ep1_dn): the left side of the call&lt;br /&gt;
***ep2 (ep2_number, ep2_name, ep2_dn): the right side of the call&lt;br /&gt;
***caller: &#039;&#039;&#039;ep1&#039;&#039;&#039;, &#039;&#039;&#039;ep2&#039;&#039;&#039; or empty, if unknown&lt;br /&gt;
***status: &#039;&#039;&#039;co&#039;&#039;&#039; (connected), &#039;&#039;&#039;al&#039;&#039;&#039; (alert), &#039;&#039;&#039;er&#039;&#039;&#039; (error) or &#039;&#039;&#039;bu&#039;&#039;&#039; (busy) state of the current event&lt;br /&gt;
***entry: &#039;&#039;&#039;true&#039;&#039;&#039; for the entry event of the local object&lt;br /&gt;
***type: &#039;&#039;&#039;cf&#039;&#039;&#039; (call forward), &#039;&#039;&#039;ct&#039;&#039;&#039; (call transfer)&lt;br /&gt;
* Original Called &#039;&#039;&#039;(CSV only)&#039;&#039;&#039;: In case of Call flow; The original called device&lt;br /&gt;
* Diverting &#039;&#039;&#039;(CSV only)&#039;&#039;&#039;: In case of Call flow; The diverting device&lt;br /&gt;
* Transferring &#039;&#039;&#039;(CSV only)&#039;&#039;&#039;: In case of Call flow; The transferring device&lt;br /&gt;
* groups &#039;&#039;&#039;(XML only)&#039;&#039;&#039;: the groups of the PBX object&lt;br /&gt;
* node: the node of the PBX object&lt;br /&gt;
* pbx: the pbx of the PBX object&lt;br /&gt;
* cause: the decimal disconnect reason of the call (see [[Reference:ISDN_Cause_Codes]])&lt;br /&gt;
* remote:&lt;br /&gt;
** outgoing calls -&amp;gt; dialed endpoint&lt;br /&gt;
** incoming calls -&amp;gt; first ep2 above entry event or entry event if this is the first one&lt;br /&gt;
** incoming calls with incoming transfer after entry event -&amp;gt; transfer target&lt;br /&gt;
* status:&lt;br /&gt;
** outgoing calls -&amp;gt; best found status in call flow&lt;br /&gt;
** incoming calls -&amp;gt; status of entry event&lt;br /&gt;
* type: the type of the entry event or, if not set, the type of the next event, if given&lt;br /&gt;
** empty: direct call&lt;br /&gt;
** &#039;&#039;&#039;ct&#039;&#039;&#039;: call transfer&lt;br /&gt;
** &#039;&#039;&#039;cf&#039;&#039;&#039;: call forward&lt;br /&gt;
** &#039;&#039;&#039;cct&#039;&#039;&#039;: call transfer with consultation&lt;br /&gt;
** &#039;&#039;&#039;pu&#039;&#039;&#039;: call pickup&lt;br /&gt;
* dir: o (outgoing) if the first event is the entry event and the caller is ep1&lt;br /&gt;
* dir: i (incoming) if not o&lt;br /&gt;
* alert-duration: alert time&lt;br /&gt;
*Billing Duration: the duration, a user must be billed for&lt;br /&gt;
**  outgoing call -&amp;gt; duration from the first event until the last event in the flow&lt;br /&gt;
**  incoming call -&amp;gt; duration from the first transfer/forward event until the last event in the flow&lt;br /&gt;
* call-duration/Call Duration (Total): duration of the whole call, e.g. with the duration of a subsequent transfer&lt;br /&gt;
* conn-duration/Call Duration (User): just the time, the user was connected. Duration from the entry event until the event, where the local endpoint isn&#039;t connected any more&lt;br /&gt;
* callback: &#039;&#039;&#039;name&#039;&#039;&#039;, &#039;&#039;&#039;number&#039;&#039;&#039;, &#039;&#039;&#039;dn&#039;&#039;&#039; and &#039;&#039;&#039;time&#039;&#039;&#039; if this call has been callbacked using mypbx (time referrs to the UTC time of the callback)&lt;br /&gt;
* Further Registration: If more than one devices is registered to the same object, each device creates a CDR. This field identifies the additional CDRs for the same call&lt;br /&gt;
* Object Info &#039;&#039;&#039;(CSV only)&#039;&#039;&#039;: combination of object names and number&lt;br /&gt;
* Date &#039;&#039;&#039;(CSV only)&#039;&#039;&#039;: extracted date only from the time_string&lt;br /&gt;
* Time_2 &#039;&#039;&#039;(CSV only)&#039;&#039;&#039;: extracted time only from the time_string&lt;br /&gt;
&lt;br /&gt;
===Database Structure===&lt;br /&gt;
&lt;br /&gt;
====cdrs====&lt;br /&gt;
Each received cdr-xml is formed by a cdr tag and an undefined number of event and group tags.&lt;br /&gt;
(Refer to: [[Reference10:Concept_Call_Detail_Record_CDR_PBX|CDR]])&lt;br /&gt;
&lt;br /&gt;
This section is composed by four tables: cdrs, events, groups and cdr_properties.&lt;br /&gt;
The first three tables contain the corresponding fields to store the information contained in the cdr, event and group tags.&amp;lt;br&amp;gt;&lt;br /&gt;
Each CDR represents the call in the view of one PBX object. So there might be multiple CDRs for one call if multiple PBX objects are used within the call.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;cdr fields:&#039;&#039;&#039; id, guid, sys, pbx, node, device, cn, e164, h323, dir, utc, local.&lt;br /&gt;
* &#039;&#039;&#039;event fields:&#039;&#039;&#039; id, msg, type, e164, h323, conf, cause, time, cdr_id, order_index.&lt;br /&gt;
* &#039;&#039;&#039;group fields:&#039;&#039;&#039; id, name, active, type, cdr_id.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;id&#039;&#039;&#039; field is assigned by postgresql for each entry and has nothing to do with the information present in the cdr. It is different for each entry inside the table.&lt;br /&gt;
&lt;br /&gt;
The events table has two additional fields, called cdr_id, to associate these events to the corresponding cdr entry and order_index to keep their position inside the cdr.&lt;br /&gt;
Groups table has also the cdr_id field to associate the group entries to the corresponding cdr and events entries.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;cdr_properties&#039;&#039;&#039; table contains relevant information associated with the call such as call_length, alert_length or call_flow. It also presents a cdr_id field.&lt;br /&gt;
&lt;br /&gt;
====filters====&lt;br /&gt;
&lt;br /&gt;
This section is composed by three tables: filter_columns, filter_conditions and filters. &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;filter_columns&#039;&#039;&#039; is not used for the time being. This is supposed to contain the columns the user wants to see in his report, but right now, just default columns (Time/Object/Duration/Left/Direction/State/Right) are shown.&lt;br /&gt;
* &#039;&#039;&#039;filter&#039;&#039;&#039; contains the filter name and description plus two conditions call_state (No Response, Connected, Busy and No Channel) and direction (Incoming, Outgoing, Transfer and Call Forward).&lt;br /&gt;
* &#039;&#039;&#039;filter_conditions&#039;&#039;&#039; contains the defined conditions for a filter&lt;br /&gt;
&lt;br /&gt;
All three tables are related through an id.&lt;br /&gt;
&lt;br /&gt;
====cdr_users====&lt;br /&gt;
&lt;br /&gt;
This table contains a timestamp &#039;&#039;&#039;missed_calls_time&#039;&#039;&#039; for the last report access by a user &#039;&#039;&#039;cn&#039;&#039;&#039; + (&#039;&#039;&#039;pbx&#039;&#039;&#039; OR &#039;&#039;&#039;sys&#039;&#039;&#039;) with mypbx. It is used to retrieve information about missed calls since the last use of mypbx.&amp;lt;br&amp;gt;&lt;br /&gt;
The timestamp &#039;&#039;&#039;clear_report_time&#039;&#039;&#039; indicates the last clearance time.&amp;lt;br&amp;gt;&lt;br /&gt;
email, sys (system name) and pbx (PBX name) are also stored for each user.&lt;br /&gt;
&lt;br /&gt;
====replication====&lt;br /&gt;
&lt;br /&gt;
Contains information of the last replication run, which is used to sync master/standby installations.&lt;br /&gt;
&lt;br /&gt;
===Replication===&lt;br /&gt;
&lt;br /&gt;
The replication between the master and standby servers is divided into two steps:&lt;br /&gt;
&lt;br /&gt;
====CDRs====&lt;br /&gt;
Both master and standby server keep an information about the last replicated CDR. From this CDR on, they retrieve all CDR guids (32 bytes) from all new CDRs from the other server. If a guid already exists in the local database, the CDR is skipped, otherwise it is replicated.&amp;lt;br&amp;gt;&lt;br /&gt;
So there is a minimal data exchange for already existing CDRs and each new CDR is only processed once.&lt;br /&gt;
&lt;br /&gt;
====Filters/LDAP/Report Mails/Users====&lt;br /&gt;
The master server does nothing here, but the &#039;&#039;&#039;standby&#039;&#039;&#039; deletes all filters, LDAP servers, report mails and users and replicates all from the master.&amp;lt;br&amp;gt;&lt;br /&gt;
So these items from the master server can be used, but not changed, on the standby server.&lt;br /&gt;
&lt;br /&gt;
===Remote Interface===&lt;br /&gt;
&lt;br /&gt;
You can retrieve the PDF/XML/CSV report with a remote interface.&amp;lt;br&amp;gt;&lt;br /&gt;
Make a POST or GET HTTP request to &#039;&#039;&#039;http(s)://Linux-IP/apps/innovaphone-reporting/report.php&#039;&#039;&#039; with the following parameters:&lt;br /&gt;
&lt;br /&gt;
* remote: mandatory for a remote request!&lt;br /&gt;
** &#039;&#039;&#039;1&#039;&#039;&#039;&lt;br /&gt;
* from : the from date/time as UNIX timestamp &#039;&#039;&#039;OR&#039;&#039;&#039; date/time string as described [ http://www.php.net/manual/de/datetime.formats.php | here ].&lt;br /&gt;
* to: the to date/time (format see &#039;&#039;&#039;from&#039;&#039;&#039;)&lt;br /&gt;
* [format]: the return format, allowed values:&lt;br /&gt;
** &#039;&#039;&#039;xml&#039;&#039;&#039;: default&lt;br /&gt;
** &#039;&#039;&#039;pdf&#039;&#039;&#039;&lt;br /&gt;
** &#039;&#039;&#039;csv&#039;&#039;&#039;&lt;br /&gt;
* [sortby] : the report sorting, allowed values:&lt;br /&gt;
** &#039;&#039;&#039;time&#039;&#039;&#039;: default&lt;br /&gt;
** &#039;&#039;&#039;obj&#039;&#039;&#039;: sort by pbx object name&lt;br /&gt;
** &#039;&#039;&#039;call-duration&#039;&#039;&#039;&lt;br /&gt;
** &#039;&#039;&#039;alert-duration&#039;&#039;&#039;&lt;br /&gt;
** &#039;&#039;&#039;dir&#039;&#039;&#039;: sort by call direction&lt;br /&gt;
* [sortorder]: the report sort order, allowed values:&lt;br /&gt;
** &#039;&#039;&#039;ascending&#039;&#039;&#039;: default&lt;br /&gt;
** &#039;&#039;&#039;descending&#039;&#039;&#039;&lt;br /&gt;
* [groupby]: report grouping&lt;br /&gt;
** default empty/not set: no grouping&lt;br /&gt;
** &#039;&#039;&#039;local_stamp&#039;&#039;&#039;: group by time&lt;br /&gt;
** &#039;&#039;&#039;cn&#039;&#039;&#039;: group by pbx object name&lt;br /&gt;
* [hidedigits]: hide the last X digits of external numbers&lt;br /&gt;
* pbx: search for this PBX (mandatory!)&lt;br /&gt;
* pbxobject: search for this PBX object (you can leave this, if you use filterX)&lt;br /&gt;
* filterX: use a filter with its name. You can use multiple filters with filter1=test, filter2=test2...&lt;br /&gt;
* [filterinfo]: show the filter information in a created report (&amp;quot;true&amp;quot; or &amp;quot;false&amp;quot;)&lt;br /&gt;
* [lang]: the language, e.g. &amp;quot;en&amp;quot; or &amp;quot;de&amp;quot;&lt;br /&gt;
* [displayedduration]: &lt;br /&gt;
** &#039;&#039;&#039;call_duration&#039;&#039;&#039;: default Call Duration (Total)&lt;br /&gt;
** &#039;&#039;&#039;conn_duration&#039;&#039;&#039;: Call Duration (User)&lt;br /&gt;
** &#039;&#039;&#039;billing_duration&#039;&#039;&#039;: Billing Duration&lt;br /&gt;
* [anonym]: anonymize internal names/numbers (&amp;quot;true&amp;quot; or &amp;quot;false&amp;quot;)&lt;br /&gt;
* [bulk]: creates user reports (see [[ #Report_Mails | Report Mails ]])&lt;br /&gt;
* [sender]: sender email adress of the report&lt;br /&gt;
* [confid]: query calls of a certain conference ID&lt;br /&gt;
** you can omit the following fields, if using confid: &#039;&#039;&#039;from&#039;&#039;&#039;, &#039;&#039;&#039;to&#039;&#039;&#039;, &#039;&#039;&#039;pbx&#039;&#039;&#039;, &#039;&#039;&#039;pbxobject&#039;&#039;&#039;, &#039;&#039;&#039;filterX&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 Parameters in [] are optional.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;pbxobject&#039;&#039;&#039; supports [[ #PostgreSQL_Patterns | PostgreSQL Patterns ]].&lt;br /&gt;
&lt;br /&gt;
 Example:&lt;br /&gt;
 https://172.16.14.123/apps/innovaphone-reporting/report.php?remote=1&amp;amp;from=2011-03-29&amp;amp;to=2011-03-30&amp;amp;format=xml&amp;amp;pbxobject=Saturn&lt;br /&gt;
 Gets all records between 2011-03-29 and 2011-03-30 for the pbx object Saturn.&lt;br /&gt;
&lt;br /&gt;
 Example:&lt;br /&gt;
 https://172.16.14.123/apps/innovaphone-reporting/report.php?remote=1&amp;amp;from=2011-03-29&amp;amp;to=2011-03-30&amp;amp;format=xml&amp;amp;filter1=test&amp;amp;filter2=test2&lt;br /&gt;
 Gets all records between 2011-03-29 and 2011-03-30 for the filters test and test2.&lt;br /&gt;
&lt;br /&gt;
===Tools===&lt;br /&gt;
&lt;br /&gt;
====NetDrive====&lt;br /&gt;
&lt;br /&gt;
[http://www.heise.de/software/download/netdrive/55134 NetDrive] is a usefull webdav client, which can be used to access webdav of the innovaphone application platform.&lt;br /&gt;
&lt;br /&gt;
====PGAdmin====&lt;br /&gt;
&lt;br /&gt;
[http://www.pgadmin.org/ PGAdmin] is an administration tool for PostgreSQL databases.&lt;br /&gt;
&lt;br /&gt;
====Putty====&lt;br /&gt;
&lt;br /&gt;
[http://www.putty.org/ Putty] is SSH client to connect to the linux application platform.&lt;br /&gt;
&lt;br /&gt;
===Call list icons===&lt;br /&gt;
The direction of the icon arrow depends on the call flow.&lt;br /&gt;
&lt;br /&gt;
* [[Image:reporting_conn.jpg]]: a connected call&lt;br /&gt;
* [[Image:reporting_busy.jpg]]: busy destination&lt;br /&gt;
* [[Image:reporting_no_res.jpg]]: no response from destination&lt;br /&gt;
* [[Image:reporting_error.jpg]]: an error occurred, like &amp;quot;no channel available&amp;quot; during the call setup&lt;br /&gt;
* [[Image:reporting_ct.jpg]]: call transfer&lt;br /&gt;
* [[Image:reporting_cct.jpg]]: call transfer with consultation&lt;br /&gt;
* [[Image:reporting_cf.jpg]]: call forward&lt;br /&gt;
* [[Image:Reporting_pickup.jpg]]: call pickup (or SOAP redirect)&lt;br /&gt;
* [[Image:reporting_dir.jpg]]: call direction&lt;br /&gt;
&lt;br /&gt;
A small arrow on a call state icon indicates a callback done with mxPBY, e.g.:&lt;br /&gt;
* [[Image:reporting_busy_callback.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Known Problems==&lt;br /&gt;
===Replication===&lt;br /&gt;
====Callback information====&lt;br /&gt;
The callback information get lost in the following scenario:&lt;br /&gt;
* The callback CDR is already replicated on both master and standby&lt;br /&gt;
* Master or standby is down&lt;br /&gt;
* A user calls back the CDR from point 1&lt;br /&gt;
&lt;br /&gt;
====Missed calls====&lt;br /&gt;
The information for missed calls is not replicated. So the first time, a standby server is used with mypbx, the missed calls information will be wrong. The second time will be correct again.&lt;br /&gt;
&lt;br /&gt;
===CDRs===&lt;br /&gt;
If the innovaphone Reporting is not running, for whatever reaseon, the device, which sends CDRs, currently stores up to 300kB CDRs data. So if one CDR has up to 2kB, 150 CDRs can be stored until the innovaphone Reporting should be up again, to avoid data loss.&lt;br /&gt;
&lt;br /&gt;
===Missing values for PBX drop down box===&lt;br /&gt;
If your database currently contains no CDRs of one of your PBX systems, you won&#039;t be able to select this system as PBX for report creation or report mail configuration!&lt;br /&gt;
&lt;br /&gt;
===Restoring Database with more than 2GB===&lt;br /&gt;
&lt;br /&gt;
When restoring database using the web browser there is a 2GB upload limit, so if our database have a bigger size the upload will fail.&lt;br /&gt;
&lt;br /&gt;
As alternative solution (if there is enough space):&lt;br /&gt;
&lt;br /&gt;
 1. Copy the gz database dump to the webdav folder&lt;br /&gt;
 2. Uncompress this dump: /bin/gzip -cd /var/www/innovaphone/webdav/dump.gz --uncompress &amp;gt; /tmp/db.dump&lt;br /&gt;
 3. Start the restore: /usr/local/bin/config.sh postgres db-restore /tmp/pg_schema.dump /tmp/db.dump innovaphone-reporting&lt;br /&gt;
 4. be patient, this might take a while&lt;br /&gt;
 5. delete /tmp/db.dump, /var/www/innovaphone/webdav/dump.gz and /tmp/pg_schema.dump (automatically created)&lt;br /&gt;
&lt;br /&gt;
===PDF generation for many CDRs may fail===&lt;br /&gt;
You may experience a &#039;&#039;&#039;Server error 500&#039;&#039;&#039; if you generate PDFs with many CDRs. The PDF library which is used to generate the PDFs fails.&lt;br /&gt;
Please generate multiple PDFs with a smaller timespan in such a case.&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
&lt;br /&gt;
[[Howto:Integration_reporting_and_voice_recording]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Concept|Reporting]]&lt;/div&gt;</summary>
		<author><name>Tru</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference10:Concept_Reporting&amp;diff=44512</id>
		<title>Reference10:Concept Reporting</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference10:Concept_Reporting&amp;diff=44512"/>
		<updated>2016-10-19T11:16:02Z</updated>

		<summary type="html">&lt;p&gt;Tru: /* Report XML */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Requirements==&lt;br /&gt;
&lt;br /&gt;
It is needed to have the [[Reference10:Concept_Linux_Application_Platform|application platform]] installed and running.&lt;br /&gt;
&lt;br /&gt;
===Calculation of required disk space===&lt;br /&gt;
&lt;br /&gt;
An average CDR requires 2080 bytes of disk space inside the database.&amp;lt;br&amp;gt;&lt;br /&gt;
So &#039;&#039;&#039;one GB&#039;&#039;&#039; disk space is needed for ~&#039;&#039;&#039;516222 CDRs&#039;&#039;&#039;. &amp;lt;br&amp;gt;&lt;br /&gt;
One call may have one or multiple CDRs depending on the call flow, the used PBX objects and their configuration.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;&lt;br /&gt;
It is strongly recommended that you try to precalculate your required disk space and configure a suiting value under [[#Configure_scheduled_CDR_cleanup]].&amp;lt;br&amp;gt;&lt;br /&gt;
Don&#039;t forget to configure the alarm server under [[Reference10:Concept_Linux_Application_Platform#Alarm_Server]] to receive an alarm if the disk is nearly full (10% disk space remaining).&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
&lt;br /&gt;
Download the latest version of innovaphone reporting.&lt;br /&gt;
&lt;br /&gt;
Log into the application platform, go to the Applications tag, click on [[ Reference10:Concept_Linux_Application_Platform#Upload.2FUpdate|Upload/Update]] and upload the downloaded file. &lt;br /&gt;
The installation will start automatically and the page will refresh every two seconds showing the installation process. &lt;br /&gt;
If there is no error during the installation you will see at the end &amp;quot;Installation was succesfull&amp;quot;. Otherwise,&lt;br /&gt;
you will get &amp;quot;installation failed&amp;quot; and the reason why it went wrong.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Hotfix===&lt;br /&gt;
If you have already installed the latest version of Reporting, simply download the Reporting...HotfixIncremental for your platform (VM or IPxx10) or if you have missed some hotfixes, download the Reporting...HotfixCumulative archive, which contains all hotfixes since hotfix1.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Upload this hotfix archive [[Reference10:Concept_Linux_Application_Platform#Upload.2FUpdate|here]].&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
===Device===&lt;br /&gt;
&lt;br /&gt;
====License====&lt;br /&gt;
It is required to have a Reporting license installed on your device. Check under [[ Reference10:General/License ]] if you already have one.&lt;br /&gt;
&lt;br /&gt;
 Set the Reporting flag for each PBX object, which should be reported on the objects properties page.&lt;br /&gt;
&lt;br /&gt;
====CDR Gateway====&lt;br /&gt;
Any innovaphone device which sends [[Reference10:Concept_Call_Detail_Record_CDR_PBX|CDRs]] to the reporting application must have at least one CDR interface configured under [[ Reference10:Gateway/CDR ]]:&lt;br /&gt;
&lt;br /&gt;
* Type: LOCAL-AP or REMOTE-AP/REMOTE-AP-S&lt;br /&gt;
&lt;br /&gt;
If HTTP/HTTPS is selected then some other parameters must be set:&lt;br /&gt;
&lt;br /&gt;
* Address: ip address of the application platform&lt;br /&gt;
* Port: 80 for REMOTE-AP&lt;br /&gt;
* Port: 443 for REMOTE-AP-S&lt;br /&gt;
* Method: POST/GET&lt;br /&gt;
* Path: ap/cdr.fcgi&lt;br /&gt;
&lt;br /&gt;
The application platform is by default password protected, so you&#039;ll have to perform one of these steps: &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* configure an authenticated URL for &#039;&#039;&#039;ap/cdr.fcgi&#039;&#039;&#039; under [[ Reference10:Services/HTTP/Client ]] (recommended)&lt;br /&gt;
** If you configure an authenticated URL (with the linux webserver credentials), don&#039;t forget to configure port 80 or port 443 for secure transport (Remote-AP-S) like https://111.111.111.111:443/ap or http://111.111.111.111:80/ap&lt;br /&gt;
* configure &#039;&#039;&#039;ap/cdr.fcgi&#039;&#039;&#039; as public web path on the innovaphone application platform [[ Reference10:Concept_Linux_Application_Platform#Change_web_server_properties_and_public_access_to_the_web.2Fwebdav|Public Web Paths ]]&lt;br /&gt;
&lt;br /&gt;
 Configure a second CDR interface, if you use [[#Replication|Replication]].&lt;br /&gt;
&lt;br /&gt;
====Enable PBX CDRs====&lt;br /&gt;
Enable the &amp;quot;Generate CDRs&amp;quot; flag under [[ Reference10:PBX/Config/General ]].&lt;br /&gt;
&lt;br /&gt;
===innovaphone Application Platform===&lt;br /&gt;
&lt;br /&gt;
If the reporting URL/user/password is not configured in your device as authenticated URL, configure &#039;&#039;&#039;ap/cdr.fcgi&#039;&#039;&#039; as public web path on the innovaphone application platform [[ Reference10:Concept_Linux_Application_Platform#Change_web_server_properties_and_public_access_to_the_web.2Fwebdav|Public Web Paths ]].&lt;br /&gt;
&lt;br /&gt;
===Database===&lt;br /&gt;
&lt;br /&gt;
Reporting creates the innovaphone-reporting database to store CDRs sent from any innovaphone devices (appendix 7.6 explains the database structure). &lt;br /&gt;
PostgreSQL is also available for other applications and any of them could create its own database. &lt;br /&gt;
&lt;br /&gt;
====Password====&lt;br /&gt;
&lt;br /&gt;
Reporting creates the database user &#039;&#039;&#039;innovaphone-reporting&#039;&#039;&#039; with default password &#039;&#039;&#039;reporting&#039;&#039;&#039;. &lt;br /&gt;
This password may be changed at the innovaphone Reporting page under Config/Database.&lt;br /&gt;
&lt;br /&gt;
====Remote Access====&lt;br /&gt;
&lt;br /&gt;
There are tools (PgAdmin III) that allow to connect to application databases remotely. &lt;br /&gt;
It is first needed to configure the IP you are connecting from under Config/Database at the innovaphone reporting page.&lt;br /&gt;
&lt;br /&gt;
For the PgAdmin III it is imporant to use innovaphone-reporting as Service-DB (Wartungs-DB). Default login credentials - User: innovaphone-reporting - Password: reporting&lt;br /&gt;
&lt;br /&gt;
====Delete CDRs====&lt;br /&gt;
&lt;br /&gt;
You can delete CDRs for certain/all users in a certain timespan. If you enter &#039;&#039;&#039;%&#039;&#039;&#039; as object, all users are selected.&lt;br /&gt;
&lt;br /&gt;
 Note that PostgreSQL doesn&#039;t free the space on the disk! If you need free disk space, issue this command on the shell:&lt;br /&gt;
 &#039;&#039;sudo -u postgres vacuumdb -f innovaphone-reporting&#039;&#039;&lt;br /&gt;
 This may take some time and CDRs won&#039;t be received during this time.&lt;br /&gt;
&lt;br /&gt;
====Configure scheduled CDR cleanup====&lt;br /&gt;
&lt;br /&gt;
If you activate scheduled cleanup, CDRs older than the configured amount of months will be automatically deleted.&amp;lt;br&amp;gt;&lt;br /&gt;
The scheduled task is started once a day at 2 AM.&lt;br /&gt;
&lt;br /&gt;
===PBX===&lt;br /&gt;
&lt;br /&gt;
If you use multiple PBX devices which are not Master/Slave, you have to select, which identifier is unique for a user under Config/PBX:&lt;br /&gt;
* System Name (default)&lt;br /&gt;
* PBX Name&lt;br /&gt;
&lt;br /&gt;
The selected value determines, which values are shown in the PBX dropdown box for report creation or report mail configuration.&lt;br /&gt;
&lt;br /&gt;
===Replication===&lt;br /&gt;
&lt;br /&gt;
You can configure a second innovaphone application platform with an installed innovaphone Reporting for replication purposes.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Mode:&lt;br /&gt;
** &#039;&#039;&#039;Off&#039;&#039;&#039;: no replication&lt;br /&gt;
** &#039;&#039;&#039;Master&#039;&#039;&#039;: the local server is the master server&lt;br /&gt;
** &#039;&#039;&#039;Standby&#039;&#039;&#039;: the local server is the standby server, filters will be replicated from the master and can&#039;t be changed here&lt;br /&gt;
* Master/Standby Server: the IP address of the master or standby server&lt;br /&gt;
* Database password: the PostgreSQL database password of the other server (default is &#039;&#039;&#039;reporting&#039;&#039;&#039;).&lt;br /&gt;
* Synchronisation interval: the interval in minutes (range 1-60) in which a sync is done&lt;br /&gt;
&lt;br /&gt;
Now configure a second [[#CDR_Gateway|CDR Gateway]] for the standby server.&lt;br /&gt;
&lt;br /&gt;
The current status can be seen here too. If the status is &#039;&#039;&#039;Failed&#039;&#039;&#039; take a look at the log file &#039;&#039;&#039;innovaphone Reporting Replication&#039;&#039;&#039; under [[ Reference10:Concept_Linux_Application_Platform#Logs|Diagnostics/Logs]] or look at the last trace output at the bottom of the page.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
How replication works is described [[#Replication_2|here]].&lt;br /&gt;
&lt;br /&gt;
===LDAP===&lt;br /&gt;
&lt;br /&gt;
Several LDAP servers and dialing locations can be configured here.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
PBX field must correspond to a name of a PBX since PBX&#039;s names are available in CDRs. The received CDR is parsed to get the PBX name and this name will be used to find the corresponding LDAP server and dialing location needed to resolve names.&lt;br /&gt;
&lt;br /&gt;
Each configured LDAP server and dialing location can be activated/deactivated with the &#039;&#039;&#039;active&#039;&#039;&#039; flag.&lt;br /&gt;
&lt;br /&gt;
[[Image:ldap_update.png]]&lt;br /&gt;
&lt;br /&gt;
If the country where you configure LDAP does not have Trunk/National prefix you should leave &amp;quot;National Prefix&amp;quot; and &amp;quot;Area Code&amp;quot; empty.&lt;br /&gt;
&lt;br /&gt;
In the number Attributes field please do &#039;&#039;&#039;not&#039;&#039;&#039; add any additional characters to the attributes like &amp;quot;:P&amp;quot;, &amp;quot;:D&amp;quot; or &amp;quot;@&amp;quot;, for instance &amp;quot;homePhone:P, mobile:M, telephoneNumber:D&amp;quot;. This does not work. That would be correct: &amp;quot;homePhone, mobile, telephoneNumber&amp;quot;&lt;br /&gt;
&lt;br /&gt;
LDAP Internal Search flag allows reporting to perform name resolution also for internal numbers.&lt;br /&gt;
&lt;br /&gt;
===Report Mails===&lt;br /&gt;
&lt;br /&gt;
Automatic report generation can be configured here:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;time&#039;&#039;&#039;: daytime at which the report is sent&lt;br /&gt;
* &#039;&#039;&#039;user reports&#039;&#039;&#039;: &lt;br /&gt;
** Creates for each matching user a separate report&lt;br /&gt;
** Users are matched by &#039;&#039;&#039;Object (Long Name)&#039;&#039;&#039;&lt;br /&gt;
** A user report only contains calls for this user&lt;br /&gt;
** The email address of the user is built by its &#039;&#039;&#039;H323 name&#039;&#039;&#039; and the &#039;&#039;&#039;System Name&#039;&#039;&#039; of its PBX (h323@systemname) or determined by the E-Mail field of the user&lt;br /&gt;
* &#039;&#039;&#039;interval&#039;&#039;&#039;: &lt;br /&gt;
** daily: Mail will be send daily with the automatic period &amp;quot;last day&amp;quot;&lt;br /&gt;
** weekly: Mail will be send weekly with the automatic period &amp;quot;last week&amp;quot;&lt;br /&gt;
** monthly: Mail will be send daily with the automatic period &amp;quot;last month&amp;quot;&lt;br /&gt;
* &#039;&#039;&#039;day&#039;&#039;&#039;: the day, at which the report is sent&lt;br /&gt;
* &#039;&#039;&#039;mail adresses&#039;&#039;&#039;: recipients of the report (comma separated)&lt;br /&gt;
* &#039;&#039;&#039;Sender E-Mail address&#039;&#039;&#039;: sender email address, which may be present as [[ Reference10:Concept_Linux_Application_Platform#Relay_Hosts | relay host ]]&lt;br /&gt;
* &#039;&#039;&#039;compress&#039;&#039;&#039;: compress the attachment or not&lt;br /&gt;
* &#039;&#039;&#039;sort by&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;sort order&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;language&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;send time&#039;&#039;&#039;: the time of a day, when the report is sent&lt;br /&gt;
&lt;br /&gt;
The explanation for the other settings can be found [[ #Report_Creation | here. ]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:mails.png]]&lt;br /&gt;
&lt;br /&gt;
===Users===&lt;br /&gt;
&lt;br /&gt;
You can configure multiple users, who shall have access to reports without having access to the whole reporting configuration.&amp;lt;br&amp;gt;&lt;br /&gt;
The user can login with his user name and password on: &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
http(s)://Linux-IP/apps/innovaphone-reporting/user/login.php&lt;br /&gt;
&lt;br /&gt;
The admin can assign one or more base filters to the user. A base filter is explained [[ #Base_filter | here]].&amp;lt;br&amp;gt;&lt;br /&gt;
If the user creates new reports, new own filters or report mails, he &#039;&#039;&#039;has&#039;&#039;&#039; to use one of his assigned base filters.&lt;br /&gt;
&lt;br /&gt;
 If you are using multiple PBX systems, the user has only access to these systems, which are configured in the base filters of the user.&lt;br /&gt;
 If the user has no base filter with a limitation to a certain &amp;quot;System Name&amp;quot;/&amp;quot;PBX Name&amp;quot; (depends on your [[ #PBX | PBX configuration ]]),&lt;br /&gt;
 he will have access to all systems!&lt;br /&gt;
&lt;br /&gt;
[[Image:users.jpg]]&lt;br /&gt;
&lt;br /&gt;
====User Login====&lt;br /&gt;
&lt;br /&gt;
A logged in user can create reports, own filters and report mails based on his assigned base filters.&lt;br /&gt;
&lt;br /&gt;
[[Image:Userlogin.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Images===&lt;br /&gt;
&lt;br /&gt;
You may upload images to be used as logo or footer in pdf reports.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Logos must be 32x32 and footer can have a maximum width of 450 pixels and a maximum height of 50 pixels.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These images can have jpeg or png format.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Relay CDRs===&lt;br /&gt;
&lt;br /&gt;
Relay CDRs can be stored in log files by the Reporting application. Configure a CDR gateway as already described and relay CDRs will be written to the webdav file &#039;&#039;&#039;/cdr/cdr.txt&#039;&#039;&#039;.&lt;br /&gt;
The file is rotated on 1 MB size. The first rotated file is uncompressed, further files will be gz compressed. Max ten files are kept. Older files will be deleted:&amp;lt;br&amp;gt;&lt;br /&gt;
* cdr.txt&lt;br /&gt;
* cdr.txt.1&lt;br /&gt;
* cdr.txt.2.gz&lt;br /&gt;
* cdr.txt.3.gz&lt;br /&gt;
* cdr.txt.4.gz&lt;br /&gt;
* cdr.txt.5.gz&lt;br /&gt;
* cdr.txt.6.gz&lt;br /&gt;
* cdr.txt.7.gz&lt;br /&gt;
* cdr.txt.8.gz&lt;br /&gt;
* cdr.txt.9.gz&lt;br /&gt;
&lt;br /&gt;
===innovaphone-reporting web access===&lt;br /&gt;
&lt;br /&gt;
You can configure a separate authentication for the innovaphone-reporting web site [[Reference10:Concept_Linux_Application_Platform#Change_application_access_credentials|here]].&amp;lt;br&amp;gt;&lt;br /&gt;
One can just login on the reporting site with this access.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Integration Voice recorder===&lt;br /&gt;
&lt;br /&gt;
The innovaphone voice recording can be integrated and a remote control of the player is possible, see relative article. &lt;br /&gt;
&lt;br /&gt;
==Filters==&lt;br /&gt;
===General===&lt;br /&gt;
&lt;br /&gt;
Filters are set up to create reports based on certain conditions. A filter can have multiple conditions and multiple filters can be combined on report creation (combine is performed with an &#039;&#039;&#039;OR&#039;&#039;&#039;).&amp;lt;br&amp;gt;&lt;br /&gt;
A filter has a unique &#039;&#039;&#039;name&#039;&#039;&#039; with an optional &#039;&#039;&#039;description&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Conditions===&lt;br /&gt;
&lt;br /&gt;
[[Image:filter.png]]&lt;br /&gt;
&lt;br /&gt;
There are five or seven condition sections depending on what is selected under &#039;&#039;&#039;States&#039;&#039;&#039;. Conditions inside same section are &#039;&#039;&#039;OR&#039;&#039;&#039; associated while different sections are &#039;&#039;&#039;AND&#039;&#039;&#039; associated.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(Object == Terra &#039;&#039;&#039;OR&#039;&#039;&#039; Object == Uranus) &#039;&#039;&#039;AND&#039;&#039;&#039; (PBX == sifi) &#039;&#039;&#039;AND&#039;&#039;&#039; (Number == 0049%)&lt;br /&gt;
&lt;br /&gt;
====Base filter====&lt;br /&gt;
&lt;br /&gt;
If you select another filter as base filter, the conditions of the base filter are implicitly &#039;&#039;&#039;AND&#039;&#039;&#039; conjuncted, when the current filter is used.&amp;lt;br&amp;gt;&lt;br /&gt;
So if the base filter defines two PBX values, e.g. &amp;quot;Berlin&amp;quot; and &amp;quot;Hamburg&amp;quot; and the current filter defines one PBX value, e.g. &amp;quot;Berlin&amp;quot;, only objects of the PBX &amp;quot;Berlin&amp;quot; will be filtered:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 (pbx=&amp;quot;Berlin&amp;quot;) AND (pbx=&amp;quot;Berlin&amp;quot; OR pbx=&amp;quot;Hamburg&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
If a user defines an own filter for his reports, he has to use a base filter, which he is allowed to use. So each filter, which he uses, will have at least one base filter condition, which the admin has defined.&lt;br /&gt;
&lt;br /&gt;
 You have to take care with the conditions of the current filter and the base filter, &lt;br /&gt;
 as it is now easy to create a filter with mutually exclusive conditions, e.g. if &lt;br /&gt;
 the filter has pbx=&amp;quot;Berlin&amp;quot; and the base filter pbx=&amp;quot;Hamburg&amp;quot; =&amp;gt; no matching records.&lt;br /&gt;
&lt;br /&gt;
====Anonym====&lt;br /&gt;
&lt;br /&gt;
If you check this flag, a report created with this filter or with a filter, where this filter is a basefilter, will by anonymized.&lt;br /&gt;
&lt;br /&gt;
====Local====&lt;br /&gt;
&lt;br /&gt;
Define one ore more conditions for the local party, defined by:&lt;br /&gt;
&lt;br /&gt;
* Object: the cn/PBX object name&lt;br /&gt;
* Number: the number&lt;br /&gt;
* Groups: a group of the PBX object&lt;br /&gt;
&lt;br /&gt;
====Remote====&lt;br /&gt;
&lt;br /&gt;
Define one or more conditions for the remote party, defined by:&lt;br /&gt;
&lt;br /&gt;
* Number: the number&lt;br /&gt;
* Remote display name: the display name&lt;br /&gt;
&lt;br /&gt;
====PBX====&lt;br /&gt;
&lt;br /&gt;
Define one ore more conditions for the PBX, defined by:&lt;br /&gt;
&lt;br /&gt;
* PBX: the PBX name&lt;br /&gt;
* Node: the node name&lt;br /&gt;
&lt;br /&gt;
====States====&lt;br /&gt;
&lt;br /&gt;
* No Response&lt;br /&gt;
* Connected&lt;br /&gt;
* Busy&lt;br /&gt;
* No Channel&lt;br /&gt;
&lt;br /&gt;
====Directions====&lt;br /&gt;
&lt;br /&gt;
* Incoming&lt;br /&gt;
* Outgoing&lt;br /&gt;
* Transfer: calls, which have been transferred to the current local party&lt;br /&gt;
* Call Forward: calls, which have been forwarded to the current local party&lt;br /&gt;
&lt;br /&gt;
====Call Duration====&lt;br /&gt;
&lt;br /&gt;
Time the call was connected.&lt;br /&gt;
&lt;br /&gt;
This condition will be &#039;&#039;&#039;AND&#039;&#039;&#039; with the others if all &#039;&#039;&#039;States&#039;&#039;&#039; are selected.&amp;lt;br&amp;gt;&lt;br /&gt;
If Busy, No Channel or No Response is unselected, then the filter will search for Connected calls with connected time greater or smaller than &#039;&#039;&#039;Call Duration&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
====Alert Duration====&lt;br /&gt;
&lt;br /&gt;
Time the call was ringing independent of the status of the call afterwards.&lt;br /&gt;
&lt;br /&gt;
This condition will be &#039;&#039;&#039;AND&#039;&#039;&#039; with the others if all &#039;&#039;&#039;States&#039;&#039;&#039; are selected.&amp;lt;br&amp;gt;&lt;br /&gt;
If Busy, No Channel or Connected is unselected, then the filter will search only for Not Connected Calls that were ringing more or less time than &#039;&#039;&#039;Alert Duration&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
====Report times====&lt;br /&gt;
&lt;br /&gt;
Define the time where calls should be counted.&amp;lt;br&amp;gt;&lt;br /&gt;
You can optionally define the weekday(s) of calls.&lt;br /&gt;
&lt;br /&gt;
====Images====&lt;br /&gt;
&lt;br /&gt;
* Logo: This must be 32x32 pixel image in jpeg or png format.&amp;lt;br&amp;gt;&lt;br /&gt;
* Footer: Maximum width of 450 pels and maximum height of 50 pels. Also jpeg or png format.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Using Patterns====&lt;br /&gt;
&lt;br /&gt;
You can use these [[ #PostgreSQL_Patterns | PostgreSQL Patterns ]] for every condition.&lt;br /&gt;
&lt;br /&gt;
==Report Creation==&lt;br /&gt;
===General===&lt;br /&gt;
&lt;br /&gt;
It is possible to generate call lists for single users or more complex reports by means of filters.&lt;br /&gt;
&lt;br /&gt;
===Web Interface===&lt;br /&gt;
&lt;br /&gt;
Reporting application provides a web interface to generate reports.&lt;br /&gt;
&lt;br /&gt;
[[Image:Report_hide.png]]&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PBX&#039;&#039;&#039;: select the PBX for the report. The values of the drop down box depend on your [[#PBX | PBX configuration]]&lt;br /&gt;
* &#039;&#039;&#039;Object (Long Name)&#039;&#039;&#039;: corresponds to the PBX Long Name assigned to a specific user (% is a special postgresql character, which matches any string)&lt;br /&gt;
* &#039;&#039;&#039;Filter&#039;&#039;&#039;: one or multiple filters can be defined (&#039;&#039;&#039;OR&#039;&#039;&#039; joined)&lt;br /&gt;
* &#039;&#039;&#039;Group by&#039;&#039;&#039;: the result can be grouped by Date or Object&lt;br /&gt;
* &#039;&#039;&#039;Hide last X digits&#039;&#039;&#039;: you may replace the last digits of an external number with a &#039;*&#039;. &lt;br /&gt;
** LDAP must be configured in order to use this capability but if you want no LDAP funtionality, just unset the Active Box in LDAP.&lt;br /&gt;
** Actually, the pbx/phys value of a call is matched against the LDAP pbx value and if the number starts with the external line prefix.&lt;br /&gt;
* &#039;&#039;&#039;Anonym&#039;&#039;&#039;: do not show internal names/numbers&lt;br /&gt;
** If anonym is set, hide last digits is set to 3, if not set&lt;br /&gt;
* &#039;&#039;&#039;Filter Info&#039;&#039;&#039;: the report will contain information about the configured settings and filter information&lt;br /&gt;
* &#039;&#039;&#039;Displayed Duration&#039;&#039;&#039;: &lt;br /&gt;
** Call Duration (Total): the total call duration, e.g. with the duration of a subsequent transfer&lt;br /&gt;
** Call Duration (User): just the time, the user was connected&lt;br /&gt;
** Billing Duration: the duration, a user must be billed for&lt;br /&gt;
** None of these durations contain the alert duration, which is separatly listed&lt;br /&gt;
&lt;br /&gt;
[[Image:reporting_report.png | A normal report. The summary shows incoming / outgoing summaries]]&lt;br /&gt;
&lt;br /&gt;
[[Image:grouped_report.png | A grouped report. Each group has an own summary]]&lt;br /&gt;
&lt;br /&gt;
====Print====&lt;br /&gt;
&lt;br /&gt;
Click the print icon to open a printable version of the report.&lt;br /&gt;
&lt;br /&gt;
====Save====&lt;br /&gt;
You can save the report as &#039;&#039;&#039;pdf&#039;&#039;&#039; or as &#039;&#039;&#039;xml&#039;&#039;&#039; by using the corresponding icon.&amp;lt;br&amp;gt;&lt;br /&gt;
You can also download a report in &#039;&#039;&#039;csv&#039;&#039;&#039; format without call history. The report uses &#039;&#039;&#039;comma&#039;&#039;&#039; as delimeter character, &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; as text qualifier and &#039;&#039;&#039;PBX Object/Remote Party&#039;&#039;&#039; columns should be defined as Text (avoid telephone numbers to be considered as numbers by Excel). &#039;&#039;&#039;UTF-8&#039;&#039;&#039; must be used as character set.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Sorting====&lt;br /&gt;
&lt;br /&gt;
Each sortable column has a clickable column head. This sorting will be also used when opening the printable version or saving the report as PDF.&lt;br /&gt;
&lt;br /&gt;
====Icons====&lt;br /&gt;
The icons are explained in the [[#Call list icons|appendix]].&lt;br /&gt;
&lt;br /&gt;
===Remote Interface===&lt;br /&gt;
&lt;br /&gt;
See [[#Remote_Interface_2|Remote Interface Appendix]]&lt;br /&gt;
&lt;br /&gt;
==Backup and Restore==&lt;br /&gt;
&lt;br /&gt;
You can both manually and automatically backup the database and configuration files for Reporting under [[Reference10:Concept_Linux_Application_Platform#Backup|Administration/Backup]] in the application platform.&lt;br /&gt;
&lt;br /&gt;
Configuration details for the update server can be found [[Reference10:Concept_Linux_Application_Platform#Backup|here]].&lt;br /&gt;
&lt;br /&gt;
===Configuration Files===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;saveinnovaphone-reportingcfgs&#039;&#039;&#039; is the command used to automatically save configuration files with the [[Reference10:Concept_Linux_Application_Platform#Command_File|Command File]].&lt;br /&gt;
&lt;br /&gt;
===Data===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;saveinnovaphone-reportingdb&#039;&#039;&#039; is the command to automatically backup the whole innovaphone Reporting database with the [[Reference10:Concept_Linux_Application_Platform#Command_File|Command File]].&lt;br /&gt;
&lt;br /&gt;
 If you restore the reporting database, you should keep in mind, that this might take several hours for a system&lt;br /&gt;
 on a CF card, depending on the size of the restored database. The backup process itself is quite fast with a few minutes.&lt;br /&gt;
&lt;br /&gt;
===Logs===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;saveinnovaphone-reportinglogs&#039;&#039;&#039; to save log files with the [[Reference10:Concept_Linux_Application_Platform#Command_File|Command File]].&lt;br /&gt;
&lt;br /&gt;
==Appendix==&lt;br /&gt;
===PostgreSQL Patterns===&lt;br /&gt;
For filter conditions or for the pbx object value you can use the following patterns inside a string:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;%&#039;&#039;&#039;: matches any string of zero or more characters&lt;br /&gt;
* &#039;&#039;&#039;_&#039;&#039;&#039;: matches any single character&lt;br /&gt;
&lt;br /&gt;
 Example:&lt;br /&gt;
 &#039;&#039;&#039;Sat%&#039;&#039;&#039; will match all pbx objects, which start with the string &#039;&#039;&#039;Sat&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
 We do always perform case insensitiv searches!&lt;br /&gt;
&lt;br /&gt;
===innovaphone Reporting XML===&lt;br /&gt;
&amp;lt;code type=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
    &amp;lt;application&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;innovaphone Reporting&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;desc&amp;gt;Reporting software&amp;lt;/desc&amp;gt;&lt;br /&gt;
    &amp;lt;directory&amp;gt;innovaphone-reporting&amp;lt;/directory&amp;gt;&lt;br /&gt;
    &amp;lt;href&amp;gt;report.php&amp;lt;/href&amp;gt;&lt;br /&gt;
    &amp;lt;linux-username&amp;gt;innovaphone-reporting&amp;lt;/linux-username&amp;gt;&lt;br /&gt;
    &amp;lt;packages&amp;gt;&lt;br /&gt;
        &amp;lt;package&amp;gt;php5-gd&amp;lt;/package&amp;gt;&lt;br /&gt;
        &amp;lt;package&amp;gt;php5-ldap&amp;lt;/package&amp;gt;&lt;br /&gt;
    &amp;lt;/packages&amp;gt;&lt;br /&gt;
    &amp;lt;database name=&amp;quot;innovaphone-reporting&amp;quot; username=&amp;quot;innovaphone-reporting&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;cronjobs&amp;gt;&lt;br /&gt;
        &amp;lt;cronjob script=&amp;quot;/etc/cron.d/reporting_replication&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;cronjob script=&amp;quot;/etc/cron.d/reporting_cleanup&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;cronjob script=&amp;quot;/etc/cron.d/reporting_mails&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/cronjobs&amp;gt;&lt;br /&gt;
    &amp;lt;log-files&amp;gt;&lt;br /&gt;
        &amp;lt;log title=&amp;quot;Postgresql-8.4&amp;quot; no-clear=&amp;quot;true&amp;quot;&amp;gt;/var/log/postgresql/postgresql-8.4-main.log&amp;lt;/log&amp;gt;&lt;br /&gt;
        &amp;lt;log title=&amp;quot;Reporting cleanup&amp;quot;&amp;gt;/var/www/innovaphone/apps/innovaphone-reporting/log/reporting_cleanup.log&amp;lt;/log&amp;gt;&lt;br /&gt;
        &amp;lt;log title=&amp;quot;innovaphone Reporting&amp;quot;&amp;gt;/var/www/innovaphone/apps/innovaphone-reporting/log/innovaphone-reporting.log&amp;lt;/log&amp;gt;&lt;br /&gt;
        &amp;lt;log title=&amp;quot;innovaphone Reporting Replication&amp;quot;&amp;gt;/var/www/innovaphone/apps/innovaphone-reporting/log/reporting_replication.log&amp;lt;/log&amp;gt;&lt;br /&gt;
    &amp;lt;/log-files&amp;gt;&lt;br /&gt;
    &amp;lt;config-files&amp;gt;&lt;br /&gt;
        &amp;lt;conf&amp;gt;/etc/postgresql/8.4/main/pg_hba.conf&amp;lt;/conf&amp;gt;&lt;br /&gt;
        &amp;lt;conf&amp;gt;/etc/postgresql/8.4/main/postgresql.conf&amp;lt;/conf&amp;gt;&lt;br /&gt;
        &amp;lt;conf&amp;gt;/home/innovaphone-reporting/reporting.conf&amp;lt;/conf&amp;gt;&lt;br /&gt;
        &amp;lt;conf&amp;gt;/home/root/ssl_cert/server.key&amp;lt;/conf&amp;gt;&lt;br /&gt;
        &amp;lt;conf&amp;gt;/home/root/ssl_cert/server.crt&amp;lt;/conf&amp;gt;&lt;br /&gt;
        &amp;lt;conf&amp;gt;/etc/cron.d/reporting_replication&amp;lt;/conf&amp;gt;&lt;br /&gt;
        &amp;lt;conf&amp;gt;/etc/cron.d/reporting_cleanup&amp;lt;/conf&amp;gt;&lt;br /&gt;
        &amp;lt;conf&amp;gt;/etc/cron.d/reporting_mails&amp;lt;/conf&amp;gt;&lt;br /&gt;
	&amp;lt;conf&amp;gt;/var/www/innovaphone/apps/innovaphone-reporting/report_images&amp;lt;/conf&amp;gt;&lt;br /&gt;
    &amp;lt;/config-files&amp;gt;&lt;br /&gt;
    &amp;lt;backup&amp;gt;&lt;br /&gt;
        &amp;lt;command title=&amp;quot;Save innovaphone Reporting configuration files&amp;quot; cmd=&amp;quot;saveinnovaphone-reportingcfgs&amp;quot; script=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;command title=&amp;quot;Save innovaphone Reporting database&amp;quot; cmd=&amp;quot;saveinnovaphone-reportingdb&amp;quot; script=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;command title=&amp;quot;Save innovaphone Reporting log files&amp;quot; cmd=&amp;quot;saveinnovaphone-reportinglogs&amp;quot; script=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/backup&amp;gt;&lt;br /&gt;
    &amp;lt;restore&amp;gt;&lt;br /&gt;
        &amp;lt;command title=&amp;quot;Restore innovaphone Reporting configuration files&amp;quot; cmd=&amp;quot;restoreinnovaphone-reportingcfgs&amp;quot; script=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;action&amp;gt;/etc/init.d/postgresql restart&amp;lt;/action&amp;gt;&lt;br /&gt;
            &amp;lt;action&amp;gt;/etc/init.d/cron restart&amp;lt;/action&amp;gt;&lt;br /&gt;
        &amp;lt;/command&amp;gt; &lt;br /&gt;
        &amp;lt;command title=&amp;quot;Restore innovaphone Reporting database&amp;quot; cmd=&amp;quot;restoreinnovaphone-reportingdb&amp;quot; script=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/restore&amp;gt;&lt;br /&gt;
    &amp;lt;uninstall script=&amp;quot;/usr/bin/sudo /usr/local/bin/uninstall_script.sh -f &#039;innovaphone-reporting.xml&#039; -linux_user yes -linux_group yes -database yes -database_user yes -log_script &#039;/var/www/innovaphone/log/appl_uninstall.log&#039;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;to-delete&amp;gt;&lt;br /&gt;
            &amp;lt;to-del path=&amp;quot;/usr/local/bin/reporting_cleanup.sh&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;to-del path=&amp;quot;/usr/local/bin/reporting_replication.out&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;to-del path=&amp;quot;/usr/local/bin/reporting_replication.sh&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;to-del path=&amp;quot;/home/innovaphone-reporting/tmp&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/to-delete&amp;gt;&lt;br /&gt;
    &amp;lt;/uninstall&amp;gt;&lt;br /&gt;
    &amp;lt;lighttpd-auth&amp;gt;1&amp;lt;/lighttpd-auth&amp;gt;&lt;br /&gt;
    &amp;lt;public-web-paths&amp;gt;&lt;br /&gt;
        &amp;lt;path&amp;gt;mypbx&amp;lt;/path&amp;gt;&lt;br /&gt;
        &amp;lt;path&amp;gt;user&amp;lt;/path&amp;gt;&lt;br /&gt;
    &amp;lt;/public-web-paths&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Installed Debian Packages===&lt;br /&gt;
&lt;br /&gt;
The following packages (and their dependencies) are installed with innovaphone Reporting:&lt;br /&gt;
&lt;br /&gt;
* php5-gd&lt;br /&gt;
* php5-ldap&lt;br /&gt;
&lt;br /&gt;
===Configuration Files===&lt;br /&gt;
&lt;br /&gt;
pg_hba.conf is the client authentication configuration file and controls which hosts are allowed to connect, how clients&lt;br /&gt;
are authenticated, which PostgreSQL user names they can use and which databases they can access.&lt;br /&gt;
&lt;br /&gt;
postgresql.conf is the PostgreSQL configuration file&lt;br /&gt;
&lt;br /&gt;
===Data Files===&lt;br /&gt;
&lt;br /&gt;
If you backup the innovaphone reporting database, you&#039;ll get a gz archiv, which contains the whole innovaphone-reporting database.&lt;br /&gt;
&lt;br /&gt;
===Report XML and CSV===&lt;br /&gt;
The field description below applies for the &#039;&#039;&#039;XML&#039;&#039;&#039; and &#039;&#039;&#039;CSV&#039;&#039;&#039; columns! &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code type=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;report&amp;gt;&lt;br /&gt;
    &amp;lt;record&amp;gt;&lt;br /&gt;
      ....&lt;br /&gt;
      &amp;lt;time time=&amp;quot;1301303966&amp;quot; utc=&amp;quot;1301303966&amp;quot;&amp;gt;2011-03-28 11:19:26&amp;lt;/time&amp;gt;&lt;br /&gt;
      &amp;lt;obj&amp;gt;Saturn&amp;lt;/obj&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;870998fee909d311b2ec009033105dc9&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;call&amp;gt;int&amp;lt;/call&amp;gt;&lt;br /&gt;
      &amp;lt;alert-duration seconds=&amp;quot;0&amp;quot;&amp;gt;0:00&amp;lt;/alert-duration&amp;gt;&lt;br /&gt;
      &amp;lt;flow&amp;gt;&lt;br /&gt;
        &amp;lt;ev caller=&amp;quot;ep1&amp;quot; ep1_number=&amp;quot;101&amp;quot; ep1_name=&amp;quot;saturn&amp;quot; ep1_dn=&amp;quot;Saturn&amp;quot; &lt;br /&gt;
                         ep2_number=&amp;quot;102&amp;quot; ep2_name=&amp;quot;uranus&amp;quot; ep2_dn=&amp;quot;Uranus&amp;quot; status=&amp;quot;co&amp;quot; entry=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;/flow&amp;gt;&lt;br /&gt;
      &amp;lt;call-duration seconds=&amp;quot;2&amp;quot;&amp;gt;0:02&amp;lt;/call-duration&amp;gt;&lt;br /&gt;
      &amp;lt;billing-duration seconds=&amp;quot;2&amp;quot;&amp;gt;0:02&amp;lt;/billing-duration&amp;gt;&lt;br /&gt;
      &amp;lt;conn-duration seconds=&amp;quot;2&amp;quot;&amp;gt;0:02&amp;lt;/conn-duration&amp;gt;&lt;br /&gt;
      &amp;lt;groups&amp;gt;&lt;br /&gt;
        &amp;lt;group&amp;gt;test&amp;lt;/group&amp;gt;&lt;br /&gt;
        &amp;lt;group&amp;gt;test2&amp;lt;/group&amp;gt;&lt;br /&gt;
      &amp;lt;/groups&amp;gt;&lt;br /&gt;
      &amp;lt;node&amp;gt;root&amp;lt;/node&amp;gt;&lt;br /&gt;
      &amp;lt;pbx&amp;gt;.&amp;lt;/pbx&amp;gt;&lt;br /&gt;
      &amp;lt;cause&amp;gt;&amp;lt;/cause&amp;gt;&lt;br /&gt;
      &amp;lt;dir&amp;gt;o&amp;lt;/dir&amp;gt;&lt;br /&gt;
      &amp;lt;status&amp;gt;co&amp;lt;/status&amp;gt;&lt;br /&gt;
      &amp;lt;type/&amp;gt;&lt;br /&gt;
      &amp;lt;remote number=&amp;quot;102&amp;quot; name=&amp;quot;uranus&amp;quot; dn=&amp;quot;Uranus&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;callback  number=&amp;quot;456&amp;quot; name=&amp;quot;abc&amp;quot; dn=&amp;quot;123&amp;quot; time=&amp;quot;1301305962&amp;quot;&amp;gt;2011-03-28 11:52:42&amp;lt;/callback&amp;gt;&lt;br /&gt;
    &amp;lt;/record&amp;gt;&lt;br /&gt;
    ....&lt;br /&gt;
  &amp;lt;/report&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* time: the node contains a formatted time string of the local time&lt;br /&gt;
** attribute &#039;&#039;&#039;time&#039;&#039;&#039; is a unix timestamp (referring to the local time stamp of the CDR)&lt;br /&gt;
** attribute &#039;&#039;&#039;utc&#039;&#039;&#039; is a unix timestamp (referring to the utc time stamp of the CDR)&lt;br /&gt;
* obj: the PBX object name (also called cn)&lt;br /&gt;
* id: the conference id of the call&lt;br /&gt;
* call: &#039;&#039;&#039;int&#039;&#039;&#039; (internal) or &#039;&#039;&#039;ext&#039;&#039;&#039; (external) call&lt;br /&gt;
* flow &#039;&#039;&#039;(XML only)&#039;&#039;&#039;: the call flow&lt;br /&gt;
** ev&lt;br /&gt;
***ep1 (ep1_number, ep1_name, ep1_dn): the left side of the call&lt;br /&gt;
***ep2 (ep2_number, ep2_name, ep2_dn): the right side of the call&lt;br /&gt;
***caller: &#039;&#039;&#039;ep1&#039;&#039;&#039;, &#039;&#039;&#039;ep2&#039;&#039;&#039; or empty, if unknown&lt;br /&gt;
***status: &#039;&#039;&#039;co&#039;&#039;&#039; (connected), &#039;&#039;&#039;al&#039;&#039;&#039; (alert), &#039;&#039;&#039;er&#039;&#039;&#039; (error) or &#039;&#039;&#039;bu&#039;&#039;&#039; (busy) state of the current event&lt;br /&gt;
***entry: &#039;&#039;&#039;true&#039;&#039;&#039; for the entry event of the local object&lt;br /&gt;
***type: &#039;&#039;&#039;cf&#039;&#039;&#039; (call forward), &#039;&#039;&#039;ct&#039;&#039;&#039; (call transfer)&lt;br /&gt;
* Original Called &#039;&#039;&#039;(CSV only)&#039;&#039;&#039;: In case of Call flow; The original called device&lt;br /&gt;
* Diverting &#039;&#039;&#039;(CSV only)&#039;&#039;&#039;: In case of Call flow; The diverting device&lt;br /&gt;
* Transferring &#039;&#039;&#039;(CSV only)&#039;&#039;&#039;: In case of Call flow; The transferring device&lt;br /&gt;
* groups &#039;&#039;&#039;(XML only)&#039;&#039;&#039;: the groups of the PBX object&lt;br /&gt;
* node: the node of the PBX object&lt;br /&gt;
* pbx: the pbx of the PBX object&lt;br /&gt;
* cause: the decimal disconnect reason of the call (see [[Reference:ISDN_Cause_Codes]])&lt;br /&gt;
* remote:&lt;br /&gt;
** outgoing calls -&amp;gt; dialed endpoint&lt;br /&gt;
** incoming calls -&amp;gt; first ep2 above entry event or entry event if this is the first one&lt;br /&gt;
** incoming calls with incoming transfer after entry event -&amp;gt; transfer target&lt;br /&gt;
* status:&lt;br /&gt;
** outgoing calls -&amp;gt; best found status in call flow&lt;br /&gt;
** incoming calls -&amp;gt; status of entry event&lt;br /&gt;
* type: the type of the entry event or, if not set, the type of the next event, if given&lt;br /&gt;
** empty: direct call&lt;br /&gt;
** &#039;&#039;&#039;ct&#039;&#039;&#039;: call transfer&lt;br /&gt;
** &#039;&#039;&#039;cf&#039;&#039;&#039;: call forward&lt;br /&gt;
** &#039;&#039;&#039;cct&#039;&#039;&#039;: call transfer with consultation&lt;br /&gt;
** &#039;&#039;&#039;pu&#039;&#039;&#039;: call pickup&lt;br /&gt;
* dir: o (outgoing) if the first event is the entry event and the caller is ep1&lt;br /&gt;
* dir: i (incoming) if not o&lt;br /&gt;
* alert-duration: alert time&lt;br /&gt;
* billing-duration: outgoing call -&amp;gt; duration from the first event until the last event in the flow&lt;br /&gt;
* billing-duration: incoming call -&amp;gt; duration from the first transfer/forward event until the last event in the flow&lt;br /&gt;
* call-duration: duration of the whole call&lt;br /&gt;
* conn-duration: duration from the entry event until the event, where the local endpoint isn&#039;t connected any more&lt;br /&gt;
* callback: &#039;&#039;&#039;name&#039;&#039;&#039;, &#039;&#039;&#039;number&#039;&#039;&#039;, &#039;&#039;&#039;dn&#039;&#039;&#039; and &#039;&#039;&#039;time&#039;&#039;&#039; if this call has been callbacked using mypbx (time referrs to the UTC time of the callback)&lt;br /&gt;
* Further Registration: If more than one devices is registered to the same object, each device creates a CDR. This field identifies the additional CDRs for the same call&lt;br /&gt;
* Object Info &#039;&#039;&#039;(CSV only)&#039;&#039;&#039;: combination of object names and number&lt;br /&gt;
* Date &#039;&#039;&#039;(CSV only)&#039;&#039;&#039;: extracted date only from the time_string&lt;br /&gt;
* Time_2 &#039;&#039;&#039;(CSV only)&#039;&#039;&#039;: extracted time only from the time_string&lt;br /&gt;
&lt;br /&gt;
===Database Structure===&lt;br /&gt;
&lt;br /&gt;
====cdrs====&lt;br /&gt;
Each received cdr-xml is formed by a cdr tag and an undefined number of event and group tags.&lt;br /&gt;
(Refer to: [[Reference10:Concept_Call_Detail_Record_CDR_PBX|CDR]])&lt;br /&gt;
&lt;br /&gt;
This section is composed by four tables: cdrs, events, groups and cdr_properties.&lt;br /&gt;
The first three tables contain the corresponding fields to store the information contained in the cdr, event and group tags.&amp;lt;br&amp;gt;&lt;br /&gt;
Each CDR represents the call in the view of one PBX object. So there might be multiple CDRs for one call if multiple PBX objects are used within the call.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;cdr fields:&#039;&#039;&#039; id, guid, sys, pbx, node, device, cn, e164, h323, dir, utc, local.&lt;br /&gt;
* &#039;&#039;&#039;event fields:&#039;&#039;&#039; id, msg, type, e164, h323, conf, cause, time, cdr_id, order_index.&lt;br /&gt;
* &#039;&#039;&#039;group fields:&#039;&#039;&#039; id, name, active, type, cdr_id.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;id&#039;&#039;&#039; field is assigned by postgresql for each entry and has nothing to do with the information present in the cdr. It is different for each entry inside the table.&lt;br /&gt;
&lt;br /&gt;
The events table has two additional fields, called cdr_id, to associate these events to the corresponding cdr entry and order_index to keep their position inside the cdr.&lt;br /&gt;
Groups table has also the cdr_id field to associate the group entries to the corresponding cdr and events entries.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;cdr_properties&#039;&#039;&#039; table contains relevant information associated with the call such as call_length, alert_length or call_flow. It also presents a cdr_id field.&lt;br /&gt;
&lt;br /&gt;
====filters====&lt;br /&gt;
&lt;br /&gt;
This section is composed by three tables: filter_columns, filter_conditions and filters. &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;filter_columns&#039;&#039;&#039; is not used for the time being. This is supposed to contain the columns the user wants to see in his report, but right now, just default columns (Time/Object/Duration/Left/Direction/State/Right) are shown.&lt;br /&gt;
* &#039;&#039;&#039;filter&#039;&#039;&#039; contains the filter name and description plus two conditions call_state (No Response, Connected, Busy and No Channel) and direction (Incoming, Outgoing, Transfer and Call Forward).&lt;br /&gt;
* &#039;&#039;&#039;filter_conditions&#039;&#039;&#039; contains the defined conditions for a filter&lt;br /&gt;
&lt;br /&gt;
All three tables are related through an id.&lt;br /&gt;
&lt;br /&gt;
====cdr_users====&lt;br /&gt;
&lt;br /&gt;
This table contains a timestamp &#039;&#039;&#039;missed_calls_time&#039;&#039;&#039; for the last report access by a user &#039;&#039;&#039;cn&#039;&#039;&#039; + (&#039;&#039;&#039;pbx&#039;&#039;&#039; OR &#039;&#039;&#039;sys&#039;&#039;&#039;) with mypbx. It is used to retrieve information about missed calls since the last use of mypbx.&amp;lt;br&amp;gt;&lt;br /&gt;
The timestamp &#039;&#039;&#039;clear_report_time&#039;&#039;&#039; indicates the last clearance time.&amp;lt;br&amp;gt;&lt;br /&gt;
email, sys (system name) and pbx (PBX name) are also stored for each user.&lt;br /&gt;
&lt;br /&gt;
====replication====&lt;br /&gt;
&lt;br /&gt;
Contains information of the last replication run, which is used to sync master/standby installations.&lt;br /&gt;
&lt;br /&gt;
===Replication===&lt;br /&gt;
&lt;br /&gt;
The replication between the master and standby servers is divided into two steps:&lt;br /&gt;
&lt;br /&gt;
====CDRs====&lt;br /&gt;
Both master and standby server keep an information about the last replicated CDR. From this CDR on, they retrieve all CDR guids (32 bytes) from all new CDRs from the other server. If a guid already exists in the local database, the CDR is skipped, otherwise it is replicated.&amp;lt;br&amp;gt;&lt;br /&gt;
So there is a minimal data exchange for already existing CDRs and each new CDR is only processed once.&lt;br /&gt;
&lt;br /&gt;
====Filters/LDAP/Report Mails/Users====&lt;br /&gt;
The master server does nothing here, but the &#039;&#039;&#039;standby&#039;&#039;&#039; deletes all filters, LDAP servers, report mails and users and replicates all from the master.&amp;lt;br&amp;gt;&lt;br /&gt;
So these items from the master server can be used, but not changed, on the standby server.&lt;br /&gt;
&lt;br /&gt;
===Remote Interface===&lt;br /&gt;
&lt;br /&gt;
You can retrieve the PDF/XML/CSV report with a remote interface.&amp;lt;br&amp;gt;&lt;br /&gt;
Make a POST or GET HTTP request to &#039;&#039;&#039;http(s)://Linux-IP/apps/innovaphone-reporting/report.php&#039;&#039;&#039; with the following parameters:&lt;br /&gt;
&lt;br /&gt;
* remote: mandatory for a remote request!&lt;br /&gt;
** &#039;&#039;&#039;1&#039;&#039;&#039;&lt;br /&gt;
* from : the from date/time as UNIX timestamp &#039;&#039;&#039;OR&#039;&#039;&#039; date/time string as described [ http://www.php.net/manual/de/datetime.formats.php | here ].&lt;br /&gt;
* to: the to date/time (format see &#039;&#039;&#039;from&#039;&#039;&#039;)&lt;br /&gt;
* [format]: the return format, allowed values:&lt;br /&gt;
** &#039;&#039;&#039;xml&#039;&#039;&#039;: default&lt;br /&gt;
** &#039;&#039;&#039;pdf&#039;&#039;&#039;&lt;br /&gt;
** &#039;&#039;&#039;csv&#039;&#039;&#039;&lt;br /&gt;
* [sortby] : the report sorting, allowed values:&lt;br /&gt;
** &#039;&#039;&#039;time&#039;&#039;&#039;: default&lt;br /&gt;
** &#039;&#039;&#039;obj&#039;&#039;&#039;: sort by pbx object name&lt;br /&gt;
** &#039;&#039;&#039;call-duration&#039;&#039;&#039;&lt;br /&gt;
** &#039;&#039;&#039;alert-duration&#039;&#039;&#039;&lt;br /&gt;
** &#039;&#039;&#039;dir&#039;&#039;&#039;: sort by call direction&lt;br /&gt;
* [sortorder]: the report sort order, allowed values:&lt;br /&gt;
** &#039;&#039;&#039;ascending&#039;&#039;&#039;: default&lt;br /&gt;
** &#039;&#039;&#039;descending&#039;&#039;&#039;&lt;br /&gt;
* [groupby]: report grouping&lt;br /&gt;
** default empty/not set: no grouping&lt;br /&gt;
** &#039;&#039;&#039;local_stamp&#039;&#039;&#039;: group by time&lt;br /&gt;
** &#039;&#039;&#039;cn&#039;&#039;&#039;: group by pbx object name&lt;br /&gt;
* [hidedigits]: hide the last X digits of external numbers&lt;br /&gt;
* pbx: search for this PBX (mandatory!)&lt;br /&gt;
* pbxobject: search for this PBX object (you can leave this, if you use filterX)&lt;br /&gt;
* filterX: use a filter with its name. You can use multiple filters with filter1=test, filter2=test2...&lt;br /&gt;
* [filterinfo]: show the filter information in a created report (&amp;quot;true&amp;quot; or &amp;quot;false&amp;quot;)&lt;br /&gt;
* [lang]: the language, e.g. &amp;quot;en&amp;quot; or &amp;quot;de&amp;quot;&lt;br /&gt;
* [displayedduration]: &lt;br /&gt;
** &#039;&#039;&#039;call_duration&#039;&#039;&#039;: default Call Duration (Total)&lt;br /&gt;
** &#039;&#039;&#039;conn_duration&#039;&#039;&#039;: Call Duration (User)&lt;br /&gt;
** &#039;&#039;&#039;billing_duration&#039;&#039;&#039;: Billing Duration&lt;br /&gt;
* [anonym]: anonymize internal names/numbers (&amp;quot;true&amp;quot; or &amp;quot;false&amp;quot;)&lt;br /&gt;
* [bulk]: creates user reports (see [[ #Report_Mails | Report Mails ]])&lt;br /&gt;
* [sender]: sender email adress of the report&lt;br /&gt;
* [confid]: query calls of a certain conference ID&lt;br /&gt;
** you can omit the following fields, if using confid: &#039;&#039;&#039;from&#039;&#039;&#039;, &#039;&#039;&#039;to&#039;&#039;&#039;, &#039;&#039;&#039;pbx&#039;&#039;&#039;, &#039;&#039;&#039;pbxobject&#039;&#039;&#039;, &#039;&#039;&#039;filterX&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 Parameters in [] are optional.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;pbxobject&#039;&#039;&#039; supports [[ #PostgreSQL_Patterns | PostgreSQL Patterns ]].&lt;br /&gt;
&lt;br /&gt;
 Example:&lt;br /&gt;
 https://172.16.14.123/apps/innovaphone-reporting/report.php?remote=1&amp;amp;from=2011-03-29&amp;amp;to=2011-03-30&amp;amp;format=xml&amp;amp;pbxobject=Saturn&lt;br /&gt;
 Gets all records between 2011-03-29 and 2011-03-30 for the pbx object Saturn.&lt;br /&gt;
&lt;br /&gt;
 Example:&lt;br /&gt;
 https://172.16.14.123/apps/innovaphone-reporting/report.php?remote=1&amp;amp;from=2011-03-29&amp;amp;to=2011-03-30&amp;amp;format=xml&amp;amp;filter1=test&amp;amp;filter2=test2&lt;br /&gt;
 Gets all records between 2011-03-29 and 2011-03-30 for the filters test and test2.&lt;br /&gt;
&lt;br /&gt;
===Tools===&lt;br /&gt;
&lt;br /&gt;
====NetDrive====&lt;br /&gt;
&lt;br /&gt;
[http://www.heise.de/software/download/netdrive/55134 NetDrive] is a usefull webdav client, which can be used to access webdav of the innovaphone application platform.&lt;br /&gt;
&lt;br /&gt;
====PGAdmin====&lt;br /&gt;
&lt;br /&gt;
[http://www.pgadmin.org/ PGAdmin] is an administration tool for PostgreSQL databases.&lt;br /&gt;
&lt;br /&gt;
====Putty====&lt;br /&gt;
&lt;br /&gt;
[http://www.putty.org/ Putty] is SSH client to connect to the linux application platform.&lt;br /&gt;
&lt;br /&gt;
===Call list icons===&lt;br /&gt;
The direction of the icon arrow depends on the call flow.&lt;br /&gt;
&lt;br /&gt;
* [[Image:reporting_conn.jpg]]: a connected call&lt;br /&gt;
* [[Image:reporting_busy.jpg]]: busy destination&lt;br /&gt;
* [[Image:reporting_no_res.jpg]]: no response from destination&lt;br /&gt;
* [[Image:reporting_error.jpg]]: an error occurred, like &amp;quot;no channel available&amp;quot; during the call setup&lt;br /&gt;
* [[Image:reporting_ct.jpg]]: call transfer&lt;br /&gt;
* [[Image:reporting_cct.jpg]]: call transfer with consultation&lt;br /&gt;
* [[Image:reporting_cf.jpg]]: call forward&lt;br /&gt;
* [[Image:Reporting_pickup.jpg]]: call pickup (or SOAP redirect)&lt;br /&gt;
* [[Image:reporting_dir.jpg]]: call direction&lt;br /&gt;
&lt;br /&gt;
A small arrow on a call state icon indicates a callback done with mxPBY, e.g.:&lt;br /&gt;
* [[Image:reporting_busy_callback.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Known Problems==&lt;br /&gt;
===Replication===&lt;br /&gt;
====Callback information====&lt;br /&gt;
The callback information get lost in the following scenario:&lt;br /&gt;
* The callback CDR is already replicated on both master and standby&lt;br /&gt;
* Master or standby is down&lt;br /&gt;
* A user calls back the CDR from point 1&lt;br /&gt;
&lt;br /&gt;
====Missed calls====&lt;br /&gt;
The information for missed calls is not replicated. So the first time, a standby server is used with mypbx, the missed calls information will be wrong. The second time will be correct again.&lt;br /&gt;
&lt;br /&gt;
===CDRs===&lt;br /&gt;
If the innovaphone Reporting is not running, for whatever reaseon, the device, which sends CDRs, currently stores up to 300kB CDRs data. So if one CDR has up to 2kB, 150 CDRs can be stored until the innovaphone Reporting should be up again, to avoid data loss.&lt;br /&gt;
&lt;br /&gt;
===Missing values for PBX drop down box===&lt;br /&gt;
If your database currently contains no CDRs of one of your PBX systems, you won&#039;t be able to select this system as PBX for report creation or report mail configuration!&lt;br /&gt;
&lt;br /&gt;
===Restoring Database with more than 2GB===&lt;br /&gt;
&lt;br /&gt;
When restoring database using the web browser there is a 2GB upload limit, so if our database have a bigger size the upload will fail.&lt;br /&gt;
&lt;br /&gt;
As alternative solution (if there is enough space):&lt;br /&gt;
&lt;br /&gt;
 1. Copy the gz database dump to the webdav folder&lt;br /&gt;
 2. Uncompress this dump: /bin/gzip -cd /var/www/innovaphone/webdav/dump.gz --uncompress &amp;gt; /tmp/db.dump&lt;br /&gt;
 3. Start the restore: /usr/local/bin/config.sh postgres db-restore /tmp/pg_schema.dump /tmp/db.dump innovaphone-reporting&lt;br /&gt;
 4. be patient, this might take a while&lt;br /&gt;
 5. delete /tmp/db.dump, /var/www/innovaphone/webdav/dump.gz and /tmp/pg_schema.dump (automatically created)&lt;br /&gt;
&lt;br /&gt;
===PDF generation for many CDRs may fail===&lt;br /&gt;
You may experience a &#039;&#039;&#039;Server error 500&#039;&#039;&#039; if you generate PDFs with many CDRs. The PDF library which is used to generate the PDFs fails.&lt;br /&gt;
Please generate multiple PDFs with a smaller timespan in such a case.&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
&lt;br /&gt;
[[Howto:Integration_reporting_and_voice_recording]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Concept|Reporting]]&lt;/div&gt;</summary>
		<author><name>Tru</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference10:Concept_Reporting&amp;diff=44493</id>
		<title>Reference10:Concept Reporting</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference10:Concept_Reporting&amp;diff=44493"/>
		<updated>2016-10-17T10:28:25Z</updated>

		<summary type="html">&lt;p&gt;Tru: /* Report XML */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Requirements==&lt;br /&gt;
&lt;br /&gt;
It is needed to have the [[Reference10:Concept_Linux_Application_Platform|application platform]] installed and running.&lt;br /&gt;
&lt;br /&gt;
===Calculation of required disk space===&lt;br /&gt;
&lt;br /&gt;
An average CDR requires 2080 bytes of disk space inside the database.&amp;lt;br&amp;gt;&lt;br /&gt;
So &#039;&#039;&#039;one GB&#039;&#039;&#039; disk space is needed for ~&#039;&#039;&#039;516222 CDRs&#039;&#039;&#039;. &amp;lt;br&amp;gt;&lt;br /&gt;
One call may have one or multiple CDRs depending on the call flow, the used PBX objects and their configuration.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;&lt;br /&gt;
It is strongly recommended that you try to precalculate your required disk space and configure a suiting value under [[#Configure_scheduled_CDR_cleanup]].&amp;lt;br&amp;gt;&lt;br /&gt;
Don&#039;t forget to configure the alarm server under [[Reference10:Concept_Linux_Application_Platform#Alarm_Server]] to receive an alarm if the disk is nearly full (10% disk space remaining).&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
&lt;br /&gt;
Download the latest version of innovaphone reporting.&lt;br /&gt;
&lt;br /&gt;
Log into the application platform, go to the Applications tag, click on [[ Reference10:Concept_Linux_Application_Platform#Upload.2FUpdate|Upload/Update]] and upload the downloaded file. &lt;br /&gt;
The installation will start automatically and the page will refresh every two seconds showing the installation process. &lt;br /&gt;
If there is no error during the installation you will see at the end &amp;quot;Installation was succesfull&amp;quot;. Otherwise,&lt;br /&gt;
you will get &amp;quot;installation failed&amp;quot; and the reason why it went wrong.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Hotfix===&lt;br /&gt;
If you have already installed the latest version of Reporting, simply download the Reporting...HotfixIncremental for your platform (VM or IPxx10) or if you have missed some hotfixes, download the Reporting...HotfixCumulative archive, which contains all hotfixes since hotfix1.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Upload this hotfix archive [[Reference10:Concept_Linux_Application_Platform#Upload.2FUpdate|here]].&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
===Device===&lt;br /&gt;
&lt;br /&gt;
====License====&lt;br /&gt;
It is required to have a Reporting license installed on your device. Check under [[ Reference10:General/License ]] if you already have one.&lt;br /&gt;
&lt;br /&gt;
 Set the Reporting flag for each PBX object, which should be reported on the objects properties page.&lt;br /&gt;
&lt;br /&gt;
====CDR Gateway====&lt;br /&gt;
Any innovaphone device which sends [[Reference10:Concept_Call_Detail_Record_CDR_PBX|CDRs]] to the reporting application must have at least one CDR interface configured under [[ Reference10:Gateway/CDR ]]:&lt;br /&gt;
&lt;br /&gt;
* Type: LOCAL-AP or REMOTE-AP/REMOTE-AP-S&lt;br /&gt;
&lt;br /&gt;
If HTTP/HTTPS is selected then some other parameters must be set:&lt;br /&gt;
&lt;br /&gt;
* Address: ip address of the application platform&lt;br /&gt;
* Port: 80 for REMOTE-AP&lt;br /&gt;
* Port: 443 for REMOTE-AP-S&lt;br /&gt;
* Method: POST/GET&lt;br /&gt;
* Path: ap/cdr.fcgi&lt;br /&gt;
&lt;br /&gt;
The application platform is by default password protected, so you&#039;ll have to perform one of these steps: &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* configure an authenticated URL for &#039;&#039;&#039;ap/cdr.fcgi&#039;&#039;&#039; under [[ Reference10:Services/HTTP/Client ]] (recommended)&lt;br /&gt;
** If you configure an authenticated URL (with the linux webserver credentials), don&#039;t forget to configure port 80 or port 443 for secure transport (Remote-AP-S) like https://111.111.111.111:443/ap or http://111.111.111.111:80/ap&lt;br /&gt;
* configure &#039;&#039;&#039;ap/cdr.fcgi&#039;&#039;&#039; as public web path on the innovaphone application platform [[ Reference10:Concept_Linux_Application_Platform#Change_web_server_properties_and_public_access_to_the_web.2Fwebdav|Public Web Paths ]]&lt;br /&gt;
&lt;br /&gt;
 Configure a second CDR interface, if you use [[#Replication|Replication]].&lt;br /&gt;
&lt;br /&gt;
====Enable PBX CDRs====&lt;br /&gt;
Enable the &amp;quot;Generate CDRs&amp;quot; flag under [[ Reference10:PBX/Config/General ]].&lt;br /&gt;
&lt;br /&gt;
===innovaphone Application Platform===&lt;br /&gt;
&lt;br /&gt;
If the reporting URL/user/password is not configured in your device as authenticated URL, configure &#039;&#039;&#039;ap/cdr.fcgi&#039;&#039;&#039; as public web path on the innovaphone application platform [[ Reference10:Concept_Linux_Application_Platform#Change_web_server_properties_and_public_access_to_the_web.2Fwebdav|Public Web Paths ]].&lt;br /&gt;
&lt;br /&gt;
===Database===&lt;br /&gt;
&lt;br /&gt;
Reporting creates the innovaphone-reporting database to store CDRs sent from any innovaphone devices (appendix 7.6 explains the database structure). &lt;br /&gt;
PostgreSQL is also available for other applications and any of them could create its own database. &lt;br /&gt;
&lt;br /&gt;
====Password====&lt;br /&gt;
&lt;br /&gt;
Reporting creates the database user &#039;&#039;&#039;innovaphone-reporting&#039;&#039;&#039; with default password &#039;&#039;&#039;reporting&#039;&#039;&#039;. &lt;br /&gt;
This password may be changed at the innovaphone Reporting page under Config/Database.&lt;br /&gt;
&lt;br /&gt;
====Remote Access====&lt;br /&gt;
&lt;br /&gt;
There are tools (PgAdmin III) that allow to connect to application databases remotely. &lt;br /&gt;
It is first needed to configure the IP you are connecting from under Config/Database at the innovaphone reporting page.&lt;br /&gt;
&lt;br /&gt;
For the PgAdmin III it is imporant to use innovaphone-reporting as Service-DB (Wartungs-DB). Default login credentials - User: innovaphone-reporting - Password: reporting&lt;br /&gt;
&lt;br /&gt;
====Delete CDRs====&lt;br /&gt;
&lt;br /&gt;
You can delete CDRs for certain/all users in a certain timespan. If you enter &#039;&#039;&#039;%&#039;&#039;&#039; as object, all users are selected.&lt;br /&gt;
&lt;br /&gt;
 Note that PostgreSQL doesn&#039;t free the space on the disk! If you need free disk space, issue this command on the shell:&lt;br /&gt;
 &#039;&#039;sudo -u postgres vacuumdb -f innovaphone-reporting&#039;&#039;&lt;br /&gt;
 This may take some time and CDRs won&#039;t be received during this time.&lt;br /&gt;
&lt;br /&gt;
====Configure scheduled CDR cleanup====&lt;br /&gt;
&lt;br /&gt;
If you activate scheduled cleanup, CDRs older than the configured amount of months will be automatically deleted.&amp;lt;br&amp;gt;&lt;br /&gt;
The scheduled task is started once a day at 2 AM.&lt;br /&gt;
&lt;br /&gt;
===PBX===&lt;br /&gt;
&lt;br /&gt;
If you use multiple PBX devices which are not Master/Slave, you have to select, which identifier is unique for a user under Config/PBX:&lt;br /&gt;
* System Name (default)&lt;br /&gt;
* PBX Name&lt;br /&gt;
&lt;br /&gt;
The selected value determines, which values are shown in the PBX dropdown box for report creation or report mail configuration.&lt;br /&gt;
&lt;br /&gt;
===Replication===&lt;br /&gt;
&lt;br /&gt;
You can configure a second innovaphone application platform with an installed innovaphone Reporting for replication purposes.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Mode:&lt;br /&gt;
** &#039;&#039;&#039;Off&#039;&#039;&#039;: no replication&lt;br /&gt;
** &#039;&#039;&#039;Master&#039;&#039;&#039;: the local server is the master server&lt;br /&gt;
** &#039;&#039;&#039;Standby&#039;&#039;&#039;: the local server is the standby server, filters will be replicated from the master and can&#039;t be changed here&lt;br /&gt;
* Master/Standby Server: the IP address of the master or standby server&lt;br /&gt;
* Database password: the PostgreSQL database password of the other server (default is &#039;&#039;&#039;reporting&#039;&#039;&#039;).&lt;br /&gt;
* Synchronisation interval: the interval in minutes (range 1-60) in which a sync is done&lt;br /&gt;
&lt;br /&gt;
Now configure a second [[#CDR_Gateway|CDR Gateway]] for the standby server.&lt;br /&gt;
&lt;br /&gt;
The current status can be seen here too. If the status is &#039;&#039;&#039;Failed&#039;&#039;&#039; take a look at the log file &#039;&#039;&#039;innovaphone Reporting Replication&#039;&#039;&#039; under [[ Reference10:Concept_Linux_Application_Platform#Logs|Diagnostics/Logs]] or look at the last trace output at the bottom of the page.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
How replication works is described [[#Replication_2|here]].&lt;br /&gt;
&lt;br /&gt;
===LDAP===&lt;br /&gt;
&lt;br /&gt;
Several LDAP servers and dialing locations can be configured here.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
PBX field must correspond to a name of a PBX since PBX&#039;s names are available in CDRs. The received CDR is parsed to get the PBX name and this name will be used to find the corresponding LDAP server and dialing location needed to resolve names.&lt;br /&gt;
&lt;br /&gt;
Each configured LDAP server and dialing location can be activated/deactivated with the &#039;&#039;&#039;active&#039;&#039;&#039; flag.&lt;br /&gt;
&lt;br /&gt;
[[Image:ldap_update.png]]&lt;br /&gt;
&lt;br /&gt;
If the country where you configure LDAP does not have Trunk/National prefix you should leave &amp;quot;National Prefix&amp;quot; and &amp;quot;Area Code&amp;quot; empty.&lt;br /&gt;
&lt;br /&gt;
In the number Attributes field please do &#039;&#039;&#039;not&#039;&#039;&#039; add any additional characters to the attributes like &amp;quot;:P&amp;quot;, &amp;quot;:D&amp;quot; or &amp;quot;@&amp;quot;, for instance &amp;quot;homePhone:P, mobile:M, telephoneNumber:D&amp;quot;. This does not work. That would be correct: &amp;quot;homePhone, mobile, telephoneNumber&amp;quot;&lt;br /&gt;
&lt;br /&gt;
LDAP Internal Search flag allows reporting to perform name resolution also for internal numbers.&lt;br /&gt;
&lt;br /&gt;
===Report Mails===&lt;br /&gt;
&lt;br /&gt;
Automatic report generation can be configured here:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;time&#039;&#039;&#039;: daytime at which the report is sent&lt;br /&gt;
* &#039;&#039;&#039;user reports&#039;&#039;&#039;: &lt;br /&gt;
** Creates for each matching user a separate report&lt;br /&gt;
** Users are matched by &#039;&#039;&#039;Object (Long Name)&#039;&#039;&#039;&lt;br /&gt;
** A user report only contains calls for this user&lt;br /&gt;
** The email address of the user is built by its &#039;&#039;&#039;H323 name&#039;&#039;&#039; and the &#039;&#039;&#039;System Name&#039;&#039;&#039; of its PBX (h323@systemname) or determined by the E-Mail field of the user&lt;br /&gt;
* &#039;&#039;&#039;interval&#039;&#039;&#039;: &lt;br /&gt;
** daily: Mail will be send daily with the automatic period &amp;quot;last day&amp;quot;&lt;br /&gt;
** weekly: Mail will be send weekly with the automatic period &amp;quot;last week&amp;quot;&lt;br /&gt;
** monthly: Mail will be send daily with the automatic period &amp;quot;last month&amp;quot;&lt;br /&gt;
* &#039;&#039;&#039;day&#039;&#039;&#039;: the day, at which the report is sent&lt;br /&gt;
* &#039;&#039;&#039;mail adresses&#039;&#039;&#039;: recipients of the report (comma separated)&lt;br /&gt;
* &#039;&#039;&#039;Sender E-Mail address&#039;&#039;&#039;: sender email address, which may be present as [[ Reference10:Concept_Linux_Application_Platform#Relay_Hosts | relay host ]]&lt;br /&gt;
* &#039;&#039;&#039;compress&#039;&#039;&#039;: compress the attachment or not&lt;br /&gt;
* &#039;&#039;&#039;sort by&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;sort order&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;language&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;send time&#039;&#039;&#039;: the time of a day, when the report is sent&lt;br /&gt;
&lt;br /&gt;
The explanation for the other settings can be found [[ #Report_Creation | here. ]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:mails.png]]&lt;br /&gt;
&lt;br /&gt;
===Users===&lt;br /&gt;
&lt;br /&gt;
You can configure multiple users, who shall have access to reports without having access to the whole reporting configuration.&amp;lt;br&amp;gt;&lt;br /&gt;
The user can login with his user name and password on: &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
http(s)://Linux-IP/apps/innovaphone-reporting/user/login.php&lt;br /&gt;
&lt;br /&gt;
The admin can assign one or more base filters to the user. A base filter is explained [[ #Base_filter | here]].&amp;lt;br&amp;gt;&lt;br /&gt;
If the user creates new reports, new own filters or report mails, he &#039;&#039;&#039;has&#039;&#039;&#039; to use one of his assigned base filters.&lt;br /&gt;
&lt;br /&gt;
 If you are using multiple PBX systems, the user has only access to these systems, which are configured in the base filters of the user.&lt;br /&gt;
 If the user has no base filter with a limitation to a certain &amp;quot;System Name&amp;quot;/&amp;quot;PBX Name&amp;quot; (depends on your [[ #PBX | PBX configuration ]]),&lt;br /&gt;
 he will have access to all systems!&lt;br /&gt;
&lt;br /&gt;
[[Image:users.jpg]]&lt;br /&gt;
&lt;br /&gt;
====User Login====&lt;br /&gt;
&lt;br /&gt;
A logged in user can create reports, own filters and report mails based on his assigned base filters.&lt;br /&gt;
&lt;br /&gt;
[[Image:Userlogin.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Images===&lt;br /&gt;
&lt;br /&gt;
You may upload images to be used as logo or footer in pdf reports.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Logos must be 32x32 and footer can have a maximum width of 450 pixels and a maximum height of 50 pixels.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These images can have jpeg or png format.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Relay CDRs===&lt;br /&gt;
&lt;br /&gt;
Relay CDRs can be stored in log files by the Reporting application. Configure a CDR gateway as already described and relay CDRs will be written to the webdav file &#039;&#039;&#039;/cdr/cdr.txt&#039;&#039;&#039;.&lt;br /&gt;
The file is rotated on 1 MB size. The first rotated file is uncompressed, further files will be gz compressed. Max ten files are kept. Older files will be deleted:&amp;lt;br&amp;gt;&lt;br /&gt;
* cdr.txt&lt;br /&gt;
* cdr.txt.1&lt;br /&gt;
* cdr.txt.2.gz&lt;br /&gt;
* cdr.txt.3.gz&lt;br /&gt;
* cdr.txt.4.gz&lt;br /&gt;
* cdr.txt.5.gz&lt;br /&gt;
* cdr.txt.6.gz&lt;br /&gt;
* cdr.txt.7.gz&lt;br /&gt;
* cdr.txt.8.gz&lt;br /&gt;
* cdr.txt.9.gz&lt;br /&gt;
&lt;br /&gt;
===innovaphone-reporting web access===&lt;br /&gt;
&lt;br /&gt;
You can configure a separate authentication for the innovaphone-reporting web site [[Reference10:Concept_Linux_Application_Platform#Change_application_access_credentials|here]].&amp;lt;br&amp;gt;&lt;br /&gt;
One can just login on the reporting site with this access.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Integration Voice recorder===&lt;br /&gt;
&lt;br /&gt;
The innovaphone voice recording can be integrated and a remote control of the player is possible, see relative article. &lt;br /&gt;
&lt;br /&gt;
==Filters==&lt;br /&gt;
===General===&lt;br /&gt;
&lt;br /&gt;
Filters are set up to create reports based on certain conditions. A filter can have multiple conditions and multiple filters can be combined on report creation (combine is performed with an &#039;&#039;&#039;OR&#039;&#039;&#039;).&amp;lt;br&amp;gt;&lt;br /&gt;
A filter has a unique &#039;&#039;&#039;name&#039;&#039;&#039; with an optional &#039;&#039;&#039;description&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Conditions===&lt;br /&gt;
&lt;br /&gt;
[[Image:filter.png]]&lt;br /&gt;
&lt;br /&gt;
There are five or seven condition sections depending on what is selected under &#039;&#039;&#039;States&#039;&#039;&#039;. Conditions inside same section are &#039;&#039;&#039;OR&#039;&#039;&#039; associated while different sections are &#039;&#039;&#039;AND&#039;&#039;&#039; associated.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(Object == Terra &#039;&#039;&#039;OR&#039;&#039;&#039; Object == Uranus) &#039;&#039;&#039;AND&#039;&#039;&#039; (PBX == sifi) &#039;&#039;&#039;AND&#039;&#039;&#039; (Number == 0049%)&lt;br /&gt;
&lt;br /&gt;
====Base filter====&lt;br /&gt;
&lt;br /&gt;
If you select another filter as base filter, the conditions of the base filter are implicitly &#039;&#039;&#039;AND&#039;&#039;&#039; conjuncted, when the current filter is used.&amp;lt;br&amp;gt;&lt;br /&gt;
So if the base filter defines two PBX values, e.g. &amp;quot;Berlin&amp;quot; and &amp;quot;Hamburg&amp;quot; and the current filter defines one PBX value, e.g. &amp;quot;Berlin&amp;quot;, only objects of the PBX &amp;quot;Berlin&amp;quot; will be filtered:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 (pbx=&amp;quot;Berlin&amp;quot;) AND (pbx=&amp;quot;Berlin&amp;quot; OR pbx=&amp;quot;Hamburg&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
If a user defines an own filter for his reports, he has to use a base filter, which he is allowed to use. So each filter, which he uses, will have at least one base filter condition, which the admin has defined.&lt;br /&gt;
&lt;br /&gt;
 You have to take care with the conditions of the current filter and the base filter, &lt;br /&gt;
 as it is now easy to create a filter with mutually exclusive conditions, e.g. if &lt;br /&gt;
 the filter has pbx=&amp;quot;Berlin&amp;quot; and the base filter pbx=&amp;quot;Hamburg&amp;quot; =&amp;gt; no matching records.&lt;br /&gt;
&lt;br /&gt;
====Anonym====&lt;br /&gt;
&lt;br /&gt;
If you check this flag, a report created with this filter or with a filter, where this filter is a basefilter, will by anonymized.&lt;br /&gt;
&lt;br /&gt;
====Local====&lt;br /&gt;
&lt;br /&gt;
Define one ore more conditions for the local party, defined by:&lt;br /&gt;
&lt;br /&gt;
* Object: the cn/PBX object name&lt;br /&gt;
* Number: the number&lt;br /&gt;
* Groups: a group of the PBX object&lt;br /&gt;
&lt;br /&gt;
====Remote====&lt;br /&gt;
&lt;br /&gt;
Define one or more conditions for the remote party, defined by:&lt;br /&gt;
&lt;br /&gt;
* Number: the number&lt;br /&gt;
* Remote display name: the display name&lt;br /&gt;
&lt;br /&gt;
====PBX====&lt;br /&gt;
&lt;br /&gt;
Define one ore more conditions for the PBX, defined by:&lt;br /&gt;
&lt;br /&gt;
* PBX: the PBX name&lt;br /&gt;
* Node: the node name&lt;br /&gt;
&lt;br /&gt;
====States====&lt;br /&gt;
&lt;br /&gt;
* No Response&lt;br /&gt;
* Connected&lt;br /&gt;
* Busy&lt;br /&gt;
* No Channel&lt;br /&gt;
&lt;br /&gt;
====Directions====&lt;br /&gt;
&lt;br /&gt;
* Incoming&lt;br /&gt;
* Outgoing&lt;br /&gt;
* Transfer: calls, which have been transferred to the current local party&lt;br /&gt;
* Call Forward: calls, which have been forwarded to the current local party&lt;br /&gt;
&lt;br /&gt;
====Call Duration====&lt;br /&gt;
&lt;br /&gt;
Time the call was connected.&lt;br /&gt;
&lt;br /&gt;
This condition will be &#039;&#039;&#039;AND&#039;&#039;&#039; with the others if all &#039;&#039;&#039;States&#039;&#039;&#039; are selected.&amp;lt;br&amp;gt;&lt;br /&gt;
If Busy, No Channel or No Response is unselected, then the filter will search for Connected calls with connected time greater or smaller than &#039;&#039;&#039;Call Duration&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
====Alert Duration====&lt;br /&gt;
&lt;br /&gt;
Time the call was ringing independent of the status of the call afterwards.&lt;br /&gt;
&lt;br /&gt;
This condition will be &#039;&#039;&#039;AND&#039;&#039;&#039; with the others if all &#039;&#039;&#039;States&#039;&#039;&#039; are selected.&amp;lt;br&amp;gt;&lt;br /&gt;
If Busy, No Channel or Connected is unselected, then the filter will search only for Not Connected Calls that were ringing more or less time than &#039;&#039;&#039;Alert Duration&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
====Report times====&lt;br /&gt;
&lt;br /&gt;
Define the time where calls should be counted.&amp;lt;br&amp;gt;&lt;br /&gt;
You can optionally define the weekday(s) of calls.&lt;br /&gt;
&lt;br /&gt;
====Images====&lt;br /&gt;
&lt;br /&gt;
* Logo: This must be 32x32 pixel image in jpeg or png format.&amp;lt;br&amp;gt;&lt;br /&gt;
* Footer: Maximum width of 450 pels and maximum height of 50 pels. Also jpeg or png format.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Using Patterns====&lt;br /&gt;
&lt;br /&gt;
You can use these [[ #PostgreSQL_Patterns | PostgreSQL Patterns ]] for every condition.&lt;br /&gt;
&lt;br /&gt;
==Report Creation==&lt;br /&gt;
===General===&lt;br /&gt;
&lt;br /&gt;
It is possible to generate call lists for single users or more complex reports by means of filters.&lt;br /&gt;
&lt;br /&gt;
===Web Interface===&lt;br /&gt;
&lt;br /&gt;
Reporting application provides a web interface to generate reports.&lt;br /&gt;
&lt;br /&gt;
[[Image:Report_hide.png]]&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PBX&#039;&#039;&#039;: select the PBX for the report. The values of the drop down box depend on your [[#PBX | PBX configuration]]&lt;br /&gt;
* &#039;&#039;&#039;Object (Long Name)&#039;&#039;&#039;: corresponds to the PBX Long Name assigned to a specific user (% is a special postgresql character, which matches any string)&lt;br /&gt;
* &#039;&#039;&#039;Filter&#039;&#039;&#039;: one or multiple filters can be defined (&#039;&#039;&#039;OR&#039;&#039;&#039; joined)&lt;br /&gt;
* &#039;&#039;&#039;Group by&#039;&#039;&#039;: the result can be grouped by Date or Object&lt;br /&gt;
* &#039;&#039;&#039;Hide last X digits&#039;&#039;&#039;: you may replace the last digits of an external number with a &#039;*&#039;. &lt;br /&gt;
** LDAP must be configured in order to use this capability but if you want no LDAP funtionality, just unset the Active Box in LDAP.&lt;br /&gt;
** Actually, the pbx/phys value of a call is matched against the LDAP pbx value and if the number starts with the external line prefix.&lt;br /&gt;
* &#039;&#039;&#039;Anonym&#039;&#039;&#039;: do not show internal names/numbers&lt;br /&gt;
** If anonym is set, hide last digits is set to 3, if not set&lt;br /&gt;
* &#039;&#039;&#039;Filter Info&#039;&#039;&#039;: the report will contain information about the configured settings and filter information&lt;br /&gt;
* &#039;&#039;&#039;Displayed Duration&#039;&#039;&#039;: &lt;br /&gt;
** Call Duration (Total): the total call duration, e.g. with the duration of a subsequent transfer&lt;br /&gt;
** Call Duration (User): just the time, the user was connected&lt;br /&gt;
** Billing Duration: the duration, a user must be billed for&lt;br /&gt;
** None of these durations contain the alert duration, which is separatly listed&lt;br /&gt;
&lt;br /&gt;
[[Image:reporting_report.png | A normal report. The summary shows incoming / outgoing summaries]]&lt;br /&gt;
&lt;br /&gt;
[[Image:grouped_report.png | A grouped report. Each group has an own summary]]&lt;br /&gt;
&lt;br /&gt;
====Print====&lt;br /&gt;
&lt;br /&gt;
Click the print icon to open a printable version of the report.&lt;br /&gt;
&lt;br /&gt;
====Save====&lt;br /&gt;
You can save the report as &#039;&#039;&#039;pdf&#039;&#039;&#039; or as &#039;&#039;&#039;xml&#039;&#039;&#039; by using the corresponding icon.&amp;lt;br&amp;gt;&lt;br /&gt;
You can also download a report in &#039;&#039;&#039;csv&#039;&#039;&#039; format without call history. The report uses &#039;&#039;&#039;comma&#039;&#039;&#039; as delimeter character, &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; as text qualifier and &#039;&#039;&#039;PBX Object/Remote Party&#039;&#039;&#039; columns should be defined as Text (avoid telephone numbers to be considered as numbers by Excel). &#039;&#039;&#039;UTF-8&#039;&#039;&#039; must be used as character set.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Sorting====&lt;br /&gt;
&lt;br /&gt;
Each sortable column has a clickable column head. This sorting will be also used when opening the printable version or saving the report as PDF.&lt;br /&gt;
&lt;br /&gt;
====Icons====&lt;br /&gt;
The icons are explained in the [[#Call list icons|appendix]].&lt;br /&gt;
&lt;br /&gt;
===Remote Interface===&lt;br /&gt;
&lt;br /&gt;
See [[#Remote_Interface_2|Remote Interface Appendix]]&lt;br /&gt;
&lt;br /&gt;
==Backup and Restore==&lt;br /&gt;
&lt;br /&gt;
You can both manually and automatically backup the database and configuration files for Reporting under [[Reference10:Concept_Linux_Application_Platform#Backup|Administration/Backup]] in the application platform.&lt;br /&gt;
&lt;br /&gt;
Configuration details for the update server can be found [[Reference10:Concept_Linux_Application_Platform#Backup|here]].&lt;br /&gt;
&lt;br /&gt;
===Configuration Files===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;saveinnovaphone-reportingcfgs&#039;&#039;&#039; is the command used to automatically save configuration files with the [[Reference10:Concept_Linux_Application_Platform#Command_File|Command File]].&lt;br /&gt;
&lt;br /&gt;
===Data===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;saveinnovaphone-reportingdb&#039;&#039;&#039; is the command to automatically backup the whole innovaphone Reporting database with the [[Reference10:Concept_Linux_Application_Platform#Command_File|Command File]].&lt;br /&gt;
&lt;br /&gt;
 If you restore the reporting database, you should keep in mind, that this might take several hours for a system&lt;br /&gt;
 on a CF card, depending on the size of the restored database. The backup process itself is quite fast with a few minutes.&lt;br /&gt;
&lt;br /&gt;
===Logs===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;saveinnovaphone-reportinglogs&#039;&#039;&#039; to save log files with the [[Reference10:Concept_Linux_Application_Platform#Command_File|Command File]].&lt;br /&gt;
&lt;br /&gt;
==Appendix==&lt;br /&gt;
===PostgreSQL Patterns===&lt;br /&gt;
For filter conditions or for the pbx object value you can use the following patterns inside a string:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;%&#039;&#039;&#039;: matches any string of zero or more characters&lt;br /&gt;
* &#039;&#039;&#039;_&#039;&#039;&#039;: matches any single character&lt;br /&gt;
&lt;br /&gt;
 Example:&lt;br /&gt;
 &#039;&#039;&#039;Sat%&#039;&#039;&#039; will match all pbx objects, which start with the string &#039;&#039;&#039;Sat&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
 We do always perform case insensitiv searches!&lt;br /&gt;
&lt;br /&gt;
===innovaphone Reporting XML===&lt;br /&gt;
&amp;lt;code type=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
    &amp;lt;application&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;innovaphone Reporting&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;desc&amp;gt;Reporting software&amp;lt;/desc&amp;gt;&lt;br /&gt;
    &amp;lt;directory&amp;gt;innovaphone-reporting&amp;lt;/directory&amp;gt;&lt;br /&gt;
    &amp;lt;href&amp;gt;report.php&amp;lt;/href&amp;gt;&lt;br /&gt;
    &amp;lt;linux-username&amp;gt;innovaphone-reporting&amp;lt;/linux-username&amp;gt;&lt;br /&gt;
    &amp;lt;packages&amp;gt;&lt;br /&gt;
        &amp;lt;package&amp;gt;php5-gd&amp;lt;/package&amp;gt;&lt;br /&gt;
        &amp;lt;package&amp;gt;php5-ldap&amp;lt;/package&amp;gt;&lt;br /&gt;
    &amp;lt;/packages&amp;gt;&lt;br /&gt;
    &amp;lt;database name=&amp;quot;innovaphone-reporting&amp;quot; username=&amp;quot;innovaphone-reporting&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;cronjobs&amp;gt;&lt;br /&gt;
        &amp;lt;cronjob script=&amp;quot;/etc/cron.d/reporting_replication&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;cronjob script=&amp;quot;/etc/cron.d/reporting_cleanup&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;cronjob script=&amp;quot;/etc/cron.d/reporting_mails&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/cronjobs&amp;gt;&lt;br /&gt;
    &amp;lt;log-files&amp;gt;&lt;br /&gt;
        &amp;lt;log title=&amp;quot;Postgresql-8.4&amp;quot; no-clear=&amp;quot;true&amp;quot;&amp;gt;/var/log/postgresql/postgresql-8.4-main.log&amp;lt;/log&amp;gt;&lt;br /&gt;
        &amp;lt;log title=&amp;quot;Reporting cleanup&amp;quot;&amp;gt;/var/www/innovaphone/apps/innovaphone-reporting/log/reporting_cleanup.log&amp;lt;/log&amp;gt;&lt;br /&gt;
        &amp;lt;log title=&amp;quot;innovaphone Reporting&amp;quot;&amp;gt;/var/www/innovaphone/apps/innovaphone-reporting/log/innovaphone-reporting.log&amp;lt;/log&amp;gt;&lt;br /&gt;
        &amp;lt;log title=&amp;quot;innovaphone Reporting Replication&amp;quot;&amp;gt;/var/www/innovaphone/apps/innovaphone-reporting/log/reporting_replication.log&amp;lt;/log&amp;gt;&lt;br /&gt;
    &amp;lt;/log-files&amp;gt;&lt;br /&gt;
    &amp;lt;config-files&amp;gt;&lt;br /&gt;
        &amp;lt;conf&amp;gt;/etc/postgresql/8.4/main/pg_hba.conf&amp;lt;/conf&amp;gt;&lt;br /&gt;
        &amp;lt;conf&amp;gt;/etc/postgresql/8.4/main/postgresql.conf&amp;lt;/conf&amp;gt;&lt;br /&gt;
        &amp;lt;conf&amp;gt;/home/innovaphone-reporting/reporting.conf&amp;lt;/conf&amp;gt;&lt;br /&gt;
        &amp;lt;conf&amp;gt;/home/root/ssl_cert/server.key&amp;lt;/conf&amp;gt;&lt;br /&gt;
        &amp;lt;conf&amp;gt;/home/root/ssl_cert/server.crt&amp;lt;/conf&amp;gt;&lt;br /&gt;
        &amp;lt;conf&amp;gt;/etc/cron.d/reporting_replication&amp;lt;/conf&amp;gt;&lt;br /&gt;
        &amp;lt;conf&amp;gt;/etc/cron.d/reporting_cleanup&amp;lt;/conf&amp;gt;&lt;br /&gt;
        &amp;lt;conf&amp;gt;/etc/cron.d/reporting_mails&amp;lt;/conf&amp;gt;&lt;br /&gt;
	&amp;lt;conf&amp;gt;/var/www/innovaphone/apps/innovaphone-reporting/report_images&amp;lt;/conf&amp;gt;&lt;br /&gt;
    &amp;lt;/config-files&amp;gt;&lt;br /&gt;
    &amp;lt;backup&amp;gt;&lt;br /&gt;
        &amp;lt;command title=&amp;quot;Save innovaphone Reporting configuration files&amp;quot; cmd=&amp;quot;saveinnovaphone-reportingcfgs&amp;quot; script=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;command title=&amp;quot;Save innovaphone Reporting database&amp;quot; cmd=&amp;quot;saveinnovaphone-reportingdb&amp;quot; script=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;command title=&amp;quot;Save innovaphone Reporting log files&amp;quot; cmd=&amp;quot;saveinnovaphone-reportinglogs&amp;quot; script=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/backup&amp;gt;&lt;br /&gt;
    &amp;lt;restore&amp;gt;&lt;br /&gt;
        &amp;lt;command title=&amp;quot;Restore innovaphone Reporting configuration files&amp;quot; cmd=&amp;quot;restoreinnovaphone-reportingcfgs&amp;quot; script=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;action&amp;gt;/etc/init.d/postgresql restart&amp;lt;/action&amp;gt;&lt;br /&gt;
            &amp;lt;action&amp;gt;/etc/init.d/cron restart&amp;lt;/action&amp;gt;&lt;br /&gt;
        &amp;lt;/command&amp;gt; &lt;br /&gt;
        &amp;lt;command title=&amp;quot;Restore innovaphone Reporting database&amp;quot; cmd=&amp;quot;restoreinnovaphone-reportingdb&amp;quot; script=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/restore&amp;gt;&lt;br /&gt;
    &amp;lt;uninstall script=&amp;quot;/usr/bin/sudo /usr/local/bin/uninstall_script.sh -f &#039;innovaphone-reporting.xml&#039; -linux_user yes -linux_group yes -database yes -database_user yes -log_script &#039;/var/www/innovaphone/log/appl_uninstall.log&#039;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;to-delete&amp;gt;&lt;br /&gt;
            &amp;lt;to-del path=&amp;quot;/usr/local/bin/reporting_cleanup.sh&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;to-del path=&amp;quot;/usr/local/bin/reporting_replication.out&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;to-del path=&amp;quot;/usr/local/bin/reporting_replication.sh&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;to-del path=&amp;quot;/home/innovaphone-reporting/tmp&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/to-delete&amp;gt;&lt;br /&gt;
    &amp;lt;/uninstall&amp;gt;&lt;br /&gt;
    &amp;lt;lighttpd-auth&amp;gt;1&amp;lt;/lighttpd-auth&amp;gt;&lt;br /&gt;
    &amp;lt;public-web-paths&amp;gt;&lt;br /&gt;
        &amp;lt;path&amp;gt;mypbx&amp;lt;/path&amp;gt;&lt;br /&gt;
        &amp;lt;path&amp;gt;user&amp;lt;/path&amp;gt;&lt;br /&gt;
    &amp;lt;/public-web-paths&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Installed Debian Packages===&lt;br /&gt;
&lt;br /&gt;
The following packages (and their dependencies) are installed with innovaphone Reporting:&lt;br /&gt;
&lt;br /&gt;
* php5-gd&lt;br /&gt;
* php5-ldap&lt;br /&gt;
&lt;br /&gt;
===Configuration Files===&lt;br /&gt;
&lt;br /&gt;
pg_hba.conf is the client authentication configuration file and controls which hosts are allowed to connect, how clients&lt;br /&gt;
are authenticated, which PostgreSQL user names they can use and which databases they can access.&lt;br /&gt;
&lt;br /&gt;
postgresql.conf is the PostgreSQL configuration file&lt;br /&gt;
&lt;br /&gt;
===Data Files===&lt;br /&gt;
&lt;br /&gt;
If you backup the innovaphone reporting database, you&#039;ll get a gz archiv, which contains the whole innovaphone-reporting database.&lt;br /&gt;
&lt;br /&gt;
===Report XML===&lt;br /&gt;
The node description also applies for the &#039;&#039;&#039;CSV&#039;&#039;&#039; columns! &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code type=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;report&amp;gt;&lt;br /&gt;
    &amp;lt;record&amp;gt;&lt;br /&gt;
      ....&lt;br /&gt;
      &amp;lt;time time=&amp;quot;1301303966&amp;quot; utc=&amp;quot;1301303966&amp;quot;&amp;gt;2011-03-28 11:19:26&amp;lt;/time&amp;gt;&lt;br /&gt;
      &amp;lt;obj&amp;gt;Saturn&amp;lt;/obj&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;870998fee909d311b2ec009033105dc9&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;call&amp;gt;int&amp;lt;/call&amp;gt;&lt;br /&gt;
      &amp;lt;alert-duration seconds=&amp;quot;0&amp;quot;&amp;gt;0:00&amp;lt;/alert-duration&amp;gt;&lt;br /&gt;
      &amp;lt;flow&amp;gt;&lt;br /&gt;
        &amp;lt;ev caller=&amp;quot;ep1&amp;quot; ep1_number=&amp;quot;101&amp;quot; ep1_name=&amp;quot;saturn&amp;quot; ep1_dn=&amp;quot;Saturn&amp;quot; &lt;br /&gt;
                         ep2_number=&amp;quot;102&amp;quot; ep2_name=&amp;quot;uranus&amp;quot; ep2_dn=&amp;quot;Uranus&amp;quot; status=&amp;quot;co&amp;quot; entry=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;/flow&amp;gt;&lt;br /&gt;
      &amp;lt;call-duration seconds=&amp;quot;2&amp;quot;&amp;gt;0:02&amp;lt;/call-duration&amp;gt;&lt;br /&gt;
      &amp;lt;billing-duration seconds=&amp;quot;2&amp;quot;&amp;gt;0:02&amp;lt;/billing-duration&amp;gt;&lt;br /&gt;
      &amp;lt;conn-duration seconds=&amp;quot;2&amp;quot;&amp;gt;0:02&amp;lt;/conn-duration&amp;gt;&lt;br /&gt;
      &amp;lt;groups&amp;gt;&lt;br /&gt;
        &amp;lt;group&amp;gt;test&amp;lt;/group&amp;gt;&lt;br /&gt;
        &amp;lt;group&amp;gt;test2&amp;lt;/group&amp;gt;&lt;br /&gt;
      &amp;lt;/groups&amp;gt;&lt;br /&gt;
      &amp;lt;node&amp;gt;root&amp;lt;/node&amp;gt;&lt;br /&gt;
      &amp;lt;pbx&amp;gt;.&amp;lt;/pbx&amp;gt;&lt;br /&gt;
      &amp;lt;cause&amp;gt;&amp;lt;/cause&amp;gt;&lt;br /&gt;
      &amp;lt;dir&amp;gt;o&amp;lt;/dir&amp;gt;&lt;br /&gt;
      &amp;lt;status&amp;gt;co&amp;lt;/status&amp;gt;&lt;br /&gt;
      &amp;lt;type/&amp;gt;&lt;br /&gt;
      &amp;lt;remote number=&amp;quot;102&amp;quot; name=&amp;quot;uranus&amp;quot; dn=&amp;quot;Uranus&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;callback  number=&amp;quot;456&amp;quot; name=&amp;quot;abc&amp;quot; dn=&amp;quot;123&amp;quot; time=&amp;quot;1301305962&amp;quot;&amp;gt;2011-03-28 11:52:42&amp;lt;/callback&amp;gt;&lt;br /&gt;
    &amp;lt;/record&amp;gt;&lt;br /&gt;
    ....&lt;br /&gt;
  &amp;lt;/report&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* time: the node contains a formatted time string of the local time&lt;br /&gt;
** attribute &#039;&#039;&#039;time&#039;&#039;&#039; is a unix timestamp (referring to the local time stamp of the CDR)&lt;br /&gt;
** attribute &#039;&#039;&#039;utc&#039;&#039;&#039; is a unix timestamp (referring to the utc time stamp of the CDR)&lt;br /&gt;
* obj: the PBX object name (also called cn)&lt;br /&gt;
* id: the conference id of the call&lt;br /&gt;
* call: &#039;&#039;&#039;int&#039;&#039;&#039; (internal) or &#039;&#039;&#039;ext&#039;&#039;&#039; (external) call&lt;br /&gt;
* flow &#039;&#039;&#039;(XML only)&#039;&#039;&#039;: the call flow&lt;br /&gt;
** ev&lt;br /&gt;
***ep1 (ep1_number, ep1_name, ep1_dn): the left side of the call&lt;br /&gt;
***ep2 (ep2_number, ep2_name, ep2_dn): the right side of the call&lt;br /&gt;
***caller: &#039;&#039;&#039;ep1&#039;&#039;&#039;, &#039;&#039;&#039;ep2&#039;&#039;&#039; or empty, if unknown&lt;br /&gt;
***status: &#039;&#039;&#039;co&#039;&#039;&#039; (connected), &#039;&#039;&#039;al&#039;&#039;&#039; (alert), &#039;&#039;&#039;er&#039;&#039;&#039; (error) or &#039;&#039;&#039;bu&#039;&#039;&#039; (busy) state of the current event&lt;br /&gt;
***entry: &#039;&#039;&#039;true&#039;&#039;&#039; for the entry event of the local object&lt;br /&gt;
***type: &#039;&#039;&#039;cf&#039;&#039;&#039; (call forward), &#039;&#039;&#039;ct&#039;&#039;&#039; (call transfer)&lt;br /&gt;
* Original Called &#039;&#039;&#039;(CSV only)&#039;&#039;&#039;: In case of Call flow; The original called device&lt;br /&gt;
* Diverting &#039;&#039;&#039;(CSV only)&#039;&#039;&#039;: In case of Call flow; The diverting device&lt;br /&gt;
* Transferring &#039;&#039;&#039;(CSV only)&#039;&#039;&#039;: In case of Call flow; The transferring device&lt;br /&gt;
* groups &#039;&#039;&#039;(XML only)&#039;&#039;&#039;: the groups of the PBX object&lt;br /&gt;
* node: the node of the PBX object&lt;br /&gt;
* pbx: the pbx of the PBX object&lt;br /&gt;
* cause: the decimal disconnect reason of the call (see [[Reference:ISDN_Cause_Codes]])&lt;br /&gt;
* remote:&lt;br /&gt;
** outgoing calls -&amp;gt; dialed endpoint&lt;br /&gt;
** incoming calls -&amp;gt; first ep2 above entry event or entry event if this is the first one&lt;br /&gt;
** incoming calls with incoming transfer after entry event -&amp;gt; transfer target&lt;br /&gt;
* status:&lt;br /&gt;
** outgoing calls -&amp;gt; best found status in call flow&lt;br /&gt;
** incoming calls -&amp;gt; status of entry event&lt;br /&gt;
* type: the type of the entry event or, if not set, the type of the next event, if given&lt;br /&gt;
** empty: direct call&lt;br /&gt;
** &#039;&#039;&#039;ct&#039;&#039;&#039;: call transfer&lt;br /&gt;
** &#039;&#039;&#039;cf&#039;&#039;&#039;: call forward&lt;br /&gt;
** &#039;&#039;&#039;cct&#039;&#039;&#039;: call transfer with consultation&lt;br /&gt;
** &#039;&#039;&#039;pu&#039;&#039;&#039;: call pickup&lt;br /&gt;
* dir: o (outgoing) if the first event is the entry event and the caller is ep1&lt;br /&gt;
* dir: i (incoming) if not o&lt;br /&gt;
* alert-duration: alert time&lt;br /&gt;
* billing-duration: outgoing call -&amp;gt; duration from the first event until the last event in the flow&lt;br /&gt;
* billing-duration: incoming call -&amp;gt; duration from the first transfer/forward event until the last event in the flow&lt;br /&gt;
* call-duration: duration of the whole call&lt;br /&gt;
* conn-duration: duration from the entry event until the event, where the local endpoint isn&#039;t connected any more&lt;br /&gt;
* callback: &#039;&#039;&#039;name&#039;&#039;&#039;, &#039;&#039;&#039;number&#039;&#039;&#039;, &#039;&#039;&#039;dn&#039;&#039;&#039; and &#039;&#039;&#039;time&#039;&#039;&#039; if this call has been callbacked using mypbx (time referrs to the UTC time of the callback)&lt;br /&gt;
* Further Registration: If more than one devices is registered to the same object, each device creates a CDR. This field identifies the additional CDRs for the same call&lt;br /&gt;
* Object Info &#039;&#039;&#039;(CSV only)&#039;&#039;&#039;: combination of object names and number&lt;br /&gt;
* Date &#039;&#039;&#039;(CSV only)&#039;&#039;&#039;: extracted date only from the time_string&lt;br /&gt;
* Time_2 &#039;&#039;&#039;(CSV only)&#039;&#039;&#039;: extracted time only from the time_string&lt;br /&gt;
&lt;br /&gt;
===Database Structure===&lt;br /&gt;
&lt;br /&gt;
====cdrs====&lt;br /&gt;
Each received cdr-xml is formed by a cdr tag and an undefined number of event and group tags.&lt;br /&gt;
(Refer to: [[Reference10:Concept_Call_Detail_Record_CDR_PBX|CDR]])&lt;br /&gt;
&lt;br /&gt;
This section is composed by four tables: cdrs, events, groups and cdr_properties.&lt;br /&gt;
The first three tables contain the corresponding fields to store the information contained in the cdr, event and group tags.&amp;lt;br&amp;gt;&lt;br /&gt;
Each CDR represents the call in the view of one PBX object. So there might be multiple CDRs for one call if multiple PBX objects are used within the call.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;cdr fields:&#039;&#039;&#039; id, guid, sys, pbx, node, device, cn, e164, h323, dir, utc, local.&lt;br /&gt;
* &#039;&#039;&#039;event fields:&#039;&#039;&#039; id, msg, type, e164, h323, conf, cause, time, cdr_id, order_index.&lt;br /&gt;
* &#039;&#039;&#039;group fields:&#039;&#039;&#039; id, name, active, type, cdr_id.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;id&#039;&#039;&#039; field is assigned by postgresql for each entry and has nothing to do with the information present in the cdr. It is different for each entry inside the table.&lt;br /&gt;
&lt;br /&gt;
The events table has two additional fields, called cdr_id, to associate these events to the corresponding cdr entry and order_index to keep their position inside the cdr.&lt;br /&gt;
Groups table has also the cdr_id field to associate the group entries to the corresponding cdr and events entries.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;cdr_properties&#039;&#039;&#039; table contains relevant information associated with the call such as call_length, alert_length or call_flow. It also presents a cdr_id field.&lt;br /&gt;
&lt;br /&gt;
====filters====&lt;br /&gt;
&lt;br /&gt;
This section is composed by three tables: filter_columns, filter_conditions and filters. &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;filter_columns&#039;&#039;&#039; is not used for the time being. This is supposed to contain the columns the user wants to see in his report, but right now, just default columns (Time/Object/Duration/Left/Direction/State/Right) are shown.&lt;br /&gt;
* &#039;&#039;&#039;filter&#039;&#039;&#039; contains the filter name and description plus two conditions call_state (No Response, Connected, Busy and No Channel) and direction (Incoming, Outgoing, Transfer and Call Forward).&lt;br /&gt;
* &#039;&#039;&#039;filter_conditions&#039;&#039;&#039; contains the defined conditions for a filter&lt;br /&gt;
&lt;br /&gt;
All three tables are related through an id.&lt;br /&gt;
&lt;br /&gt;
====cdr_users====&lt;br /&gt;
&lt;br /&gt;
This table contains a timestamp &#039;&#039;&#039;missed_calls_time&#039;&#039;&#039; for the last report access by a user &#039;&#039;&#039;cn&#039;&#039;&#039; + (&#039;&#039;&#039;pbx&#039;&#039;&#039; OR &#039;&#039;&#039;sys&#039;&#039;&#039;) with mypbx. It is used to retrieve information about missed calls since the last use of mypbx.&amp;lt;br&amp;gt;&lt;br /&gt;
The timestamp &#039;&#039;&#039;clear_report_time&#039;&#039;&#039; indicates the last clearance time.&amp;lt;br&amp;gt;&lt;br /&gt;
email, sys (system name) and pbx (PBX name) are also stored for each user.&lt;br /&gt;
&lt;br /&gt;
====replication====&lt;br /&gt;
&lt;br /&gt;
Contains information of the last replication run, which is used to sync master/standby installations.&lt;br /&gt;
&lt;br /&gt;
===Replication===&lt;br /&gt;
&lt;br /&gt;
The replication between the master and standby servers is divided into two steps:&lt;br /&gt;
&lt;br /&gt;
====CDRs====&lt;br /&gt;
Both master and standby server keep an information about the last replicated CDR. From this CDR on, they retrieve all CDR guids (32 bytes) from all new CDRs from the other server. If a guid already exists in the local database, the CDR is skipped, otherwise it is replicated.&amp;lt;br&amp;gt;&lt;br /&gt;
So there is a minimal data exchange for already existing CDRs and each new CDR is only processed once.&lt;br /&gt;
&lt;br /&gt;
====Filters/LDAP/Report Mails/Users====&lt;br /&gt;
The master server does nothing here, but the &#039;&#039;&#039;standby&#039;&#039;&#039; deletes all filters, LDAP servers, report mails and users and replicates all from the master.&amp;lt;br&amp;gt;&lt;br /&gt;
So these items from the master server can be used, but not changed, on the standby server.&lt;br /&gt;
&lt;br /&gt;
===Remote Interface===&lt;br /&gt;
&lt;br /&gt;
You can retrieve the PDF/XML/CSV report with a remote interface.&amp;lt;br&amp;gt;&lt;br /&gt;
Make a POST or GET HTTP request to &#039;&#039;&#039;http(s)://Linux-IP/apps/innovaphone-reporting/report.php&#039;&#039;&#039; with the following parameters:&lt;br /&gt;
&lt;br /&gt;
* remote: mandatory for a remote request!&lt;br /&gt;
** &#039;&#039;&#039;1&#039;&#039;&#039;&lt;br /&gt;
* from : the from date/time as UNIX timestamp &#039;&#039;&#039;OR&#039;&#039;&#039; date/time string as described [ http://www.php.net/manual/de/datetime.formats.php | here ].&lt;br /&gt;
* to: the to date/time (format see &#039;&#039;&#039;from&#039;&#039;&#039;)&lt;br /&gt;
* [format]: the return format, allowed values:&lt;br /&gt;
** &#039;&#039;&#039;xml&#039;&#039;&#039;: default&lt;br /&gt;
** &#039;&#039;&#039;pdf&#039;&#039;&#039;&lt;br /&gt;
** &#039;&#039;&#039;csv&#039;&#039;&#039;&lt;br /&gt;
* [sortby] : the report sorting, allowed values:&lt;br /&gt;
** &#039;&#039;&#039;time&#039;&#039;&#039;: default&lt;br /&gt;
** &#039;&#039;&#039;obj&#039;&#039;&#039;: sort by pbx object name&lt;br /&gt;
** &#039;&#039;&#039;call-duration&#039;&#039;&#039;&lt;br /&gt;
** &#039;&#039;&#039;alert-duration&#039;&#039;&#039;&lt;br /&gt;
** &#039;&#039;&#039;dir&#039;&#039;&#039;: sort by call direction&lt;br /&gt;
* [sortorder]: the report sort order, allowed values:&lt;br /&gt;
** &#039;&#039;&#039;ascending&#039;&#039;&#039;: default&lt;br /&gt;
** &#039;&#039;&#039;descending&#039;&#039;&#039;&lt;br /&gt;
* [groupby]: report grouping&lt;br /&gt;
** default empty/not set: no grouping&lt;br /&gt;
** &#039;&#039;&#039;local_stamp&#039;&#039;&#039;: group by time&lt;br /&gt;
** &#039;&#039;&#039;cn&#039;&#039;&#039;: group by pbx object name&lt;br /&gt;
* [hidedigits]: hide the last X digits of external numbers&lt;br /&gt;
* pbx: search for this PBX (mandatory!)&lt;br /&gt;
* pbxobject: search for this PBX object (you can leave this, if you use filterX)&lt;br /&gt;
* filterX: use a filter with its name. You can use multiple filters with filter1=test, filter2=test2...&lt;br /&gt;
* [filterinfo]: show the filter information in a created report (&amp;quot;true&amp;quot; or &amp;quot;false&amp;quot;)&lt;br /&gt;
* [lang]: the language, e.g. &amp;quot;en&amp;quot; or &amp;quot;de&amp;quot;&lt;br /&gt;
* [displayedduration]: &lt;br /&gt;
** &#039;&#039;&#039;call_duration&#039;&#039;&#039;: default Call Duration (Total)&lt;br /&gt;
** &#039;&#039;&#039;conn_duration&#039;&#039;&#039;: Call Duration (User)&lt;br /&gt;
** &#039;&#039;&#039;billing_duration&#039;&#039;&#039;: Billing Duration&lt;br /&gt;
* [anonym]: anonymize internal names/numbers (&amp;quot;true&amp;quot; or &amp;quot;false&amp;quot;)&lt;br /&gt;
* [bulk]: creates user reports (see [[ #Report_Mails | Report Mails ]])&lt;br /&gt;
* [sender]: sender email adress of the report&lt;br /&gt;
* [confid]: query calls of a certain conference ID&lt;br /&gt;
** you can omit the following fields, if using confid: &#039;&#039;&#039;from&#039;&#039;&#039;, &#039;&#039;&#039;to&#039;&#039;&#039;, &#039;&#039;&#039;pbx&#039;&#039;&#039;, &#039;&#039;&#039;pbxobject&#039;&#039;&#039;, &#039;&#039;&#039;filterX&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 Parameters in [] are optional.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;pbxobject&#039;&#039;&#039; supports [[ #PostgreSQL_Patterns | PostgreSQL Patterns ]].&lt;br /&gt;
&lt;br /&gt;
 Example:&lt;br /&gt;
 https://172.16.14.123/apps/innovaphone-reporting/report.php?remote=1&amp;amp;from=2011-03-29&amp;amp;to=2011-03-30&amp;amp;format=xml&amp;amp;pbxobject=Saturn&lt;br /&gt;
 Gets all records between 2011-03-29 and 2011-03-30 for the pbx object Saturn.&lt;br /&gt;
&lt;br /&gt;
 Example:&lt;br /&gt;
 https://172.16.14.123/apps/innovaphone-reporting/report.php?remote=1&amp;amp;from=2011-03-29&amp;amp;to=2011-03-30&amp;amp;format=xml&amp;amp;filter1=test&amp;amp;filter2=test2&lt;br /&gt;
 Gets all records between 2011-03-29 and 2011-03-30 for the filters test and test2.&lt;br /&gt;
&lt;br /&gt;
===Tools===&lt;br /&gt;
&lt;br /&gt;
====NetDrive====&lt;br /&gt;
&lt;br /&gt;
[http://www.heise.de/software/download/netdrive/55134 NetDrive] is a usefull webdav client, which can be used to access webdav of the innovaphone application platform.&lt;br /&gt;
&lt;br /&gt;
====PGAdmin====&lt;br /&gt;
&lt;br /&gt;
[http://www.pgadmin.org/ PGAdmin] is an administration tool for PostgreSQL databases.&lt;br /&gt;
&lt;br /&gt;
====Putty====&lt;br /&gt;
&lt;br /&gt;
[http://www.putty.org/ Putty] is SSH client to connect to the linux application platform.&lt;br /&gt;
&lt;br /&gt;
===Call list icons===&lt;br /&gt;
The direction of the icon arrow depends on the call flow.&lt;br /&gt;
&lt;br /&gt;
* [[Image:reporting_conn.jpg]]: a connected call&lt;br /&gt;
* [[Image:reporting_busy.jpg]]: busy destination&lt;br /&gt;
* [[Image:reporting_no_res.jpg]]: no response from destination&lt;br /&gt;
* [[Image:reporting_error.jpg]]: an error occurred, like &amp;quot;no channel available&amp;quot; during the call setup&lt;br /&gt;
* [[Image:reporting_ct.jpg]]: call transfer&lt;br /&gt;
* [[Image:reporting_cct.jpg]]: call transfer with consultation&lt;br /&gt;
* [[Image:reporting_cf.jpg]]: call forward&lt;br /&gt;
* [[Image:Reporting_pickup.jpg]]: call pickup (or SOAP redirect)&lt;br /&gt;
* [[Image:reporting_dir.jpg]]: call direction&lt;br /&gt;
&lt;br /&gt;
A small arrow on a call state icon indicates a callback done with mxPBY, e.g.:&lt;br /&gt;
* [[Image:reporting_busy_callback.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Known Problems==&lt;br /&gt;
===Replication===&lt;br /&gt;
====Callback information====&lt;br /&gt;
The callback information get lost in the following scenario:&lt;br /&gt;
* The callback CDR is already replicated on both master and standby&lt;br /&gt;
* Master or standby is down&lt;br /&gt;
* A user calls back the CDR from point 1&lt;br /&gt;
&lt;br /&gt;
====Missed calls====&lt;br /&gt;
The information for missed calls is not replicated. So the first time, a standby server is used with mypbx, the missed calls information will be wrong. The second time will be correct again.&lt;br /&gt;
&lt;br /&gt;
===CDRs===&lt;br /&gt;
If the innovaphone Reporting is not running, for whatever reaseon, the device, which sends CDRs, currently stores up to 300kB CDRs data. So if one CDR has up to 2kB, 150 CDRs can be stored until the innovaphone Reporting should be up again, to avoid data loss.&lt;br /&gt;
&lt;br /&gt;
===Missing values for PBX drop down box===&lt;br /&gt;
If your database currently contains no CDRs of one of your PBX systems, you won&#039;t be able to select this system as PBX for report creation or report mail configuration!&lt;br /&gt;
&lt;br /&gt;
===Restoring Database with more than 2GB===&lt;br /&gt;
&lt;br /&gt;
When restoring database using the web browser there is a 2GB upload limit, so if our database have a bigger size the upload will fail.&lt;br /&gt;
&lt;br /&gt;
As alternative solution (if there is enough space):&lt;br /&gt;
&lt;br /&gt;
 1. Copy the gz database dump to the webdav folder&lt;br /&gt;
 2. Uncompress this dump: /bin/gzip -cd /var/www/innovaphone/webdav/dump.gz --uncompress &amp;gt; /tmp/db.dump&lt;br /&gt;
 3. Start the restore: /usr/local/bin/config.sh postgres db-restore /tmp/pg_schema.dump /tmp/db.dump innovaphone-reporting&lt;br /&gt;
 4. be patient, this might take a while&lt;br /&gt;
 5. delete /tmp/db.dump, /var/www/innovaphone/webdav/dump.gz and /tmp/pg_schema.dump (automatically created)&lt;br /&gt;
&lt;br /&gt;
===PDF generation for many CDRs may fail===&lt;br /&gt;
You may experience a &#039;&#039;&#039;Server error 500&#039;&#039;&#039; if you generate PDFs with many CDRs. The PDF library which is used to generate the PDFs fails.&lt;br /&gt;
Please generate multiple PDFs with a smaller timespan in such a case.&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
&lt;br /&gt;
[[Howto:Integration_reporting_and_voice_recording]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Concept|Reporting]]&lt;/div&gt;</summary>
		<author><name>Tru</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference10:Concept_Reporting&amp;diff=44492</id>
		<title>Reference10:Concept Reporting</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference10:Concept_Reporting&amp;diff=44492"/>
		<updated>2016-10-17T09:42:06Z</updated>

		<summary type="html">&lt;p&gt;Tru: /* Remote Interface */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Requirements==&lt;br /&gt;
&lt;br /&gt;
It is needed to have the [[Reference10:Concept_Linux_Application_Platform|application platform]] installed and running.&lt;br /&gt;
&lt;br /&gt;
===Calculation of required disk space===&lt;br /&gt;
&lt;br /&gt;
An average CDR requires 2080 bytes of disk space inside the database.&amp;lt;br&amp;gt;&lt;br /&gt;
So &#039;&#039;&#039;one GB&#039;&#039;&#039; disk space is needed for ~&#039;&#039;&#039;516222 CDRs&#039;&#039;&#039;. &amp;lt;br&amp;gt;&lt;br /&gt;
One call may have one or multiple CDRs depending on the call flow, the used PBX objects and their configuration.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;&lt;br /&gt;
It is strongly recommended that you try to precalculate your required disk space and configure a suiting value under [[#Configure_scheduled_CDR_cleanup]].&amp;lt;br&amp;gt;&lt;br /&gt;
Don&#039;t forget to configure the alarm server under [[Reference10:Concept_Linux_Application_Platform#Alarm_Server]] to receive an alarm if the disk is nearly full (10% disk space remaining).&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
&lt;br /&gt;
Download the latest version of innovaphone reporting.&lt;br /&gt;
&lt;br /&gt;
Log into the application platform, go to the Applications tag, click on [[ Reference10:Concept_Linux_Application_Platform#Upload.2FUpdate|Upload/Update]] and upload the downloaded file. &lt;br /&gt;
The installation will start automatically and the page will refresh every two seconds showing the installation process. &lt;br /&gt;
If there is no error during the installation you will see at the end &amp;quot;Installation was succesfull&amp;quot;. Otherwise,&lt;br /&gt;
you will get &amp;quot;installation failed&amp;quot; and the reason why it went wrong.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Hotfix===&lt;br /&gt;
If you have already installed the latest version of Reporting, simply download the Reporting...HotfixIncremental for your platform (VM or IPxx10) or if you have missed some hotfixes, download the Reporting...HotfixCumulative archive, which contains all hotfixes since hotfix1.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Upload this hotfix archive [[Reference10:Concept_Linux_Application_Platform#Upload.2FUpdate|here]].&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
===Device===&lt;br /&gt;
&lt;br /&gt;
====License====&lt;br /&gt;
It is required to have a Reporting license installed on your device. Check under [[ Reference10:General/License ]] if you already have one.&lt;br /&gt;
&lt;br /&gt;
 Set the Reporting flag for each PBX object, which should be reported on the objects properties page.&lt;br /&gt;
&lt;br /&gt;
====CDR Gateway====&lt;br /&gt;
Any innovaphone device which sends [[Reference10:Concept_Call_Detail_Record_CDR_PBX|CDRs]] to the reporting application must have at least one CDR interface configured under [[ Reference10:Gateway/CDR ]]:&lt;br /&gt;
&lt;br /&gt;
* Type: LOCAL-AP or REMOTE-AP/REMOTE-AP-S&lt;br /&gt;
&lt;br /&gt;
If HTTP/HTTPS is selected then some other parameters must be set:&lt;br /&gt;
&lt;br /&gt;
* Address: ip address of the application platform&lt;br /&gt;
* Port: 80 for REMOTE-AP&lt;br /&gt;
* Port: 443 for REMOTE-AP-S&lt;br /&gt;
* Method: POST/GET&lt;br /&gt;
* Path: ap/cdr.fcgi&lt;br /&gt;
&lt;br /&gt;
The application platform is by default password protected, so you&#039;ll have to perform one of these steps: &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* configure an authenticated URL for &#039;&#039;&#039;ap/cdr.fcgi&#039;&#039;&#039; under [[ Reference10:Services/HTTP/Client ]] (recommended)&lt;br /&gt;
** If you configure an authenticated URL (with the linux webserver credentials), don&#039;t forget to configure port 80 or port 443 for secure transport (Remote-AP-S) like https://111.111.111.111:443/ap or http://111.111.111.111:80/ap&lt;br /&gt;
* configure &#039;&#039;&#039;ap/cdr.fcgi&#039;&#039;&#039; as public web path on the innovaphone application platform [[ Reference10:Concept_Linux_Application_Platform#Change_web_server_properties_and_public_access_to_the_web.2Fwebdav|Public Web Paths ]]&lt;br /&gt;
&lt;br /&gt;
 Configure a second CDR interface, if you use [[#Replication|Replication]].&lt;br /&gt;
&lt;br /&gt;
====Enable PBX CDRs====&lt;br /&gt;
Enable the &amp;quot;Generate CDRs&amp;quot; flag under [[ Reference10:PBX/Config/General ]].&lt;br /&gt;
&lt;br /&gt;
===innovaphone Application Platform===&lt;br /&gt;
&lt;br /&gt;
If the reporting URL/user/password is not configured in your device as authenticated URL, configure &#039;&#039;&#039;ap/cdr.fcgi&#039;&#039;&#039; as public web path on the innovaphone application platform [[ Reference10:Concept_Linux_Application_Platform#Change_web_server_properties_and_public_access_to_the_web.2Fwebdav|Public Web Paths ]].&lt;br /&gt;
&lt;br /&gt;
===Database===&lt;br /&gt;
&lt;br /&gt;
Reporting creates the innovaphone-reporting database to store CDRs sent from any innovaphone devices (appendix 7.6 explains the database structure). &lt;br /&gt;
PostgreSQL is also available for other applications and any of them could create its own database. &lt;br /&gt;
&lt;br /&gt;
====Password====&lt;br /&gt;
&lt;br /&gt;
Reporting creates the database user &#039;&#039;&#039;innovaphone-reporting&#039;&#039;&#039; with default password &#039;&#039;&#039;reporting&#039;&#039;&#039;. &lt;br /&gt;
This password may be changed at the innovaphone Reporting page under Config/Database.&lt;br /&gt;
&lt;br /&gt;
====Remote Access====&lt;br /&gt;
&lt;br /&gt;
There are tools (PgAdmin III) that allow to connect to application databases remotely. &lt;br /&gt;
It is first needed to configure the IP you are connecting from under Config/Database at the innovaphone reporting page.&lt;br /&gt;
&lt;br /&gt;
For the PgAdmin III it is imporant to use innovaphone-reporting as Service-DB (Wartungs-DB). Default login credentials - User: innovaphone-reporting - Password: reporting&lt;br /&gt;
&lt;br /&gt;
====Delete CDRs====&lt;br /&gt;
&lt;br /&gt;
You can delete CDRs for certain/all users in a certain timespan. If you enter &#039;&#039;&#039;%&#039;&#039;&#039; as object, all users are selected.&lt;br /&gt;
&lt;br /&gt;
 Note that PostgreSQL doesn&#039;t free the space on the disk! If you need free disk space, issue this command on the shell:&lt;br /&gt;
 &#039;&#039;sudo -u postgres vacuumdb -f innovaphone-reporting&#039;&#039;&lt;br /&gt;
 This may take some time and CDRs won&#039;t be received during this time.&lt;br /&gt;
&lt;br /&gt;
====Configure scheduled CDR cleanup====&lt;br /&gt;
&lt;br /&gt;
If you activate scheduled cleanup, CDRs older than the configured amount of months will be automatically deleted.&amp;lt;br&amp;gt;&lt;br /&gt;
The scheduled task is started once a day at 2 AM.&lt;br /&gt;
&lt;br /&gt;
===PBX===&lt;br /&gt;
&lt;br /&gt;
If you use multiple PBX devices which are not Master/Slave, you have to select, which identifier is unique for a user under Config/PBX:&lt;br /&gt;
* System Name (default)&lt;br /&gt;
* PBX Name&lt;br /&gt;
&lt;br /&gt;
The selected value determines, which values are shown in the PBX dropdown box for report creation or report mail configuration.&lt;br /&gt;
&lt;br /&gt;
===Replication===&lt;br /&gt;
&lt;br /&gt;
You can configure a second innovaphone application platform with an installed innovaphone Reporting for replication purposes.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Mode:&lt;br /&gt;
** &#039;&#039;&#039;Off&#039;&#039;&#039;: no replication&lt;br /&gt;
** &#039;&#039;&#039;Master&#039;&#039;&#039;: the local server is the master server&lt;br /&gt;
** &#039;&#039;&#039;Standby&#039;&#039;&#039;: the local server is the standby server, filters will be replicated from the master and can&#039;t be changed here&lt;br /&gt;
* Master/Standby Server: the IP address of the master or standby server&lt;br /&gt;
* Database password: the PostgreSQL database password of the other server (default is &#039;&#039;&#039;reporting&#039;&#039;&#039;).&lt;br /&gt;
* Synchronisation interval: the interval in minutes (range 1-60) in which a sync is done&lt;br /&gt;
&lt;br /&gt;
Now configure a second [[#CDR_Gateway|CDR Gateway]] for the standby server.&lt;br /&gt;
&lt;br /&gt;
The current status can be seen here too. If the status is &#039;&#039;&#039;Failed&#039;&#039;&#039; take a look at the log file &#039;&#039;&#039;innovaphone Reporting Replication&#039;&#039;&#039; under [[ Reference10:Concept_Linux_Application_Platform#Logs|Diagnostics/Logs]] or look at the last trace output at the bottom of the page.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
How replication works is described [[#Replication_2|here]].&lt;br /&gt;
&lt;br /&gt;
===LDAP===&lt;br /&gt;
&lt;br /&gt;
Several LDAP servers and dialing locations can be configured here.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
PBX field must correspond to a name of a PBX since PBX&#039;s names are available in CDRs. The received CDR is parsed to get the PBX name and this name will be used to find the corresponding LDAP server and dialing location needed to resolve names.&lt;br /&gt;
&lt;br /&gt;
Each configured LDAP server and dialing location can be activated/deactivated with the &#039;&#039;&#039;active&#039;&#039;&#039; flag.&lt;br /&gt;
&lt;br /&gt;
[[Image:ldap_update.png]]&lt;br /&gt;
&lt;br /&gt;
If the country where you configure LDAP does not have Trunk/National prefix you should leave &amp;quot;National Prefix&amp;quot; and &amp;quot;Area Code&amp;quot; empty.&lt;br /&gt;
&lt;br /&gt;
In the number Attributes field please do &#039;&#039;&#039;not&#039;&#039;&#039; add any additional characters to the attributes like &amp;quot;:P&amp;quot;, &amp;quot;:D&amp;quot; or &amp;quot;@&amp;quot;, for instance &amp;quot;homePhone:P, mobile:M, telephoneNumber:D&amp;quot;. This does not work. That would be correct: &amp;quot;homePhone, mobile, telephoneNumber&amp;quot;&lt;br /&gt;
&lt;br /&gt;
LDAP Internal Search flag allows reporting to perform name resolution also for internal numbers.&lt;br /&gt;
&lt;br /&gt;
===Report Mails===&lt;br /&gt;
&lt;br /&gt;
Automatic report generation can be configured here:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;time&#039;&#039;&#039;: daytime at which the report is sent&lt;br /&gt;
* &#039;&#039;&#039;user reports&#039;&#039;&#039;: &lt;br /&gt;
** Creates for each matching user a separate report&lt;br /&gt;
** Users are matched by &#039;&#039;&#039;Object (Long Name)&#039;&#039;&#039;&lt;br /&gt;
** A user report only contains calls for this user&lt;br /&gt;
** The email address of the user is built by its &#039;&#039;&#039;H323 name&#039;&#039;&#039; and the &#039;&#039;&#039;System Name&#039;&#039;&#039; of its PBX (h323@systemname) or determined by the E-Mail field of the user&lt;br /&gt;
* &#039;&#039;&#039;interval&#039;&#039;&#039;: &lt;br /&gt;
** daily: Mail will be send daily with the automatic period &amp;quot;last day&amp;quot;&lt;br /&gt;
** weekly: Mail will be send weekly with the automatic period &amp;quot;last week&amp;quot;&lt;br /&gt;
** monthly: Mail will be send daily with the automatic period &amp;quot;last month&amp;quot;&lt;br /&gt;
* &#039;&#039;&#039;day&#039;&#039;&#039;: the day, at which the report is sent&lt;br /&gt;
* &#039;&#039;&#039;mail adresses&#039;&#039;&#039;: recipients of the report (comma separated)&lt;br /&gt;
* &#039;&#039;&#039;Sender E-Mail address&#039;&#039;&#039;: sender email address, which may be present as [[ Reference10:Concept_Linux_Application_Platform#Relay_Hosts | relay host ]]&lt;br /&gt;
* &#039;&#039;&#039;compress&#039;&#039;&#039;: compress the attachment or not&lt;br /&gt;
* &#039;&#039;&#039;sort by&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;sort order&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;language&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;send time&#039;&#039;&#039;: the time of a day, when the report is sent&lt;br /&gt;
&lt;br /&gt;
The explanation for the other settings can be found [[ #Report_Creation | here. ]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:mails.png]]&lt;br /&gt;
&lt;br /&gt;
===Users===&lt;br /&gt;
&lt;br /&gt;
You can configure multiple users, who shall have access to reports without having access to the whole reporting configuration.&amp;lt;br&amp;gt;&lt;br /&gt;
The user can login with his user name and password on: &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
http(s)://Linux-IP/apps/innovaphone-reporting/user/login.php&lt;br /&gt;
&lt;br /&gt;
The admin can assign one or more base filters to the user. A base filter is explained [[ #Base_filter | here]].&amp;lt;br&amp;gt;&lt;br /&gt;
If the user creates new reports, new own filters or report mails, he &#039;&#039;&#039;has&#039;&#039;&#039; to use one of his assigned base filters.&lt;br /&gt;
&lt;br /&gt;
 If you are using multiple PBX systems, the user has only access to these systems, which are configured in the base filters of the user.&lt;br /&gt;
 If the user has no base filter with a limitation to a certain &amp;quot;System Name&amp;quot;/&amp;quot;PBX Name&amp;quot; (depends on your [[ #PBX | PBX configuration ]]),&lt;br /&gt;
 he will have access to all systems!&lt;br /&gt;
&lt;br /&gt;
[[Image:users.jpg]]&lt;br /&gt;
&lt;br /&gt;
====User Login====&lt;br /&gt;
&lt;br /&gt;
A logged in user can create reports, own filters and report mails based on his assigned base filters.&lt;br /&gt;
&lt;br /&gt;
[[Image:Userlogin.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Images===&lt;br /&gt;
&lt;br /&gt;
You may upload images to be used as logo or footer in pdf reports.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Logos must be 32x32 and footer can have a maximum width of 450 pixels and a maximum height of 50 pixels.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These images can have jpeg or png format.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Relay CDRs===&lt;br /&gt;
&lt;br /&gt;
Relay CDRs can be stored in log files by the Reporting application. Configure a CDR gateway as already described and relay CDRs will be written to the webdav file &#039;&#039;&#039;/cdr/cdr.txt&#039;&#039;&#039;.&lt;br /&gt;
The file is rotated on 1 MB size. The first rotated file is uncompressed, further files will be gz compressed. Max ten files are kept. Older files will be deleted:&amp;lt;br&amp;gt;&lt;br /&gt;
* cdr.txt&lt;br /&gt;
* cdr.txt.1&lt;br /&gt;
* cdr.txt.2.gz&lt;br /&gt;
* cdr.txt.3.gz&lt;br /&gt;
* cdr.txt.4.gz&lt;br /&gt;
* cdr.txt.5.gz&lt;br /&gt;
* cdr.txt.6.gz&lt;br /&gt;
* cdr.txt.7.gz&lt;br /&gt;
* cdr.txt.8.gz&lt;br /&gt;
* cdr.txt.9.gz&lt;br /&gt;
&lt;br /&gt;
===innovaphone-reporting web access===&lt;br /&gt;
&lt;br /&gt;
You can configure a separate authentication for the innovaphone-reporting web site [[Reference10:Concept_Linux_Application_Platform#Change_application_access_credentials|here]].&amp;lt;br&amp;gt;&lt;br /&gt;
One can just login on the reporting site with this access.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Integration Voice recorder===&lt;br /&gt;
&lt;br /&gt;
The innovaphone voice recording can be integrated and a remote control of the player is possible, see relative article. &lt;br /&gt;
&lt;br /&gt;
==Filters==&lt;br /&gt;
===General===&lt;br /&gt;
&lt;br /&gt;
Filters are set up to create reports based on certain conditions. A filter can have multiple conditions and multiple filters can be combined on report creation (combine is performed with an &#039;&#039;&#039;OR&#039;&#039;&#039;).&amp;lt;br&amp;gt;&lt;br /&gt;
A filter has a unique &#039;&#039;&#039;name&#039;&#039;&#039; with an optional &#039;&#039;&#039;description&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Conditions===&lt;br /&gt;
&lt;br /&gt;
[[Image:filter.png]]&lt;br /&gt;
&lt;br /&gt;
There are five or seven condition sections depending on what is selected under &#039;&#039;&#039;States&#039;&#039;&#039;. Conditions inside same section are &#039;&#039;&#039;OR&#039;&#039;&#039; associated while different sections are &#039;&#039;&#039;AND&#039;&#039;&#039; associated.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(Object == Terra &#039;&#039;&#039;OR&#039;&#039;&#039; Object == Uranus) &#039;&#039;&#039;AND&#039;&#039;&#039; (PBX == sifi) &#039;&#039;&#039;AND&#039;&#039;&#039; (Number == 0049%)&lt;br /&gt;
&lt;br /&gt;
====Base filter====&lt;br /&gt;
&lt;br /&gt;
If you select another filter as base filter, the conditions of the base filter are implicitly &#039;&#039;&#039;AND&#039;&#039;&#039; conjuncted, when the current filter is used.&amp;lt;br&amp;gt;&lt;br /&gt;
So if the base filter defines two PBX values, e.g. &amp;quot;Berlin&amp;quot; and &amp;quot;Hamburg&amp;quot; and the current filter defines one PBX value, e.g. &amp;quot;Berlin&amp;quot;, only objects of the PBX &amp;quot;Berlin&amp;quot; will be filtered:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 (pbx=&amp;quot;Berlin&amp;quot;) AND (pbx=&amp;quot;Berlin&amp;quot; OR pbx=&amp;quot;Hamburg&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
If a user defines an own filter for his reports, he has to use a base filter, which he is allowed to use. So each filter, which he uses, will have at least one base filter condition, which the admin has defined.&lt;br /&gt;
&lt;br /&gt;
 You have to take care with the conditions of the current filter and the base filter, &lt;br /&gt;
 as it is now easy to create a filter with mutually exclusive conditions, e.g. if &lt;br /&gt;
 the filter has pbx=&amp;quot;Berlin&amp;quot; and the base filter pbx=&amp;quot;Hamburg&amp;quot; =&amp;gt; no matching records.&lt;br /&gt;
&lt;br /&gt;
====Anonym====&lt;br /&gt;
&lt;br /&gt;
If you check this flag, a report created with this filter or with a filter, where this filter is a basefilter, will by anonymized.&lt;br /&gt;
&lt;br /&gt;
====Local====&lt;br /&gt;
&lt;br /&gt;
Define one ore more conditions for the local party, defined by:&lt;br /&gt;
&lt;br /&gt;
* Object: the cn/PBX object name&lt;br /&gt;
* Number: the number&lt;br /&gt;
* Groups: a group of the PBX object&lt;br /&gt;
&lt;br /&gt;
====Remote====&lt;br /&gt;
&lt;br /&gt;
Define one or more conditions for the remote party, defined by:&lt;br /&gt;
&lt;br /&gt;
* Number: the number&lt;br /&gt;
* Remote display name: the display name&lt;br /&gt;
&lt;br /&gt;
====PBX====&lt;br /&gt;
&lt;br /&gt;
Define one ore more conditions for the PBX, defined by:&lt;br /&gt;
&lt;br /&gt;
* PBX: the PBX name&lt;br /&gt;
* Node: the node name&lt;br /&gt;
&lt;br /&gt;
====States====&lt;br /&gt;
&lt;br /&gt;
* No Response&lt;br /&gt;
* Connected&lt;br /&gt;
* Busy&lt;br /&gt;
* No Channel&lt;br /&gt;
&lt;br /&gt;
====Directions====&lt;br /&gt;
&lt;br /&gt;
* Incoming&lt;br /&gt;
* Outgoing&lt;br /&gt;
* Transfer: calls, which have been transferred to the current local party&lt;br /&gt;
* Call Forward: calls, which have been forwarded to the current local party&lt;br /&gt;
&lt;br /&gt;
====Call Duration====&lt;br /&gt;
&lt;br /&gt;
Time the call was connected.&lt;br /&gt;
&lt;br /&gt;
This condition will be &#039;&#039;&#039;AND&#039;&#039;&#039; with the others if all &#039;&#039;&#039;States&#039;&#039;&#039; are selected.&amp;lt;br&amp;gt;&lt;br /&gt;
If Busy, No Channel or No Response is unselected, then the filter will search for Connected calls with connected time greater or smaller than &#039;&#039;&#039;Call Duration&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
====Alert Duration====&lt;br /&gt;
&lt;br /&gt;
Time the call was ringing independent of the status of the call afterwards.&lt;br /&gt;
&lt;br /&gt;
This condition will be &#039;&#039;&#039;AND&#039;&#039;&#039; with the others if all &#039;&#039;&#039;States&#039;&#039;&#039; are selected.&amp;lt;br&amp;gt;&lt;br /&gt;
If Busy, No Channel or Connected is unselected, then the filter will search only for Not Connected Calls that were ringing more or less time than &#039;&#039;&#039;Alert Duration&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
====Report times====&lt;br /&gt;
&lt;br /&gt;
Define the time where calls should be counted.&amp;lt;br&amp;gt;&lt;br /&gt;
You can optionally define the weekday(s) of calls.&lt;br /&gt;
&lt;br /&gt;
====Images====&lt;br /&gt;
&lt;br /&gt;
* Logo: This must be 32x32 pixel image in jpeg or png format.&amp;lt;br&amp;gt;&lt;br /&gt;
* Footer: Maximum width of 450 pels and maximum height of 50 pels. Also jpeg or png format.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Using Patterns====&lt;br /&gt;
&lt;br /&gt;
You can use these [[ #PostgreSQL_Patterns | PostgreSQL Patterns ]] for every condition.&lt;br /&gt;
&lt;br /&gt;
==Report Creation==&lt;br /&gt;
===General===&lt;br /&gt;
&lt;br /&gt;
It is possible to generate call lists for single users or more complex reports by means of filters.&lt;br /&gt;
&lt;br /&gt;
===Web Interface===&lt;br /&gt;
&lt;br /&gt;
Reporting application provides a web interface to generate reports.&lt;br /&gt;
&lt;br /&gt;
[[Image:Report_hide.png]]&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PBX&#039;&#039;&#039;: select the PBX for the report. The values of the drop down box depend on your [[#PBX | PBX configuration]]&lt;br /&gt;
* &#039;&#039;&#039;Object (Long Name)&#039;&#039;&#039;: corresponds to the PBX Long Name assigned to a specific user (% is a special postgresql character, which matches any string)&lt;br /&gt;
* &#039;&#039;&#039;Filter&#039;&#039;&#039;: one or multiple filters can be defined (&#039;&#039;&#039;OR&#039;&#039;&#039; joined)&lt;br /&gt;
* &#039;&#039;&#039;Group by&#039;&#039;&#039;: the result can be grouped by Date or Object&lt;br /&gt;
* &#039;&#039;&#039;Hide last X digits&#039;&#039;&#039;: you may replace the last digits of an external number with a &#039;*&#039;. &lt;br /&gt;
** LDAP must be configured in order to use this capability but if you want no LDAP funtionality, just unset the Active Box in LDAP.&lt;br /&gt;
** Actually, the pbx/phys value of a call is matched against the LDAP pbx value and if the number starts with the external line prefix.&lt;br /&gt;
* &#039;&#039;&#039;Anonym&#039;&#039;&#039;: do not show internal names/numbers&lt;br /&gt;
** If anonym is set, hide last digits is set to 3, if not set&lt;br /&gt;
* &#039;&#039;&#039;Filter Info&#039;&#039;&#039;: the report will contain information about the configured settings and filter information&lt;br /&gt;
* &#039;&#039;&#039;Displayed Duration&#039;&#039;&#039;: &lt;br /&gt;
** Call Duration (Total): the total call duration, e.g. with the duration of a subsequent transfer&lt;br /&gt;
** Call Duration (User): just the time, the user was connected&lt;br /&gt;
** Billing Duration: the duration, a user must be billed for&lt;br /&gt;
** None of these durations contain the alert duration, which is separatly listed&lt;br /&gt;
&lt;br /&gt;
[[Image:reporting_report.png | A normal report. The summary shows incoming / outgoing summaries]]&lt;br /&gt;
&lt;br /&gt;
[[Image:grouped_report.png | A grouped report. Each group has an own summary]]&lt;br /&gt;
&lt;br /&gt;
====Print====&lt;br /&gt;
&lt;br /&gt;
Click the print icon to open a printable version of the report.&lt;br /&gt;
&lt;br /&gt;
====Save====&lt;br /&gt;
You can save the report as &#039;&#039;&#039;pdf&#039;&#039;&#039; or as &#039;&#039;&#039;xml&#039;&#039;&#039; by using the corresponding icon.&amp;lt;br&amp;gt;&lt;br /&gt;
You can also download a report in &#039;&#039;&#039;csv&#039;&#039;&#039; format without call history. The report uses &#039;&#039;&#039;comma&#039;&#039;&#039; as delimeter character, &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; as text qualifier and &#039;&#039;&#039;PBX Object/Remote Party&#039;&#039;&#039; columns should be defined as Text (avoid telephone numbers to be considered as numbers by Excel). &#039;&#039;&#039;UTF-8&#039;&#039;&#039; must be used as character set.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Sorting====&lt;br /&gt;
&lt;br /&gt;
Each sortable column has a clickable column head. This sorting will be also used when opening the printable version or saving the report as PDF.&lt;br /&gt;
&lt;br /&gt;
====Icons====&lt;br /&gt;
The icons are explained in the [[#Call list icons|appendix]].&lt;br /&gt;
&lt;br /&gt;
===Remote Interface===&lt;br /&gt;
&lt;br /&gt;
See [[#Remote_Interface_2|Remote Interface Appendix]]&lt;br /&gt;
&lt;br /&gt;
==Backup and Restore==&lt;br /&gt;
&lt;br /&gt;
You can both manually and automatically backup the database and configuration files for Reporting under [[Reference10:Concept_Linux_Application_Platform#Backup|Administration/Backup]] in the application platform.&lt;br /&gt;
&lt;br /&gt;
Configuration details for the update server can be found [[Reference10:Concept_Linux_Application_Platform#Backup|here]].&lt;br /&gt;
&lt;br /&gt;
===Configuration Files===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;saveinnovaphone-reportingcfgs&#039;&#039;&#039; is the command used to automatically save configuration files with the [[Reference10:Concept_Linux_Application_Platform#Command_File|Command File]].&lt;br /&gt;
&lt;br /&gt;
===Data===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;saveinnovaphone-reportingdb&#039;&#039;&#039; is the command to automatically backup the whole innovaphone Reporting database with the [[Reference10:Concept_Linux_Application_Platform#Command_File|Command File]].&lt;br /&gt;
&lt;br /&gt;
 If you restore the reporting database, you should keep in mind, that this might take several hours for a system&lt;br /&gt;
 on a CF card, depending on the size of the restored database. The backup process itself is quite fast with a few minutes.&lt;br /&gt;
&lt;br /&gt;
===Logs===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;saveinnovaphone-reportinglogs&#039;&#039;&#039; to save log files with the [[Reference10:Concept_Linux_Application_Platform#Command_File|Command File]].&lt;br /&gt;
&lt;br /&gt;
==Appendix==&lt;br /&gt;
===PostgreSQL Patterns===&lt;br /&gt;
For filter conditions or for the pbx object value you can use the following patterns inside a string:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;%&#039;&#039;&#039;: matches any string of zero or more characters&lt;br /&gt;
* &#039;&#039;&#039;_&#039;&#039;&#039;: matches any single character&lt;br /&gt;
&lt;br /&gt;
 Example:&lt;br /&gt;
 &#039;&#039;&#039;Sat%&#039;&#039;&#039; will match all pbx objects, which start with the string &#039;&#039;&#039;Sat&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
 We do always perform case insensitiv searches!&lt;br /&gt;
&lt;br /&gt;
===innovaphone Reporting XML===&lt;br /&gt;
&amp;lt;code type=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
    &amp;lt;application&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;innovaphone Reporting&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;desc&amp;gt;Reporting software&amp;lt;/desc&amp;gt;&lt;br /&gt;
    &amp;lt;directory&amp;gt;innovaphone-reporting&amp;lt;/directory&amp;gt;&lt;br /&gt;
    &amp;lt;href&amp;gt;report.php&amp;lt;/href&amp;gt;&lt;br /&gt;
    &amp;lt;linux-username&amp;gt;innovaphone-reporting&amp;lt;/linux-username&amp;gt;&lt;br /&gt;
    &amp;lt;packages&amp;gt;&lt;br /&gt;
        &amp;lt;package&amp;gt;php5-gd&amp;lt;/package&amp;gt;&lt;br /&gt;
        &amp;lt;package&amp;gt;php5-ldap&amp;lt;/package&amp;gt;&lt;br /&gt;
    &amp;lt;/packages&amp;gt;&lt;br /&gt;
    &amp;lt;database name=&amp;quot;innovaphone-reporting&amp;quot; username=&amp;quot;innovaphone-reporting&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;cronjobs&amp;gt;&lt;br /&gt;
        &amp;lt;cronjob script=&amp;quot;/etc/cron.d/reporting_replication&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;cronjob script=&amp;quot;/etc/cron.d/reporting_cleanup&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;cronjob script=&amp;quot;/etc/cron.d/reporting_mails&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/cronjobs&amp;gt;&lt;br /&gt;
    &amp;lt;log-files&amp;gt;&lt;br /&gt;
        &amp;lt;log title=&amp;quot;Postgresql-8.4&amp;quot; no-clear=&amp;quot;true&amp;quot;&amp;gt;/var/log/postgresql/postgresql-8.4-main.log&amp;lt;/log&amp;gt;&lt;br /&gt;
        &amp;lt;log title=&amp;quot;Reporting cleanup&amp;quot;&amp;gt;/var/www/innovaphone/apps/innovaphone-reporting/log/reporting_cleanup.log&amp;lt;/log&amp;gt;&lt;br /&gt;
        &amp;lt;log title=&amp;quot;innovaphone Reporting&amp;quot;&amp;gt;/var/www/innovaphone/apps/innovaphone-reporting/log/innovaphone-reporting.log&amp;lt;/log&amp;gt;&lt;br /&gt;
        &amp;lt;log title=&amp;quot;innovaphone Reporting Replication&amp;quot;&amp;gt;/var/www/innovaphone/apps/innovaphone-reporting/log/reporting_replication.log&amp;lt;/log&amp;gt;&lt;br /&gt;
    &amp;lt;/log-files&amp;gt;&lt;br /&gt;
    &amp;lt;config-files&amp;gt;&lt;br /&gt;
        &amp;lt;conf&amp;gt;/etc/postgresql/8.4/main/pg_hba.conf&amp;lt;/conf&amp;gt;&lt;br /&gt;
        &amp;lt;conf&amp;gt;/etc/postgresql/8.4/main/postgresql.conf&amp;lt;/conf&amp;gt;&lt;br /&gt;
        &amp;lt;conf&amp;gt;/home/innovaphone-reporting/reporting.conf&amp;lt;/conf&amp;gt;&lt;br /&gt;
        &amp;lt;conf&amp;gt;/home/root/ssl_cert/server.key&amp;lt;/conf&amp;gt;&lt;br /&gt;
        &amp;lt;conf&amp;gt;/home/root/ssl_cert/server.crt&amp;lt;/conf&amp;gt;&lt;br /&gt;
        &amp;lt;conf&amp;gt;/etc/cron.d/reporting_replication&amp;lt;/conf&amp;gt;&lt;br /&gt;
        &amp;lt;conf&amp;gt;/etc/cron.d/reporting_cleanup&amp;lt;/conf&amp;gt;&lt;br /&gt;
        &amp;lt;conf&amp;gt;/etc/cron.d/reporting_mails&amp;lt;/conf&amp;gt;&lt;br /&gt;
	&amp;lt;conf&amp;gt;/var/www/innovaphone/apps/innovaphone-reporting/report_images&amp;lt;/conf&amp;gt;&lt;br /&gt;
    &amp;lt;/config-files&amp;gt;&lt;br /&gt;
    &amp;lt;backup&amp;gt;&lt;br /&gt;
        &amp;lt;command title=&amp;quot;Save innovaphone Reporting configuration files&amp;quot; cmd=&amp;quot;saveinnovaphone-reportingcfgs&amp;quot; script=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;command title=&amp;quot;Save innovaphone Reporting database&amp;quot; cmd=&amp;quot;saveinnovaphone-reportingdb&amp;quot; script=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;command title=&amp;quot;Save innovaphone Reporting log files&amp;quot; cmd=&amp;quot;saveinnovaphone-reportinglogs&amp;quot; script=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/backup&amp;gt;&lt;br /&gt;
    &amp;lt;restore&amp;gt;&lt;br /&gt;
        &amp;lt;command title=&amp;quot;Restore innovaphone Reporting configuration files&amp;quot; cmd=&amp;quot;restoreinnovaphone-reportingcfgs&amp;quot; script=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;action&amp;gt;/etc/init.d/postgresql restart&amp;lt;/action&amp;gt;&lt;br /&gt;
            &amp;lt;action&amp;gt;/etc/init.d/cron restart&amp;lt;/action&amp;gt;&lt;br /&gt;
        &amp;lt;/command&amp;gt; &lt;br /&gt;
        &amp;lt;command title=&amp;quot;Restore innovaphone Reporting database&amp;quot; cmd=&amp;quot;restoreinnovaphone-reportingdb&amp;quot; script=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/restore&amp;gt;&lt;br /&gt;
    &amp;lt;uninstall script=&amp;quot;/usr/bin/sudo /usr/local/bin/uninstall_script.sh -f &#039;innovaphone-reporting.xml&#039; -linux_user yes -linux_group yes -database yes -database_user yes -log_script &#039;/var/www/innovaphone/log/appl_uninstall.log&#039;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;to-delete&amp;gt;&lt;br /&gt;
            &amp;lt;to-del path=&amp;quot;/usr/local/bin/reporting_cleanup.sh&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;to-del path=&amp;quot;/usr/local/bin/reporting_replication.out&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;to-del path=&amp;quot;/usr/local/bin/reporting_replication.sh&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;to-del path=&amp;quot;/home/innovaphone-reporting/tmp&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/to-delete&amp;gt;&lt;br /&gt;
    &amp;lt;/uninstall&amp;gt;&lt;br /&gt;
    &amp;lt;lighttpd-auth&amp;gt;1&amp;lt;/lighttpd-auth&amp;gt;&lt;br /&gt;
    &amp;lt;public-web-paths&amp;gt;&lt;br /&gt;
        &amp;lt;path&amp;gt;mypbx&amp;lt;/path&amp;gt;&lt;br /&gt;
        &amp;lt;path&amp;gt;user&amp;lt;/path&amp;gt;&lt;br /&gt;
    &amp;lt;/public-web-paths&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Installed Debian Packages===&lt;br /&gt;
&lt;br /&gt;
The following packages (and their dependencies) are installed with innovaphone Reporting:&lt;br /&gt;
&lt;br /&gt;
* php5-gd&lt;br /&gt;
* php5-ldap&lt;br /&gt;
&lt;br /&gt;
===Configuration Files===&lt;br /&gt;
&lt;br /&gt;
pg_hba.conf is the client authentication configuration file and controls which hosts are allowed to connect, how clients&lt;br /&gt;
are authenticated, which PostgreSQL user names they can use and which databases they can access.&lt;br /&gt;
&lt;br /&gt;
postgresql.conf is the PostgreSQL configuration file&lt;br /&gt;
&lt;br /&gt;
===Data Files===&lt;br /&gt;
&lt;br /&gt;
If you backup the innovaphone reporting database, you&#039;ll get a gz archiv, which contains the whole innovaphone-reporting database.&lt;br /&gt;
&lt;br /&gt;
===Report XML===&lt;br /&gt;
The node description also applies for the &#039;&#039;&#039;CSV&#039;&#039;&#039; columns! &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code type=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;report&amp;gt;&lt;br /&gt;
    &amp;lt;record&amp;gt;&lt;br /&gt;
      ....&lt;br /&gt;
      &amp;lt;time time=&amp;quot;1301303966&amp;quot; utc=&amp;quot;1301303966&amp;quot;&amp;gt;2011-03-28 11:19:26&amp;lt;/time&amp;gt;&lt;br /&gt;
      &amp;lt;obj&amp;gt;Saturn&amp;lt;/obj&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;870998fee909d311b2ec009033105dc9&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;call&amp;gt;int&amp;lt;/call&amp;gt;&lt;br /&gt;
      &amp;lt;alert-duration seconds=&amp;quot;0&amp;quot;&amp;gt;0:00&amp;lt;/alert-duration&amp;gt;&lt;br /&gt;
      &amp;lt;flow&amp;gt;&lt;br /&gt;
        &amp;lt;ev caller=&amp;quot;ep1&amp;quot; ep1_number=&amp;quot;101&amp;quot; ep1_name=&amp;quot;saturn&amp;quot; ep1_dn=&amp;quot;Saturn&amp;quot; &lt;br /&gt;
                         ep2_number=&amp;quot;102&amp;quot; ep2_name=&amp;quot;uranus&amp;quot; ep2_dn=&amp;quot;Uranus&amp;quot; status=&amp;quot;co&amp;quot; entry=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;/flow&amp;gt;&lt;br /&gt;
      &amp;lt;call-duration seconds=&amp;quot;2&amp;quot;&amp;gt;0:02&amp;lt;/call-duration&amp;gt;&lt;br /&gt;
      &amp;lt;billing-duration seconds=&amp;quot;2&amp;quot;&amp;gt;0:02&amp;lt;/billing-duration&amp;gt;&lt;br /&gt;
      &amp;lt;conn-duration seconds=&amp;quot;2&amp;quot;&amp;gt;0:02&amp;lt;/conn-duration&amp;gt;&lt;br /&gt;
      &amp;lt;groups&amp;gt;&lt;br /&gt;
        &amp;lt;group&amp;gt;test&amp;lt;/group&amp;gt;&lt;br /&gt;
        &amp;lt;group&amp;gt;test2&amp;lt;/group&amp;gt;&lt;br /&gt;
      &amp;lt;/groups&amp;gt;&lt;br /&gt;
      &amp;lt;node&amp;gt;root&amp;lt;/node&amp;gt;&lt;br /&gt;
      &amp;lt;pbx&amp;gt;.&amp;lt;/pbx&amp;gt;&lt;br /&gt;
      &amp;lt;cause&amp;gt;&amp;lt;/cause&amp;gt;&lt;br /&gt;
      &amp;lt;dir&amp;gt;o&amp;lt;/dir&amp;gt;&lt;br /&gt;
      &amp;lt;status&amp;gt;co&amp;lt;/status&amp;gt;&lt;br /&gt;
      &amp;lt;type/&amp;gt;&lt;br /&gt;
      &amp;lt;remote number=&amp;quot;102&amp;quot; name=&amp;quot;uranus&amp;quot; dn=&amp;quot;Uranus&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;callback  number=&amp;quot;456&amp;quot; name=&amp;quot;abc&amp;quot; dn=&amp;quot;123&amp;quot; time=&amp;quot;1301305962&amp;quot;&amp;gt;2011-03-28 11:52:42&amp;lt;/callback&amp;gt;&lt;br /&gt;
    &amp;lt;/record&amp;gt;&lt;br /&gt;
    ....&lt;br /&gt;
  &amp;lt;/report&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* time: the node contains a formatted time string of the local time&lt;br /&gt;
** attribute &#039;&#039;&#039;time&#039;&#039;&#039; is a unix timestamp (referring to the local time stamp of the CDR)&lt;br /&gt;
** attribute &#039;&#039;&#039;utc&#039;&#039;&#039; is a unix timestamp (referring to the utc time stamp of the CDR)&lt;br /&gt;
* obj: the PBX object name (also called cn)&lt;br /&gt;
* id: the conference id of the call&lt;br /&gt;
* call: &#039;&#039;&#039;int&#039;&#039;&#039; (internal) or &#039;&#039;&#039;ext&#039;&#039;&#039; (external) call&lt;br /&gt;
* flow: the call flow&lt;br /&gt;
** ev&lt;br /&gt;
***ep1 (ep1_number, ep1_name, ep1_dn): the left side of the call&lt;br /&gt;
***ep2 (ep2_number, ep2_name, ep2_dn): the right side of the call&lt;br /&gt;
***caller: &#039;&#039;&#039;ep1&#039;&#039;&#039;, &#039;&#039;&#039;ep2&#039;&#039;&#039; or empty, if unknown&lt;br /&gt;
***status: &#039;&#039;&#039;co&#039;&#039;&#039; (connected), &#039;&#039;&#039;al&#039;&#039;&#039; (alert), &#039;&#039;&#039;er&#039;&#039;&#039; (error) or &#039;&#039;&#039;bu&#039;&#039;&#039; (busy) state of the current event&lt;br /&gt;
***entry: &#039;&#039;&#039;true&#039;&#039;&#039; for the entry event of the local object&lt;br /&gt;
***type: &#039;&#039;&#039;cf&#039;&#039;&#039; (call forward), &#039;&#039;&#039;ct&#039;&#039;&#039; (call transfer)&lt;br /&gt;
* groups: the groups of the PBX object&lt;br /&gt;
* node: the node of the PBX object&lt;br /&gt;
* pbx: the pbx of the PBX object&lt;br /&gt;
* cause: the decimal disconnect reason of the call (see [[Reference:ISDN_Cause_Codes]])&lt;br /&gt;
* remote: outgoing calls -&amp;gt; dialed endpoint&lt;br /&gt;
* remote: incoming calls -&amp;gt; first ep2 above entry event or entry event if this is the first one&lt;br /&gt;
* remote: incoming calls with incoming transfer after entry event -&amp;gt; transfer target&lt;br /&gt;
* status: outgoing calls -&amp;gt; best found status in call flow&lt;br /&gt;
* status: incoming calls -&amp;gt; status of entry event&lt;br /&gt;
* type: the type of the entry event or, if not set, the type of the next event, if given&lt;br /&gt;
** empty: direct call&lt;br /&gt;
** &#039;&#039;&#039;ct&#039;&#039;&#039;: call transfer&lt;br /&gt;
** &#039;&#039;&#039;cf&#039;&#039;&#039;: call forward&lt;br /&gt;
** &#039;&#039;&#039;cct&#039;&#039;&#039;: call transfer with consultation&lt;br /&gt;
** &#039;&#039;&#039;pu&#039;&#039;&#039;: call pickup&lt;br /&gt;
* dir: o (outgoing) if the first event is the entry event and the caller is ep1&lt;br /&gt;
* dir: i (incoming) if not o&lt;br /&gt;
* alert-duration: alert time&lt;br /&gt;
* billing-duration: outgoing call -&amp;gt; duration from the first event until the last event in the flow&lt;br /&gt;
* billing-duration: incoming call -&amp;gt; duration from the first transfer/forward event until the last event in the flow&lt;br /&gt;
* call-duration: duration of the whole call&lt;br /&gt;
* conn-duration: duration from the entry event until the event, where the local endpoint isn&#039;t connected any more&lt;br /&gt;
* callback: &#039;&#039;&#039;name&#039;&#039;&#039;, &#039;&#039;&#039;number&#039;&#039;&#039;, &#039;&#039;&#039;dn&#039;&#039;&#039; and &#039;&#039;&#039;time&#039;&#039;&#039; if this call has been callbacked using mypbx (time referrs to the UTC time of the callback)&lt;br /&gt;
&lt;br /&gt;
===Database Structure===&lt;br /&gt;
&lt;br /&gt;
====cdrs====&lt;br /&gt;
Each received cdr-xml is formed by a cdr tag and an undefined number of event and group tags.&lt;br /&gt;
(Refer to: [[Reference10:Concept_Call_Detail_Record_CDR_PBX|CDR]])&lt;br /&gt;
&lt;br /&gt;
This section is composed by four tables: cdrs, events, groups and cdr_properties.&lt;br /&gt;
The first three tables contain the corresponding fields to store the information contained in the cdr, event and group tags.&amp;lt;br&amp;gt;&lt;br /&gt;
Each CDR represents the call in the view of one PBX object. So there might be multiple CDRs for one call if multiple PBX objects are used within the call.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;cdr fields:&#039;&#039;&#039; id, guid, sys, pbx, node, device, cn, e164, h323, dir, utc, local.&lt;br /&gt;
* &#039;&#039;&#039;event fields:&#039;&#039;&#039; id, msg, type, e164, h323, conf, cause, time, cdr_id, order_index.&lt;br /&gt;
* &#039;&#039;&#039;group fields:&#039;&#039;&#039; id, name, active, type, cdr_id.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;id&#039;&#039;&#039; field is assigned by postgresql for each entry and has nothing to do with the information present in the cdr. It is different for each entry inside the table.&lt;br /&gt;
&lt;br /&gt;
The events table has two additional fields, called cdr_id, to associate these events to the corresponding cdr entry and order_index to keep their position inside the cdr.&lt;br /&gt;
Groups table has also the cdr_id field to associate the group entries to the corresponding cdr and events entries.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;cdr_properties&#039;&#039;&#039; table contains relevant information associated with the call such as call_length, alert_length or call_flow. It also presents a cdr_id field.&lt;br /&gt;
&lt;br /&gt;
====filters====&lt;br /&gt;
&lt;br /&gt;
This section is composed by three tables: filter_columns, filter_conditions and filters. &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;filter_columns&#039;&#039;&#039; is not used for the time being. This is supposed to contain the columns the user wants to see in his report, but right now, just default columns (Time/Object/Duration/Left/Direction/State/Right) are shown.&lt;br /&gt;
* &#039;&#039;&#039;filter&#039;&#039;&#039; contains the filter name and description plus two conditions call_state (No Response, Connected, Busy and No Channel) and direction (Incoming, Outgoing, Transfer and Call Forward).&lt;br /&gt;
* &#039;&#039;&#039;filter_conditions&#039;&#039;&#039; contains the defined conditions for a filter&lt;br /&gt;
&lt;br /&gt;
All three tables are related through an id.&lt;br /&gt;
&lt;br /&gt;
====cdr_users====&lt;br /&gt;
&lt;br /&gt;
This table contains a timestamp &#039;&#039;&#039;missed_calls_time&#039;&#039;&#039; for the last report access by a user &#039;&#039;&#039;cn&#039;&#039;&#039; + (&#039;&#039;&#039;pbx&#039;&#039;&#039; OR &#039;&#039;&#039;sys&#039;&#039;&#039;) with mypbx. It is used to retrieve information about missed calls since the last use of mypbx.&amp;lt;br&amp;gt;&lt;br /&gt;
The timestamp &#039;&#039;&#039;clear_report_time&#039;&#039;&#039; indicates the last clearance time.&amp;lt;br&amp;gt;&lt;br /&gt;
email, sys (system name) and pbx (PBX name) are also stored for each user.&lt;br /&gt;
&lt;br /&gt;
====replication====&lt;br /&gt;
&lt;br /&gt;
Contains information of the last replication run, which is used to sync master/standby installations.&lt;br /&gt;
&lt;br /&gt;
===Replication===&lt;br /&gt;
&lt;br /&gt;
The replication between the master and standby servers is divided into two steps:&lt;br /&gt;
&lt;br /&gt;
====CDRs====&lt;br /&gt;
Both master and standby server keep an information about the last replicated CDR. From this CDR on, they retrieve all CDR guids (32 bytes) from all new CDRs from the other server. If a guid already exists in the local database, the CDR is skipped, otherwise it is replicated.&amp;lt;br&amp;gt;&lt;br /&gt;
So there is a minimal data exchange for already existing CDRs and each new CDR is only processed once.&lt;br /&gt;
&lt;br /&gt;
====Filters/LDAP/Report Mails/Users====&lt;br /&gt;
The master server does nothing here, but the &#039;&#039;&#039;standby&#039;&#039;&#039; deletes all filters, LDAP servers, report mails and users and replicates all from the master.&amp;lt;br&amp;gt;&lt;br /&gt;
So these items from the master server can be used, but not changed, on the standby server.&lt;br /&gt;
&lt;br /&gt;
===Remote Interface===&lt;br /&gt;
&lt;br /&gt;
You can retrieve the PDF/XML/CSV report with a remote interface.&amp;lt;br&amp;gt;&lt;br /&gt;
Make a POST or GET HTTP request to &#039;&#039;&#039;http(s)://Linux-IP/apps/innovaphone-reporting/report.php&#039;&#039;&#039; with the following parameters:&lt;br /&gt;
&lt;br /&gt;
* remote: mandatory for a remote request!&lt;br /&gt;
** &#039;&#039;&#039;1&#039;&#039;&#039;&lt;br /&gt;
* from : the from date/time as UNIX timestamp &#039;&#039;&#039;OR&#039;&#039;&#039; date/time string as described [ http://www.php.net/manual/de/datetime.formats.php | here ].&lt;br /&gt;
* to: the to date/time (format see &#039;&#039;&#039;from&#039;&#039;&#039;)&lt;br /&gt;
* [format]: the return format, allowed values:&lt;br /&gt;
** &#039;&#039;&#039;xml&#039;&#039;&#039;: default&lt;br /&gt;
** &#039;&#039;&#039;pdf&#039;&#039;&#039;&lt;br /&gt;
** &#039;&#039;&#039;csv&#039;&#039;&#039;&lt;br /&gt;
* [sortby] : the report sorting, allowed values:&lt;br /&gt;
** &#039;&#039;&#039;time&#039;&#039;&#039;: default&lt;br /&gt;
** &#039;&#039;&#039;obj&#039;&#039;&#039;: sort by pbx object name&lt;br /&gt;
** &#039;&#039;&#039;call-duration&#039;&#039;&#039;&lt;br /&gt;
** &#039;&#039;&#039;alert-duration&#039;&#039;&#039;&lt;br /&gt;
** &#039;&#039;&#039;dir&#039;&#039;&#039;: sort by call direction&lt;br /&gt;
* [sortorder]: the report sort order, allowed values:&lt;br /&gt;
** &#039;&#039;&#039;ascending&#039;&#039;&#039;: default&lt;br /&gt;
** &#039;&#039;&#039;descending&#039;&#039;&#039;&lt;br /&gt;
* [groupby]: report grouping&lt;br /&gt;
** default empty/not set: no grouping&lt;br /&gt;
** &#039;&#039;&#039;local_stamp&#039;&#039;&#039;: group by time&lt;br /&gt;
** &#039;&#039;&#039;cn&#039;&#039;&#039;: group by pbx object name&lt;br /&gt;
* [hidedigits]: hide the last X digits of external numbers&lt;br /&gt;
* pbx: search for this PBX (mandatory!)&lt;br /&gt;
* pbxobject: search for this PBX object (you can leave this, if you use filterX)&lt;br /&gt;
* filterX: use a filter with its name. You can use multiple filters with filter1=test, filter2=test2...&lt;br /&gt;
* [filterinfo]: show the filter information in a created report (&amp;quot;true&amp;quot; or &amp;quot;false&amp;quot;)&lt;br /&gt;
* [lang]: the language, e.g. &amp;quot;en&amp;quot; or &amp;quot;de&amp;quot;&lt;br /&gt;
* [displayedduration]: &lt;br /&gt;
** &#039;&#039;&#039;call_duration&#039;&#039;&#039;: default Call Duration (Total)&lt;br /&gt;
** &#039;&#039;&#039;conn_duration&#039;&#039;&#039;: Call Duration (User)&lt;br /&gt;
** &#039;&#039;&#039;billing_duration&#039;&#039;&#039;: Billing Duration&lt;br /&gt;
* [anonym]: anonymize internal names/numbers (&amp;quot;true&amp;quot; or &amp;quot;false&amp;quot;)&lt;br /&gt;
* [bulk]: creates user reports (see [[ #Report_Mails | Report Mails ]])&lt;br /&gt;
* [sender]: sender email adress of the report&lt;br /&gt;
* [confid]: query calls of a certain conference ID&lt;br /&gt;
** you can omit the following fields, if using confid: &#039;&#039;&#039;from&#039;&#039;&#039;, &#039;&#039;&#039;to&#039;&#039;&#039;, &#039;&#039;&#039;pbx&#039;&#039;&#039;, &#039;&#039;&#039;pbxobject&#039;&#039;&#039;, &#039;&#039;&#039;filterX&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 Parameters in [] are optional.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;pbxobject&#039;&#039;&#039; supports [[ #PostgreSQL_Patterns | PostgreSQL Patterns ]].&lt;br /&gt;
&lt;br /&gt;
 Example:&lt;br /&gt;
 https://172.16.14.123/apps/innovaphone-reporting/report.php?remote=1&amp;amp;from=2011-03-29&amp;amp;to=2011-03-30&amp;amp;format=xml&amp;amp;pbxobject=Saturn&lt;br /&gt;
 Gets all records between 2011-03-29 and 2011-03-30 for the pbx object Saturn.&lt;br /&gt;
&lt;br /&gt;
 Example:&lt;br /&gt;
 https://172.16.14.123/apps/innovaphone-reporting/report.php?remote=1&amp;amp;from=2011-03-29&amp;amp;to=2011-03-30&amp;amp;format=xml&amp;amp;filter1=test&amp;amp;filter2=test2&lt;br /&gt;
 Gets all records between 2011-03-29 and 2011-03-30 for the filters test and test2.&lt;br /&gt;
&lt;br /&gt;
===Tools===&lt;br /&gt;
&lt;br /&gt;
====NetDrive====&lt;br /&gt;
&lt;br /&gt;
[http://www.heise.de/software/download/netdrive/55134 NetDrive] is a usefull webdav client, which can be used to access webdav of the innovaphone application platform.&lt;br /&gt;
&lt;br /&gt;
====PGAdmin====&lt;br /&gt;
&lt;br /&gt;
[http://www.pgadmin.org/ PGAdmin] is an administration tool for PostgreSQL databases.&lt;br /&gt;
&lt;br /&gt;
====Putty====&lt;br /&gt;
&lt;br /&gt;
[http://www.putty.org/ Putty] is SSH client to connect to the linux application platform.&lt;br /&gt;
&lt;br /&gt;
===Call list icons===&lt;br /&gt;
The direction of the icon arrow depends on the call flow.&lt;br /&gt;
&lt;br /&gt;
* [[Image:reporting_conn.jpg]]: a connected call&lt;br /&gt;
* [[Image:reporting_busy.jpg]]: busy destination&lt;br /&gt;
* [[Image:reporting_no_res.jpg]]: no response from destination&lt;br /&gt;
* [[Image:reporting_error.jpg]]: an error occurred, like &amp;quot;no channel available&amp;quot; during the call setup&lt;br /&gt;
* [[Image:reporting_ct.jpg]]: call transfer&lt;br /&gt;
* [[Image:reporting_cct.jpg]]: call transfer with consultation&lt;br /&gt;
* [[Image:reporting_cf.jpg]]: call forward&lt;br /&gt;
* [[Image:Reporting_pickup.jpg]]: call pickup (or SOAP redirect)&lt;br /&gt;
* [[Image:reporting_dir.jpg]]: call direction&lt;br /&gt;
&lt;br /&gt;
A small arrow on a call state icon indicates a callback done with mxPBY, e.g.:&lt;br /&gt;
* [[Image:reporting_busy_callback.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Known Problems==&lt;br /&gt;
===Replication===&lt;br /&gt;
====Callback information====&lt;br /&gt;
The callback information get lost in the following scenario:&lt;br /&gt;
* The callback CDR is already replicated on both master and standby&lt;br /&gt;
* Master or standby is down&lt;br /&gt;
* A user calls back the CDR from point 1&lt;br /&gt;
&lt;br /&gt;
====Missed calls====&lt;br /&gt;
The information for missed calls is not replicated. So the first time, a standby server is used with mypbx, the missed calls information will be wrong. The second time will be correct again.&lt;br /&gt;
&lt;br /&gt;
===CDRs===&lt;br /&gt;
If the innovaphone Reporting is not running, for whatever reaseon, the device, which sends CDRs, currently stores up to 300kB CDRs data. So if one CDR has up to 2kB, 150 CDRs can be stored until the innovaphone Reporting should be up again, to avoid data loss.&lt;br /&gt;
&lt;br /&gt;
===Missing values for PBX drop down box===&lt;br /&gt;
If your database currently contains no CDRs of one of your PBX systems, you won&#039;t be able to select this system as PBX for report creation or report mail configuration!&lt;br /&gt;
&lt;br /&gt;
===Restoring Database with more than 2GB===&lt;br /&gt;
&lt;br /&gt;
When restoring database using the web browser there is a 2GB upload limit, so if our database have a bigger size the upload will fail.&lt;br /&gt;
&lt;br /&gt;
As alternative solution (if there is enough space):&lt;br /&gt;
&lt;br /&gt;
 1. Copy the gz database dump to the webdav folder&lt;br /&gt;
 2. Uncompress this dump: /bin/gzip -cd /var/www/innovaphone/webdav/dump.gz --uncompress &amp;gt; /tmp/db.dump&lt;br /&gt;
 3. Start the restore: /usr/local/bin/config.sh postgres db-restore /tmp/pg_schema.dump /tmp/db.dump innovaphone-reporting&lt;br /&gt;
 4. be patient, this might take a while&lt;br /&gt;
 5. delete /tmp/db.dump, /var/www/innovaphone/webdav/dump.gz and /tmp/pg_schema.dump (automatically created)&lt;br /&gt;
&lt;br /&gt;
===PDF generation for many CDRs may fail===&lt;br /&gt;
You may experience a &#039;&#039;&#039;Server error 500&#039;&#039;&#039; if you generate PDFs with many CDRs. The PDF library which is used to generate the PDFs fails.&lt;br /&gt;
Please generate multiple PDFs with a smaller timespan in such a case.&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
&lt;br /&gt;
[[Howto:Integration_reporting_and_voice_recording]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Concept|Reporting]]&lt;/div&gt;</summary>
		<author><name>Tru</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference10:Concept_Reporting&amp;diff=44491</id>
		<title>Reference10:Concept Reporting</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference10:Concept_Reporting&amp;diff=44491"/>
		<updated>2016-10-17T08:56:55Z</updated>

		<summary type="html">&lt;p&gt;Tru: /* Report Mails */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Requirements==&lt;br /&gt;
&lt;br /&gt;
It is needed to have the [[Reference10:Concept_Linux_Application_Platform|application platform]] installed and running.&lt;br /&gt;
&lt;br /&gt;
===Calculation of required disk space===&lt;br /&gt;
&lt;br /&gt;
An average CDR requires 2080 bytes of disk space inside the database.&amp;lt;br&amp;gt;&lt;br /&gt;
So &#039;&#039;&#039;one GB&#039;&#039;&#039; disk space is needed for ~&#039;&#039;&#039;516222 CDRs&#039;&#039;&#039;. &amp;lt;br&amp;gt;&lt;br /&gt;
One call may have one or multiple CDRs depending on the call flow, the used PBX objects and their configuration.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;&lt;br /&gt;
It is strongly recommended that you try to precalculate your required disk space and configure a suiting value under [[#Configure_scheduled_CDR_cleanup]].&amp;lt;br&amp;gt;&lt;br /&gt;
Don&#039;t forget to configure the alarm server under [[Reference10:Concept_Linux_Application_Platform#Alarm_Server]] to receive an alarm if the disk is nearly full (10% disk space remaining).&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
&lt;br /&gt;
Download the latest version of innovaphone reporting.&lt;br /&gt;
&lt;br /&gt;
Log into the application platform, go to the Applications tag, click on [[ Reference10:Concept_Linux_Application_Platform#Upload.2FUpdate|Upload/Update]] and upload the downloaded file. &lt;br /&gt;
The installation will start automatically and the page will refresh every two seconds showing the installation process. &lt;br /&gt;
If there is no error during the installation you will see at the end &amp;quot;Installation was succesfull&amp;quot;. Otherwise,&lt;br /&gt;
you will get &amp;quot;installation failed&amp;quot; and the reason why it went wrong.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Hotfix===&lt;br /&gt;
If you have already installed the latest version of Reporting, simply download the Reporting...HotfixIncremental for your platform (VM or IPxx10) or if you have missed some hotfixes, download the Reporting...HotfixCumulative archive, which contains all hotfixes since hotfix1.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Upload this hotfix archive [[Reference10:Concept_Linux_Application_Platform#Upload.2FUpdate|here]].&lt;br /&gt;
&lt;br /&gt;
==Configuration==&lt;br /&gt;
===Device===&lt;br /&gt;
&lt;br /&gt;
====License====&lt;br /&gt;
It is required to have a Reporting license installed on your device. Check under [[ Reference10:General/License ]] if you already have one.&lt;br /&gt;
&lt;br /&gt;
 Set the Reporting flag for each PBX object, which should be reported on the objects properties page.&lt;br /&gt;
&lt;br /&gt;
====CDR Gateway====&lt;br /&gt;
Any innovaphone device which sends [[Reference10:Concept_Call_Detail_Record_CDR_PBX|CDRs]] to the reporting application must have at least one CDR interface configured under [[ Reference10:Gateway/CDR ]]:&lt;br /&gt;
&lt;br /&gt;
* Type: LOCAL-AP or REMOTE-AP/REMOTE-AP-S&lt;br /&gt;
&lt;br /&gt;
If HTTP/HTTPS is selected then some other parameters must be set:&lt;br /&gt;
&lt;br /&gt;
* Address: ip address of the application platform&lt;br /&gt;
* Port: 80 for REMOTE-AP&lt;br /&gt;
* Port: 443 for REMOTE-AP-S&lt;br /&gt;
* Method: POST/GET&lt;br /&gt;
* Path: ap/cdr.fcgi&lt;br /&gt;
&lt;br /&gt;
The application platform is by default password protected, so you&#039;ll have to perform one of these steps: &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* configure an authenticated URL for &#039;&#039;&#039;ap/cdr.fcgi&#039;&#039;&#039; under [[ Reference10:Services/HTTP/Client ]] (recommended)&lt;br /&gt;
** If you configure an authenticated URL (with the linux webserver credentials), don&#039;t forget to configure port 80 or port 443 for secure transport (Remote-AP-S) like https://111.111.111.111:443/ap or http://111.111.111.111:80/ap&lt;br /&gt;
* configure &#039;&#039;&#039;ap/cdr.fcgi&#039;&#039;&#039; as public web path on the innovaphone application platform [[ Reference10:Concept_Linux_Application_Platform#Change_web_server_properties_and_public_access_to_the_web.2Fwebdav|Public Web Paths ]]&lt;br /&gt;
&lt;br /&gt;
 Configure a second CDR interface, if you use [[#Replication|Replication]].&lt;br /&gt;
&lt;br /&gt;
====Enable PBX CDRs====&lt;br /&gt;
Enable the &amp;quot;Generate CDRs&amp;quot; flag under [[ Reference10:PBX/Config/General ]].&lt;br /&gt;
&lt;br /&gt;
===innovaphone Application Platform===&lt;br /&gt;
&lt;br /&gt;
If the reporting URL/user/password is not configured in your device as authenticated URL, configure &#039;&#039;&#039;ap/cdr.fcgi&#039;&#039;&#039; as public web path on the innovaphone application platform [[ Reference10:Concept_Linux_Application_Platform#Change_web_server_properties_and_public_access_to_the_web.2Fwebdav|Public Web Paths ]].&lt;br /&gt;
&lt;br /&gt;
===Database===&lt;br /&gt;
&lt;br /&gt;
Reporting creates the innovaphone-reporting database to store CDRs sent from any innovaphone devices (appendix 7.6 explains the database structure). &lt;br /&gt;
PostgreSQL is also available for other applications and any of them could create its own database. &lt;br /&gt;
&lt;br /&gt;
====Password====&lt;br /&gt;
&lt;br /&gt;
Reporting creates the database user &#039;&#039;&#039;innovaphone-reporting&#039;&#039;&#039; with default password &#039;&#039;&#039;reporting&#039;&#039;&#039;. &lt;br /&gt;
This password may be changed at the innovaphone Reporting page under Config/Database.&lt;br /&gt;
&lt;br /&gt;
====Remote Access====&lt;br /&gt;
&lt;br /&gt;
There are tools (PgAdmin III) that allow to connect to application databases remotely. &lt;br /&gt;
It is first needed to configure the IP you are connecting from under Config/Database at the innovaphone reporting page.&lt;br /&gt;
&lt;br /&gt;
For the PgAdmin III it is imporant to use innovaphone-reporting as Service-DB (Wartungs-DB). Default login credentials - User: innovaphone-reporting - Password: reporting&lt;br /&gt;
&lt;br /&gt;
====Delete CDRs====&lt;br /&gt;
&lt;br /&gt;
You can delete CDRs for certain/all users in a certain timespan. If you enter &#039;&#039;&#039;%&#039;&#039;&#039; as object, all users are selected.&lt;br /&gt;
&lt;br /&gt;
 Note that PostgreSQL doesn&#039;t free the space on the disk! If you need free disk space, issue this command on the shell:&lt;br /&gt;
 &#039;&#039;sudo -u postgres vacuumdb -f innovaphone-reporting&#039;&#039;&lt;br /&gt;
 This may take some time and CDRs won&#039;t be received during this time.&lt;br /&gt;
&lt;br /&gt;
====Configure scheduled CDR cleanup====&lt;br /&gt;
&lt;br /&gt;
If you activate scheduled cleanup, CDRs older than the configured amount of months will be automatically deleted.&amp;lt;br&amp;gt;&lt;br /&gt;
The scheduled task is started once a day at 2 AM.&lt;br /&gt;
&lt;br /&gt;
===PBX===&lt;br /&gt;
&lt;br /&gt;
If you use multiple PBX devices which are not Master/Slave, you have to select, which identifier is unique for a user under Config/PBX:&lt;br /&gt;
* System Name (default)&lt;br /&gt;
* PBX Name&lt;br /&gt;
&lt;br /&gt;
The selected value determines, which values are shown in the PBX dropdown box for report creation or report mail configuration.&lt;br /&gt;
&lt;br /&gt;
===Replication===&lt;br /&gt;
&lt;br /&gt;
You can configure a second innovaphone application platform with an installed innovaphone Reporting for replication purposes.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Mode:&lt;br /&gt;
** &#039;&#039;&#039;Off&#039;&#039;&#039;: no replication&lt;br /&gt;
** &#039;&#039;&#039;Master&#039;&#039;&#039;: the local server is the master server&lt;br /&gt;
** &#039;&#039;&#039;Standby&#039;&#039;&#039;: the local server is the standby server, filters will be replicated from the master and can&#039;t be changed here&lt;br /&gt;
* Master/Standby Server: the IP address of the master or standby server&lt;br /&gt;
* Database password: the PostgreSQL database password of the other server (default is &#039;&#039;&#039;reporting&#039;&#039;&#039;).&lt;br /&gt;
* Synchronisation interval: the interval in minutes (range 1-60) in which a sync is done&lt;br /&gt;
&lt;br /&gt;
Now configure a second [[#CDR_Gateway|CDR Gateway]] for the standby server.&lt;br /&gt;
&lt;br /&gt;
The current status can be seen here too. If the status is &#039;&#039;&#039;Failed&#039;&#039;&#039; take a look at the log file &#039;&#039;&#039;innovaphone Reporting Replication&#039;&#039;&#039; under [[ Reference10:Concept_Linux_Application_Platform#Logs|Diagnostics/Logs]] or look at the last trace output at the bottom of the page.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
How replication works is described [[#Replication_2|here]].&lt;br /&gt;
&lt;br /&gt;
===LDAP===&lt;br /&gt;
&lt;br /&gt;
Several LDAP servers and dialing locations can be configured here.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
PBX field must correspond to a name of a PBX since PBX&#039;s names are available in CDRs. The received CDR is parsed to get the PBX name and this name will be used to find the corresponding LDAP server and dialing location needed to resolve names.&lt;br /&gt;
&lt;br /&gt;
Each configured LDAP server and dialing location can be activated/deactivated with the &#039;&#039;&#039;active&#039;&#039;&#039; flag.&lt;br /&gt;
&lt;br /&gt;
[[Image:ldap_update.png]]&lt;br /&gt;
&lt;br /&gt;
If the country where you configure LDAP does not have Trunk/National prefix you should leave &amp;quot;National Prefix&amp;quot; and &amp;quot;Area Code&amp;quot; empty.&lt;br /&gt;
&lt;br /&gt;
In the number Attributes field please do &#039;&#039;&#039;not&#039;&#039;&#039; add any additional characters to the attributes like &amp;quot;:P&amp;quot;, &amp;quot;:D&amp;quot; or &amp;quot;@&amp;quot;, for instance &amp;quot;homePhone:P, mobile:M, telephoneNumber:D&amp;quot;. This does not work. That would be correct: &amp;quot;homePhone, mobile, telephoneNumber&amp;quot;&lt;br /&gt;
&lt;br /&gt;
LDAP Internal Search flag allows reporting to perform name resolution also for internal numbers.&lt;br /&gt;
&lt;br /&gt;
===Report Mails===&lt;br /&gt;
&lt;br /&gt;
Automatic report generation can be configured here:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;time&#039;&#039;&#039;: daytime at which the report is sent&lt;br /&gt;
* &#039;&#039;&#039;user reports&#039;&#039;&#039;: &lt;br /&gt;
** Creates for each matching user a separate report&lt;br /&gt;
** Users are matched by &#039;&#039;&#039;Object (Long Name)&#039;&#039;&#039;&lt;br /&gt;
** A user report only contains calls for this user&lt;br /&gt;
** The email address of the user is built by its &#039;&#039;&#039;H323 name&#039;&#039;&#039; and the &#039;&#039;&#039;System Name&#039;&#039;&#039; of its PBX (h323@systemname) or determined by the E-Mail field of the user&lt;br /&gt;
* &#039;&#039;&#039;interval&#039;&#039;&#039;: &lt;br /&gt;
** daily: Mail will be send daily with the automatic period &amp;quot;last day&amp;quot;&lt;br /&gt;
** weekly: Mail will be send weekly with the automatic period &amp;quot;last week&amp;quot;&lt;br /&gt;
** monthly: Mail will be send daily with the automatic period &amp;quot;last month&amp;quot;&lt;br /&gt;
* &#039;&#039;&#039;day&#039;&#039;&#039;: the day, at which the report is sent&lt;br /&gt;
* &#039;&#039;&#039;mail adresses&#039;&#039;&#039;: recipients of the report (comma separated)&lt;br /&gt;
* &#039;&#039;&#039;Sender E-Mail address&#039;&#039;&#039;: sender email address, which may be present as [[ Reference10:Concept_Linux_Application_Platform#Relay_Hosts | relay host ]]&lt;br /&gt;
* &#039;&#039;&#039;compress&#039;&#039;&#039;: compress the attachment or not&lt;br /&gt;
* &#039;&#039;&#039;sort by&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;sort order&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;language&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;send time&#039;&#039;&#039;: the time of a day, when the report is sent&lt;br /&gt;
&lt;br /&gt;
The explanation for the other settings can be found [[ #Report_Creation | here. ]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:mails.png]]&lt;br /&gt;
&lt;br /&gt;
===Users===&lt;br /&gt;
&lt;br /&gt;
You can configure multiple users, who shall have access to reports without having access to the whole reporting configuration.&amp;lt;br&amp;gt;&lt;br /&gt;
The user can login with his user name and password on: &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
http(s)://Linux-IP/apps/innovaphone-reporting/user/login.php&lt;br /&gt;
&lt;br /&gt;
The admin can assign one or more base filters to the user. A base filter is explained [[ #Base_filter | here]].&amp;lt;br&amp;gt;&lt;br /&gt;
If the user creates new reports, new own filters or report mails, he &#039;&#039;&#039;has&#039;&#039;&#039; to use one of his assigned base filters.&lt;br /&gt;
&lt;br /&gt;
 If you are using multiple PBX systems, the user has only access to these systems, which are configured in the base filters of the user.&lt;br /&gt;
 If the user has no base filter with a limitation to a certain &amp;quot;System Name&amp;quot;/&amp;quot;PBX Name&amp;quot; (depends on your [[ #PBX | PBX configuration ]]),&lt;br /&gt;
 he will have access to all systems!&lt;br /&gt;
&lt;br /&gt;
[[Image:users.jpg]]&lt;br /&gt;
&lt;br /&gt;
====User Login====&lt;br /&gt;
&lt;br /&gt;
A logged in user can create reports, own filters and report mails based on his assigned base filters.&lt;br /&gt;
&lt;br /&gt;
[[Image:Userlogin.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Images===&lt;br /&gt;
&lt;br /&gt;
You may upload images to be used as logo or footer in pdf reports.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Logos must be 32x32 and footer can have a maximum width of 450 pixels and a maximum height of 50 pixels.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These images can have jpeg or png format.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Relay CDRs===&lt;br /&gt;
&lt;br /&gt;
Relay CDRs can be stored in log files by the Reporting application. Configure a CDR gateway as already described and relay CDRs will be written to the webdav file &#039;&#039;&#039;/cdr/cdr.txt&#039;&#039;&#039;.&lt;br /&gt;
The file is rotated on 1 MB size. The first rotated file is uncompressed, further files will be gz compressed. Max ten files are kept. Older files will be deleted:&amp;lt;br&amp;gt;&lt;br /&gt;
* cdr.txt&lt;br /&gt;
* cdr.txt.1&lt;br /&gt;
* cdr.txt.2.gz&lt;br /&gt;
* cdr.txt.3.gz&lt;br /&gt;
* cdr.txt.4.gz&lt;br /&gt;
* cdr.txt.5.gz&lt;br /&gt;
* cdr.txt.6.gz&lt;br /&gt;
* cdr.txt.7.gz&lt;br /&gt;
* cdr.txt.8.gz&lt;br /&gt;
* cdr.txt.9.gz&lt;br /&gt;
&lt;br /&gt;
===innovaphone-reporting web access===&lt;br /&gt;
&lt;br /&gt;
You can configure a separate authentication for the innovaphone-reporting web site [[Reference10:Concept_Linux_Application_Platform#Change_application_access_credentials|here]].&amp;lt;br&amp;gt;&lt;br /&gt;
One can just login on the reporting site with this access.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Integration Voice recorder===&lt;br /&gt;
&lt;br /&gt;
The innovaphone voice recording can be integrated and a remote control of the player is possible, see relative article. &lt;br /&gt;
&lt;br /&gt;
==Filters==&lt;br /&gt;
===General===&lt;br /&gt;
&lt;br /&gt;
Filters are set up to create reports based on certain conditions. A filter can have multiple conditions and multiple filters can be combined on report creation (combine is performed with an &#039;&#039;&#039;OR&#039;&#039;&#039;).&amp;lt;br&amp;gt;&lt;br /&gt;
A filter has a unique &#039;&#039;&#039;name&#039;&#039;&#039; with an optional &#039;&#039;&#039;description&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===Conditions===&lt;br /&gt;
&lt;br /&gt;
[[Image:filter.png]]&lt;br /&gt;
&lt;br /&gt;
There are five or seven condition sections depending on what is selected under &#039;&#039;&#039;States&#039;&#039;&#039;. Conditions inside same section are &#039;&#039;&#039;OR&#039;&#039;&#039; associated while different sections are &#039;&#039;&#039;AND&#039;&#039;&#039; associated.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(Object == Terra &#039;&#039;&#039;OR&#039;&#039;&#039; Object == Uranus) &#039;&#039;&#039;AND&#039;&#039;&#039; (PBX == sifi) &#039;&#039;&#039;AND&#039;&#039;&#039; (Number == 0049%)&lt;br /&gt;
&lt;br /&gt;
====Base filter====&lt;br /&gt;
&lt;br /&gt;
If you select another filter as base filter, the conditions of the base filter are implicitly &#039;&#039;&#039;AND&#039;&#039;&#039; conjuncted, when the current filter is used.&amp;lt;br&amp;gt;&lt;br /&gt;
So if the base filter defines two PBX values, e.g. &amp;quot;Berlin&amp;quot; and &amp;quot;Hamburg&amp;quot; and the current filter defines one PBX value, e.g. &amp;quot;Berlin&amp;quot;, only objects of the PBX &amp;quot;Berlin&amp;quot; will be filtered:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 (pbx=&amp;quot;Berlin&amp;quot;) AND (pbx=&amp;quot;Berlin&amp;quot; OR pbx=&amp;quot;Hamburg&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
If a user defines an own filter for his reports, he has to use a base filter, which he is allowed to use. So each filter, which he uses, will have at least one base filter condition, which the admin has defined.&lt;br /&gt;
&lt;br /&gt;
 You have to take care with the conditions of the current filter and the base filter, &lt;br /&gt;
 as it is now easy to create a filter with mutually exclusive conditions, e.g. if &lt;br /&gt;
 the filter has pbx=&amp;quot;Berlin&amp;quot; and the base filter pbx=&amp;quot;Hamburg&amp;quot; =&amp;gt; no matching records.&lt;br /&gt;
&lt;br /&gt;
====Anonym====&lt;br /&gt;
&lt;br /&gt;
If you check this flag, a report created with this filter or with a filter, where this filter is a basefilter, will by anonymized.&lt;br /&gt;
&lt;br /&gt;
====Local====&lt;br /&gt;
&lt;br /&gt;
Define one ore more conditions for the local party, defined by:&lt;br /&gt;
&lt;br /&gt;
* Object: the cn/PBX object name&lt;br /&gt;
* Number: the number&lt;br /&gt;
* Groups: a group of the PBX object&lt;br /&gt;
&lt;br /&gt;
====Remote====&lt;br /&gt;
&lt;br /&gt;
Define one or more conditions for the remote party, defined by:&lt;br /&gt;
&lt;br /&gt;
* Number: the number&lt;br /&gt;
* Remote display name: the display name&lt;br /&gt;
&lt;br /&gt;
====PBX====&lt;br /&gt;
&lt;br /&gt;
Define one ore more conditions for the PBX, defined by:&lt;br /&gt;
&lt;br /&gt;
* PBX: the PBX name&lt;br /&gt;
* Node: the node name&lt;br /&gt;
&lt;br /&gt;
====States====&lt;br /&gt;
&lt;br /&gt;
* No Response&lt;br /&gt;
* Connected&lt;br /&gt;
* Busy&lt;br /&gt;
* No Channel&lt;br /&gt;
&lt;br /&gt;
====Directions====&lt;br /&gt;
&lt;br /&gt;
* Incoming&lt;br /&gt;
* Outgoing&lt;br /&gt;
* Transfer: calls, which have been transferred to the current local party&lt;br /&gt;
* Call Forward: calls, which have been forwarded to the current local party&lt;br /&gt;
&lt;br /&gt;
====Call Duration====&lt;br /&gt;
&lt;br /&gt;
Time the call was connected.&lt;br /&gt;
&lt;br /&gt;
This condition will be &#039;&#039;&#039;AND&#039;&#039;&#039; with the others if all &#039;&#039;&#039;States&#039;&#039;&#039; are selected.&amp;lt;br&amp;gt;&lt;br /&gt;
If Busy, No Channel or No Response is unselected, then the filter will search for Connected calls with connected time greater or smaller than &#039;&#039;&#039;Call Duration&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
====Alert Duration====&lt;br /&gt;
&lt;br /&gt;
Time the call was ringing independent of the status of the call afterwards.&lt;br /&gt;
&lt;br /&gt;
This condition will be &#039;&#039;&#039;AND&#039;&#039;&#039; with the others if all &#039;&#039;&#039;States&#039;&#039;&#039; are selected.&amp;lt;br&amp;gt;&lt;br /&gt;
If Busy, No Channel or Connected is unselected, then the filter will search only for Not Connected Calls that were ringing more or less time than &#039;&#039;&#039;Alert Duration&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
====Report times====&lt;br /&gt;
&lt;br /&gt;
Define the time where calls should be counted.&amp;lt;br&amp;gt;&lt;br /&gt;
You can optionally define the weekday(s) of calls.&lt;br /&gt;
&lt;br /&gt;
====Images====&lt;br /&gt;
&lt;br /&gt;
* Logo: This must be 32x32 pixel image in jpeg or png format.&amp;lt;br&amp;gt;&lt;br /&gt;
* Footer: Maximum width of 450 pels and maximum height of 50 pels. Also jpeg or png format.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Using Patterns====&lt;br /&gt;
&lt;br /&gt;
You can use these [[ #PostgreSQL_Patterns | PostgreSQL Patterns ]] for every condition.&lt;br /&gt;
&lt;br /&gt;
==Report Creation==&lt;br /&gt;
===General===&lt;br /&gt;
&lt;br /&gt;
It is possible to generate call lists for single users or more complex reports by means of filters.&lt;br /&gt;
&lt;br /&gt;
===Web Interface===&lt;br /&gt;
&lt;br /&gt;
Reporting application provides a web interface to generate reports.&lt;br /&gt;
&lt;br /&gt;
[[Image:Report_hide.png]]&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;PBX&#039;&#039;&#039;: select the PBX for the report. The values of the drop down box depend on your [[#PBX | PBX configuration]]&lt;br /&gt;
* &#039;&#039;&#039;Object (Long Name)&#039;&#039;&#039;: corresponds to the PBX Long Name assigned to a specific user (% is a special postgresql character, which matches any string)&lt;br /&gt;
* &#039;&#039;&#039;Filter&#039;&#039;&#039;: one or multiple filters can be defined (&#039;&#039;&#039;OR&#039;&#039;&#039; joined)&lt;br /&gt;
* &#039;&#039;&#039;Group by&#039;&#039;&#039;: the result can be grouped by Date or Object&lt;br /&gt;
* &#039;&#039;&#039;Hide last X digits&#039;&#039;&#039;: you may replace the last digits of an external number with a &#039;*&#039;. &lt;br /&gt;
** LDAP must be configured in order to use this capability but if you want no LDAP funtionality, just unset the Active Box in LDAP.&lt;br /&gt;
** Actually, the pbx/phys value of a call is matched against the LDAP pbx value and if the number starts with the external line prefix.&lt;br /&gt;
* &#039;&#039;&#039;Anonym&#039;&#039;&#039;: do not show internal names/numbers&lt;br /&gt;
** If anonym is set, hide last digits is set to 3, if not set&lt;br /&gt;
* &#039;&#039;&#039;Filter Info&#039;&#039;&#039;: the report will contain information about the configured settings and filter information&lt;br /&gt;
* &#039;&#039;&#039;Displayed Duration&#039;&#039;&#039;: &lt;br /&gt;
** Call Duration (Total): the total call duration, e.g. with the duration of a subsequent transfer&lt;br /&gt;
** Call Duration (User): just the time, the user was connected&lt;br /&gt;
** Billing Duration: the duration, a user must be billed for&lt;br /&gt;
** None of these durations contain the alert duration, which is separatly listed&lt;br /&gt;
&lt;br /&gt;
[[Image:reporting_report.png | A normal report. The summary shows incoming / outgoing summaries]]&lt;br /&gt;
&lt;br /&gt;
[[Image:grouped_report.png | A grouped report. Each group has an own summary]]&lt;br /&gt;
&lt;br /&gt;
====Print====&lt;br /&gt;
&lt;br /&gt;
Click the print icon to open a printable version of the report.&lt;br /&gt;
&lt;br /&gt;
====Save====&lt;br /&gt;
You can save the report as &#039;&#039;&#039;pdf&#039;&#039;&#039; or as &#039;&#039;&#039;xml&#039;&#039;&#039; by using the corresponding icon.&amp;lt;br&amp;gt;&lt;br /&gt;
You can also download a report in &#039;&#039;&#039;csv&#039;&#039;&#039; format without call history. The report uses &#039;&#039;&#039;comma&#039;&#039;&#039; as delimeter character, &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; as text qualifier and &#039;&#039;&#039;PBX Object/Remote Party&#039;&#039;&#039; columns should be defined as Text (avoid telephone numbers to be considered as numbers by Excel). &#039;&#039;&#039;UTF-8&#039;&#039;&#039; must be used as character set.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Sorting====&lt;br /&gt;
&lt;br /&gt;
Each sortable column has a clickable column head. This sorting will be also used when opening the printable version or saving the report as PDF.&lt;br /&gt;
&lt;br /&gt;
====Icons====&lt;br /&gt;
The icons are explained in the [[#Call list icons|appendix]].&lt;br /&gt;
&lt;br /&gt;
===Remote Interface===&lt;br /&gt;
&lt;br /&gt;
See [[#Remote_Interface_2|Remote Interface Appendix]]&lt;br /&gt;
&lt;br /&gt;
==Backup and Restore==&lt;br /&gt;
&lt;br /&gt;
You can both manually and automatically backup the database and configuration files for Reporting under [[Reference10:Concept_Linux_Application_Platform#Backup|Administration/Backup]] in the application platform.&lt;br /&gt;
&lt;br /&gt;
Configuration details for the update server can be found [[Reference10:Concept_Linux_Application_Platform#Backup|here]].&lt;br /&gt;
&lt;br /&gt;
===Configuration Files===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;saveinnovaphone-reportingcfgs&#039;&#039;&#039; is the command used to automatically save configuration files with the [[Reference10:Concept_Linux_Application_Platform#Command_File|Command File]].&lt;br /&gt;
&lt;br /&gt;
===Data===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;saveinnovaphone-reportingdb&#039;&#039;&#039; is the command to automatically backup the whole innovaphone Reporting database with the [[Reference10:Concept_Linux_Application_Platform#Command_File|Command File]].&lt;br /&gt;
&lt;br /&gt;
 If you restore the reporting database, you should keep in mind, that this might take several hours for a system&lt;br /&gt;
 on a CF card, depending on the size of the restored database. The backup process itself is quite fast with a few minutes.&lt;br /&gt;
&lt;br /&gt;
===Logs===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;saveinnovaphone-reportinglogs&#039;&#039;&#039; to save log files with the [[Reference10:Concept_Linux_Application_Platform#Command_File|Command File]].&lt;br /&gt;
&lt;br /&gt;
==Appendix==&lt;br /&gt;
===PostgreSQL Patterns===&lt;br /&gt;
For filter conditions or for the pbx object value you can use the following patterns inside a string:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;%&#039;&#039;&#039;: matches any string of zero or more characters&lt;br /&gt;
* &#039;&#039;&#039;_&#039;&#039;&#039;: matches any single character&lt;br /&gt;
&lt;br /&gt;
 Example:&lt;br /&gt;
 &#039;&#039;&#039;Sat%&#039;&#039;&#039; will match all pbx objects, which start with the string &#039;&#039;&#039;Sat&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
 We do always perform case insensitiv searches!&lt;br /&gt;
&lt;br /&gt;
===innovaphone Reporting XML===&lt;br /&gt;
&amp;lt;code type=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
    &amp;lt;application&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;innovaphone Reporting&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;desc&amp;gt;Reporting software&amp;lt;/desc&amp;gt;&lt;br /&gt;
    &amp;lt;directory&amp;gt;innovaphone-reporting&amp;lt;/directory&amp;gt;&lt;br /&gt;
    &amp;lt;href&amp;gt;report.php&amp;lt;/href&amp;gt;&lt;br /&gt;
    &amp;lt;linux-username&amp;gt;innovaphone-reporting&amp;lt;/linux-username&amp;gt;&lt;br /&gt;
    &amp;lt;packages&amp;gt;&lt;br /&gt;
        &amp;lt;package&amp;gt;php5-gd&amp;lt;/package&amp;gt;&lt;br /&gt;
        &amp;lt;package&amp;gt;php5-ldap&amp;lt;/package&amp;gt;&lt;br /&gt;
    &amp;lt;/packages&amp;gt;&lt;br /&gt;
    &amp;lt;database name=&amp;quot;innovaphone-reporting&amp;quot; username=&amp;quot;innovaphone-reporting&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;cronjobs&amp;gt;&lt;br /&gt;
        &amp;lt;cronjob script=&amp;quot;/etc/cron.d/reporting_replication&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;cronjob script=&amp;quot;/etc/cron.d/reporting_cleanup&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;cronjob script=&amp;quot;/etc/cron.d/reporting_mails&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/cronjobs&amp;gt;&lt;br /&gt;
    &amp;lt;log-files&amp;gt;&lt;br /&gt;
        &amp;lt;log title=&amp;quot;Postgresql-8.4&amp;quot; no-clear=&amp;quot;true&amp;quot;&amp;gt;/var/log/postgresql/postgresql-8.4-main.log&amp;lt;/log&amp;gt;&lt;br /&gt;
        &amp;lt;log title=&amp;quot;Reporting cleanup&amp;quot;&amp;gt;/var/www/innovaphone/apps/innovaphone-reporting/log/reporting_cleanup.log&amp;lt;/log&amp;gt;&lt;br /&gt;
        &amp;lt;log title=&amp;quot;innovaphone Reporting&amp;quot;&amp;gt;/var/www/innovaphone/apps/innovaphone-reporting/log/innovaphone-reporting.log&amp;lt;/log&amp;gt;&lt;br /&gt;
        &amp;lt;log title=&amp;quot;innovaphone Reporting Replication&amp;quot;&amp;gt;/var/www/innovaphone/apps/innovaphone-reporting/log/reporting_replication.log&amp;lt;/log&amp;gt;&lt;br /&gt;
    &amp;lt;/log-files&amp;gt;&lt;br /&gt;
    &amp;lt;config-files&amp;gt;&lt;br /&gt;
        &amp;lt;conf&amp;gt;/etc/postgresql/8.4/main/pg_hba.conf&amp;lt;/conf&amp;gt;&lt;br /&gt;
        &amp;lt;conf&amp;gt;/etc/postgresql/8.4/main/postgresql.conf&amp;lt;/conf&amp;gt;&lt;br /&gt;
        &amp;lt;conf&amp;gt;/home/innovaphone-reporting/reporting.conf&amp;lt;/conf&amp;gt;&lt;br /&gt;
        &amp;lt;conf&amp;gt;/home/root/ssl_cert/server.key&amp;lt;/conf&amp;gt;&lt;br /&gt;
        &amp;lt;conf&amp;gt;/home/root/ssl_cert/server.crt&amp;lt;/conf&amp;gt;&lt;br /&gt;
        &amp;lt;conf&amp;gt;/etc/cron.d/reporting_replication&amp;lt;/conf&amp;gt;&lt;br /&gt;
        &amp;lt;conf&amp;gt;/etc/cron.d/reporting_cleanup&amp;lt;/conf&amp;gt;&lt;br /&gt;
        &amp;lt;conf&amp;gt;/etc/cron.d/reporting_mails&amp;lt;/conf&amp;gt;&lt;br /&gt;
	&amp;lt;conf&amp;gt;/var/www/innovaphone/apps/innovaphone-reporting/report_images&amp;lt;/conf&amp;gt;&lt;br /&gt;
    &amp;lt;/config-files&amp;gt;&lt;br /&gt;
    &amp;lt;backup&amp;gt;&lt;br /&gt;
        &amp;lt;command title=&amp;quot;Save innovaphone Reporting configuration files&amp;quot; cmd=&amp;quot;saveinnovaphone-reportingcfgs&amp;quot; script=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;command title=&amp;quot;Save innovaphone Reporting database&amp;quot; cmd=&amp;quot;saveinnovaphone-reportingdb&amp;quot; script=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;command title=&amp;quot;Save innovaphone Reporting log files&amp;quot; cmd=&amp;quot;saveinnovaphone-reportinglogs&amp;quot; script=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/backup&amp;gt;&lt;br /&gt;
    &amp;lt;restore&amp;gt;&lt;br /&gt;
        &amp;lt;command title=&amp;quot;Restore innovaphone Reporting configuration files&amp;quot; cmd=&amp;quot;restoreinnovaphone-reportingcfgs&amp;quot; script=&amp;quot;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;action&amp;gt;/etc/init.d/postgresql restart&amp;lt;/action&amp;gt;&lt;br /&gt;
            &amp;lt;action&amp;gt;/etc/init.d/cron restart&amp;lt;/action&amp;gt;&lt;br /&gt;
        &amp;lt;/command&amp;gt; &lt;br /&gt;
        &amp;lt;command title=&amp;quot;Restore innovaphone Reporting database&amp;quot; cmd=&amp;quot;restoreinnovaphone-reportingdb&amp;quot; script=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/restore&amp;gt;&lt;br /&gt;
    &amp;lt;uninstall script=&amp;quot;/usr/bin/sudo /usr/local/bin/uninstall_script.sh -f &#039;innovaphone-reporting.xml&#039; -linux_user yes -linux_group yes -database yes -database_user yes -log_script &#039;/var/www/innovaphone/log/appl_uninstall.log&#039;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;to-delete&amp;gt;&lt;br /&gt;
            &amp;lt;to-del path=&amp;quot;/usr/local/bin/reporting_cleanup.sh&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;to-del path=&amp;quot;/usr/local/bin/reporting_replication.out&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;to-del path=&amp;quot;/usr/local/bin/reporting_replication.sh&amp;quot;/&amp;gt;&lt;br /&gt;
            &amp;lt;to-del path=&amp;quot;/home/innovaphone-reporting/tmp&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;/to-delete&amp;gt;&lt;br /&gt;
    &amp;lt;/uninstall&amp;gt;&lt;br /&gt;
    &amp;lt;lighttpd-auth&amp;gt;1&amp;lt;/lighttpd-auth&amp;gt;&lt;br /&gt;
    &amp;lt;public-web-paths&amp;gt;&lt;br /&gt;
        &amp;lt;path&amp;gt;mypbx&amp;lt;/path&amp;gt;&lt;br /&gt;
        &amp;lt;path&amp;gt;user&amp;lt;/path&amp;gt;&lt;br /&gt;
    &amp;lt;/public-web-paths&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Installed Debian Packages===&lt;br /&gt;
&lt;br /&gt;
The following packages (and their dependencies) are installed with innovaphone Reporting:&lt;br /&gt;
&lt;br /&gt;
* php5-gd&lt;br /&gt;
* php5-ldap&lt;br /&gt;
&lt;br /&gt;
===Configuration Files===&lt;br /&gt;
&lt;br /&gt;
pg_hba.conf is the client authentication configuration file and controls which hosts are allowed to connect, how clients&lt;br /&gt;
are authenticated, which PostgreSQL user names they can use and which databases they can access.&lt;br /&gt;
&lt;br /&gt;
postgresql.conf is the PostgreSQL configuration file&lt;br /&gt;
&lt;br /&gt;
===Data Files===&lt;br /&gt;
&lt;br /&gt;
If you backup the innovaphone reporting database, you&#039;ll get a gz archiv, which contains the whole innovaphone-reporting database.&lt;br /&gt;
&lt;br /&gt;
===Report XML===&lt;br /&gt;
The node description also applies for the &#039;&#039;&#039;CSV&#039;&#039;&#039; columns! &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code type=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;report&amp;gt;&lt;br /&gt;
    &amp;lt;record&amp;gt;&lt;br /&gt;
      ....&lt;br /&gt;
      &amp;lt;time time=&amp;quot;1301303966&amp;quot; utc=&amp;quot;1301303966&amp;quot;&amp;gt;2011-03-28 11:19:26&amp;lt;/time&amp;gt;&lt;br /&gt;
      &amp;lt;obj&amp;gt;Saturn&amp;lt;/obj&amp;gt;&lt;br /&gt;
      &amp;lt;id&amp;gt;870998fee909d311b2ec009033105dc9&amp;lt;/id&amp;gt;&lt;br /&gt;
      &amp;lt;call&amp;gt;int&amp;lt;/call&amp;gt;&lt;br /&gt;
      &amp;lt;alert-duration seconds=&amp;quot;0&amp;quot;&amp;gt;0:00&amp;lt;/alert-duration&amp;gt;&lt;br /&gt;
      &amp;lt;flow&amp;gt;&lt;br /&gt;
        &amp;lt;ev caller=&amp;quot;ep1&amp;quot; ep1_number=&amp;quot;101&amp;quot; ep1_name=&amp;quot;saturn&amp;quot; ep1_dn=&amp;quot;Saturn&amp;quot; &lt;br /&gt;
                         ep2_number=&amp;quot;102&amp;quot; ep2_name=&amp;quot;uranus&amp;quot; ep2_dn=&amp;quot;Uranus&amp;quot; status=&amp;quot;co&amp;quot; entry=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;/flow&amp;gt;&lt;br /&gt;
      &amp;lt;call-duration seconds=&amp;quot;2&amp;quot;&amp;gt;0:02&amp;lt;/call-duration&amp;gt;&lt;br /&gt;
      &amp;lt;billing-duration seconds=&amp;quot;2&amp;quot;&amp;gt;0:02&amp;lt;/billing-duration&amp;gt;&lt;br /&gt;
      &amp;lt;conn-duration seconds=&amp;quot;2&amp;quot;&amp;gt;0:02&amp;lt;/conn-duration&amp;gt;&lt;br /&gt;
      &amp;lt;groups&amp;gt;&lt;br /&gt;
        &amp;lt;group&amp;gt;test&amp;lt;/group&amp;gt;&lt;br /&gt;
        &amp;lt;group&amp;gt;test2&amp;lt;/group&amp;gt;&lt;br /&gt;
      &amp;lt;/groups&amp;gt;&lt;br /&gt;
      &amp;lt;node&amp;gt;root&amp;lt;/node&amp;gt;&lt;br /&gt;
      &amp;lt;pbx&amp;gt;.&amp;lt;/pbx&amp;gt;&lt;br /&gt;
      &amp;lt;cause&amp;gt;&amp;lt;/cause&amp;gt;&lt;br /&gt;
      &amp;lt;dir&amp;gt;o&amp;lt;/dir&amp;gt;&lt;br /&gt;
      &amp;lt;status&amp;gt;co&amp;lt;/status&amp;gt;&lt;br /&gt;
      &amp;lt;type/&amp;gt;&lt;br /&gt;
      &amp;lt;remote number=&amp;quot;102&amp;quot; name=&amp;quot;uranus&amp;quot; dn=&amp;quot;Uranus&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;callback  number=&amp;quot;456&amp;quot; name=&amp;quot;abc&amp;quot; dn=&amp;quot;123&amp;quot; time=&amp;quot;1301305962&amp;quot;&amp;gt;2011-03-28 11:52:42&amp;lt;/callback&amp;gt;&lt;br /&gt;
    &amp;lt;/record&amp;gt;&lt;br /&gt;
    ....&lt;br /&gt;
  &amp;lt;/report&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* time: the node contains a formatted time string of the local time&lt;br /&gt;
** attribute &#039;&#039;&#039;time&#039;&#039;&#039; is a unix timestamp (referring to the local time stamp of the CDR)&lt;br /&gt;
** attribute &#039;&#039;&#039;utc&#039;&#039;&#039; is a unix timestamp (referring to the utc time stamp of the CDR)&lt;br /&gt;
* obj: the PBX object name (also called cn)&lt;br /&gt;
* id: the conference id of the call&lt;br /&gt;
* call: &#039;&#039;&#039;int&#039;&#039;&#039; (internal) or &#039;&#039;&#039;ext&#039;&#039;&#039; (external) call&lt;br /&gt;
* flow: the call flow&lt;br /&gt;
** ev&lt;br /&gt;
***ep1 (ep1_number, ep1_name, ep1_dn): the left side of the call&lt;br /&gt;
***ep2 (ep2_number, ep2_name, ep2_dn): the right side of the call&lt;br /&gt;
***caller: &#039;&#039;&#039;ep1&#039;&#039;&#039;, &#039;&#039;&#039;ep2&#039;&#039;&#039; or empty, if unknown&lt;br /&gt;
***status: &#039;&#039;&#039;co&#039;&#039;&#039; (connected), &#039;&#039;&#039;al&#039;&#039;&#039; (alert), &#039;&#039;&#039;er&#039;&#039;&#039; (error) or &#039;&#039;&#039;bu&#039;&#039;&#039; (busy) state of the current event&lt;br /&gt;
***entry: &#039;&#039;&#039;true&#039;&#039;&#039; for the entry event of the local object&lt;br /&gt;
***type: &#039;&#039;&#039;cf&#039;&#039;&#039; (call forward), &#039;&#039;&#039;ct&#039;&#039;&#039; (call transfer)&lt;br /&gt;
* groups: the groups of the PBX object&lt;br /&gt;
* node: the node of the PBX object&lt;br /&gt;
* pbx: the pbx of the PBX object&lt;br /&gt;
* cause: the decimal disconnect reason of the call (see [[Reference:ISDN_Cause_Codes]])&lt;br /&gt;
* remote: outgoing calls -&amp;gt; dialed endpoint&lt;br /&gt;
* remote: incoming calls -&amp;gt; first ep2 above entry event or entry event if this is the first one&lt;br /&gt;
* remote: incoming calls with incoming transfer after entry event -&amp;gt; transfer target&lt;br /&gt;
* status: outgoing calls -&amp;gt; best found status in call flow&lt;br /&gt;
* status: incoming calls -&amp;gt; status of entry event&lt;br /&gt;
* type: the type of the entry event or, if not set, the type of the next event, if given&lt;br /&gt;
** empty: direct call&lt;br /&gt;
** &#039;&#039;&#039;ct&#039;&#039;&#039;: call transfer&lt;br /&gt;
** &#039;&#039;&#039;cf&#039;&#039;&#039;: call forward&lt;br /&gt;
** &#039;&#039;&#039;cct&#039;&#039;&#039;: call transfer with consultation&lt;br /&gt;
** &#039;&#039;&#039;pu&#039;&#039;&#039;: call pickup&lt;br /&gt;
* dir: o (outgoing) if the first event is the entry event and the caller is ep1&lt;br /&gt;
* dir: i (incoming) if not o&lt;br /&gt;
* alert-duration: alert time&lt;br /&gt;
* billing-duration: outgoing call -&amp;gt; duration from the first event until the last event in the flow&lt;br /&gt;
* billing-duration: incoming call -&amp;gt; duration from the first transfer/forward event until the last event in the flow&lt;br /&gt;
* call-duration: duration of the whole call&lt;br /&gt;
* conn-duration: duration from the entry event until the event, where the local endpoint isn&#039;t connected any more&lt;br /&gt;
* callback: &#039;&#039;&#039;name&#039;&#039;&#039;, &#039;&#039;&#039;number&#039;&#039;&#039;, &#039;&#039;&#039;dn&#039;&#039;&#039; and &#039;&#039;&#039;time&#039;&#039;&#039; if this call has been callbacked using mypbx (time referrs to the UTC time of the callback)&lt;br /&gt;
&lt;br /&gt;
===Database Structure===&lt;br /&gt;
&lt;br /&gt;
====cdrs====&lt;br /&gt;
Each received cdr-xml is formed by a cdr tag and an undefined number of event and group tags.&lt;br /&gt;
(Refer to: [[Reference10:Concept_Call_Detail_Record_CDR_PBX|CDR]])&lt;br /&gt;
&lt;br /&gt;
This section is composed by four tables: cdrs, events, groups and cdr_properties.&lt;br /&gt;
The first three tables contain the corresponding fields to store the information contained in the cdr, event and group tags.&amp;lt;br&amp;gt;&lt;br /&gt;
Each CDR represents the call in the view of one PBX object. So there might be multiple CDRs for one call if multiple PBX objects are used within the call.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;cdr fields:&#039;&#039;&#039; id, guid, sys, pbx, node, device, cn, e164, h323, dir, utc, local.&lt;br /&gt;
* &#039;&#039;&#039;event fields:&#039;&#039;&#039; id, msg, type, e164, h323, conf, cause, time, cdr_id, order_index.&lt;br /&gt;
* &#039;&#039;&#039;group fields:&#039;&#039;&#039; id, name, active, type, cdr_id.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;id&#039;&#039;&#039; field is assigned by postgresql for each entry and has nothing to do with the information present in the cdr. It is different for each entry inside the table.&lt;br /&gt;
&lt;br /&gt;
The events table has two additional fields, called cdr_id, to associate these events to the corresponding cdr entry and order_index to keep their position inside the cdr.&lt;br /&gt;
Groups table has also the cdr_id field to associate the group entries to the corresponding cdr and events entries.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;cdr_properties&#039;&#039;&#039; table contains relevant information associated with the call such as call_length, alert_length or call_flow. It also presents a cdr_id field.&lt;br /&gt;
&lt;br /&gt;
====filters====&lt;br /&gt;
&lt;br /&gt;
This section is composed by three tables: filter_columns, filter_conditions and filters. &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;filter_columns&#039;&#039;&#039; is not used for the time being. This is supposed to contain the columns the user wants to see in his report, but right now, just default columns (Time/Object/Duration/Left/Direction/State/Right) are shown.&lt;br /&gt;
* &#039;&#039;&#039;filter&#039;&#039;&#039; contains the filter name and description plus two conditions call_state (No Response, Connected, Busy and No Channel) and direction (Incoming, Outgoing, Transfer and Call Forward).&lt;br /&gt;
* &#039;&#039;&#039;filter_conditions&#039;&#039;&#039; contains the defined conditions for a filter&lt;br /&gt;
&lt;br /&gt;
All three tables are related through an id.&lt;br /&gt;
&lt;br /&gt;
====cdr_users====&lt;br /&gt;
&lt;br /&gt;
This table contains a timestamp &#039;&#039;&#039;missed_calls_time&#039;&#039;&#039; for the last report access by a user &#039;&#039;&#039;cn&#039;&#039;&#039; + (&#039;&#039;&#039;pbx&#039;&#039;&#039; OR &#039;&#039;&#039;sys&#039;&#039;&#039;) with mypbx. It is used to retrieve information about missed calls since the last use of mypbx.&amp;lt;br&amp;gt;&lt;br /&gt;
The timestamp &#039;&#039;&#039;clear_report_time&#039;&#039;&#039; indicates the last clearance time.&amp;lt;br&amp;gt;&lt;br /&gt;
email, sys (system name) and pbx (PBX name) are also stored for each user.&lt;br /&gt;
&lt;br /&gt;
====replication====&lt;br /&gt;
&lt;br /&gt;
Contains information of the last replication run, which is used to sync master/standby installations.&lt;br /&gt;
&lt;br /&gt;
===Replication===&lt;br /&gt;
&lt;br /&gt;
The replication between the master and standby servers is divided into two steps:&lt;br /&gt;
&lt;br /&gt;
====CDRs====&lt;br /&gt;
Both master and standby server keep an information about the last replicated CDR. From this CDR on, they retrieve all CDR guids (32 bytes) from all new CDRs from the other server. If a guid already exists in the local database, the CDR is skipped, otherwise it is replicated.&amp;lt;br&amp;gt;&lt;br /&gt;
So there is a minimal data exchange for already existing CDRs and each new CDR is only processed once.&lt;br /&gt;
&lt;br /&gt;
====Filters/LDAP/Report Mails/Users====&lt;br /&gt;
The master server does nothing here, but the &#039;&#039;&#039;standby&#039;&#039;&#039; deletes all filters, LDAP servers, report mails and users and replicates all from the master.&amp;lt;br&amp;gt;&lt;br /&gt;
So these items from the master server can be used, but not changed, on the standby server.&lt;br /&gt;
&lt;br /&gt;
===Remote Interface===&lt;br /&gt;
&lt;br /&gt;
You can retrieve the report xml/pdf with a remote interface.&amp;lt;br&amp;gt;&lt;br /&gt;
Make a POST or GET HTTP request to &#039;&#039;&#039;http(s)://Linux-IP/apps/innovaphone-reporting/report.php&#039;&#039;&#039; with the following parameters:&lt;br /&gt;
&lt;br /&gt;
* remote: mandatory for a remote request!&lt;br /&gt;
** &#039;&#039;&#039;1&#039;&#039;&#039;&lt;br /&gt;
* from : the from date/time as UNIX timestamp &#039;&#039;&#039;OR&#039;&#039;&#039; date/time string as described [ http://www.php.net/manual/de/datetime.formats.php | here ].&lt;br /&gt;
* to: the to date/time (format see &#039;&#039;&#039;from&#039;&#039;&#039;)&lt;br /&gt;
* [format]: the return format, allowed values:&lt;br /&gt;
** &#039;&#039;&#039;xml&#039;&#039;&#039;: default&lt;br /&gt;
** &#039;&#039;&#039;pdf&#039;&#039;&#039;&lt;br /&gt;
** &#039;&#039;&#039;csv&#039;&#039;&#039;&lt;br /&gt;
* [sortby] : the report sorting, allowed values:&lt;br /&gt;
** &#039;&#039;&#039;time&#039;&#039;&#039;: default&lt;br /&gt;
** &#039;&#039;&#039;obj&#039;&#039;&#039;: sort by pbx object name&lt;br /&gt;
** &#039;&#039;&#039;call-duration&#039;&#039;&#039;&lt;br /&gt;
** &#039;&#039;&#039;alert-duration&#039;&#039;&#039;&lt;br /&gt;
** &#039;&#039;&#039;dir&#039;&#039;&#039;: sort by call direction&lt;br /&gt;
* [sortorder]: the report sort order, allowed values:&lt;br /&gt;
** &#039;&#039;&#039;ascending&#039;&#039;&#039;: default&lt;br /&gt;
** &#039;&#039;&#039;descending&#039;&#039;&#039;&lt;br /&gt;
* [groupby]: report grouping&lt;br /&gt;
** default empty/not set: no grouping&lt;br /&gt;
** &#039;&#039;&#039;local_stamp&#039;&#039;&#039;: group by time&lt;br /&gt;
** &#039;&#039;&#039;cn&#039;&#039;&#039;: group by pbx object name&lt;br /&gt;
* [hidedigits]: hide the last X digits of external numbers&lt;br /&gt;
* pbx: search for this PBX (mandatory!)&lt;br /&gt;
* pbxobject: search for this PBX object (you can leave this, if you use filterX)&lt;br /&gt;
* filterX: use a filter with its name. You can use multiple filters with filter1=test, filter2=test2...&lt;br /&gt;
* [filterinfo]: show the filter information in a created report (&amp;quot;true&amp;quot; or &amp;quot;false&amp;quot;)&lt;br /&gt;
* [lang]: the language, e.g. &amp;quot;en&amp;quot; or &amp;quot;de&amp;quot;&lt;br /&gt;
* [displayedduration]: &lt;br /&gt;
** &#039;&#039;&#039;call_duration&#039;&#039;&#039;: default Call Duration (Total)&lt;br /&gt;
** &#039;&#039;&#039;conn_duration&#039;&#039;&#039;: Call Duration (User)&lt;br /&gt;
** &#039;&#039;&#039;billing_duration&#039;&#039;&#039;: Billing Duration&lt;br /&gt;
* [anonym]: anonymize internal names/numbers (&amp;quot;true&amp;quot; or &amp;quot;false&amp;quot;)&lt;br /&gt;
* [bulk]: creates user reports (see [[ #Report_Mails | Report Mails ]])&lt;br /&gt;
* [sender]: sender email adress of the report&lt;br /&gt;
* [confid]: query calls of a certain conference ID&lt;br /&gt;
** you can omit the following fields, if using confid: &#039;&#039;&#039;from&#039;&#039;&#039;, &#039;&#039;&#039;to&#039;&#039;&#039;, &#039;&#039;&#039;pbx&#039;&#039;&#039;, &#039;&#039;&#039;pbxobject&#039;&#039;&#039;, &#039;&#039;&#039;filterX&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 Parameters in [] are optional.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;pbxobject&#039;&#039;&#039; supports [[ #PostgreSQL_Patterns | PostgreSQL Patterns ]].&lt;br /&gt;
&lt;br /&gt;
 Example:&lt;br /&gt;
 https://172.16.14.123/apps/innovaphone-reporting/report.php?remote=1&amp;amp;from=2011-03-29&amp;amp;to=2011-03-30&amp;amp;format=xml&amp;amp;pbxobject=Saturn&lt;br /&gt;
 Gets all records between 2011-03-29 and 2011-03-30 for the pbx object Saturn.&lt;br /&gt;
&lt;br /&gt;
 Example:&lt;br /&gt;
 https://172.16.14.123/apps/innovaphone-reporting/report.php?remote=1&amp;amp;from=2011-03-29&amp;amp;to=2011-03-30&amp;amp;format=xml&amp;amp;filter1=test&amp;amp;filter2=test2&lt;br /&gt;
 Gets all records between 2011-03-29 and 2011-03-30 for the filters test and test2.&lt;br /&gt;
&lt;br /&gt;
===Tools===&lt;br /&gt;
&lt;br /&gt;
====NetDrive====&lt;br /&gt;
&lt;br /&gt;
[http://www.heise.de/software/download/netdrive/55134 NetDrive] is a usefull webdav client, which can be used to access webdav of the innovaphone application platform.&lt;br /&gt;
&lt;br /&gt;
====PGAdmin====&lt;br /&gt;
&lt;br /&gt;
[http://www.pgadmin.org/ PGAdmin] is an administration tool for PostgreSQL databases.&lt;br /&gt;
&lt;br /&gt;
====Putty====&lt;br /&gt;
&lt;br /&gt;
[http://www.putty.org/ Putty] is SSH client to connect to the linux application platform.&lt;br /&gt;
&lt;br /&gt;
===Call list icons===&lt;br /&gt;
The direction of the icon arrow depends on the call flow.&lt;br /&gt;
&lt;br /&gt;
* [[Image:reporting_conn.jpg]]: a connected call&lt;br /&gt;
* [[Image:reporting_busy.jpg]]: busy destination&lt;br /&gt;
* [[Image:reporting_no_res.jpg]]: no response from destination&lt;br /&gt;
* [[Image:reporting_error.jpg]]: an error occurred, like &amp;quot;no channel available&amp;quot; during the call setup&lt;br /&gt;
* [[Image:reporting_ct.jpg]]: call transfer&lt;br /&gt;
* [[Image:reporting_cct.jpg]]: call transfer with consultation&lt;br /&gt;
* [[Image:reporting_cf.jpg]]: call forward&lt;br /&gt;
* [[Image:Reporting_pickup.jpg]]: call pickup (or SOAP redirect)&lt;br /&gt;
* [[Image:reporting_dir.jpg]]: call direction&lt;br /&gt;
&lt;br /&gt;
A small arrow on a call state icon indicates a callback done with mxPBY, e.g.:&lt;br /&gt;
* [[Image:reporting_busy_callback.jpg]]&lt;br /&gt;
&lt;br /&gt;
==Known Problems==&lt;br /&gt;
===Replication===&lt;br /&gt;
====Callback information====&lt;br /&gt;
The callback information get lost in the following scenario:&lt;br /&gt;
* The callback CDR is already replicated on both master and standby&lt;br /&gt;
* Master or standby is down&lt;br /&gt;
* A user calls back the CDR from point 1&lt;br /&gt;
&lt;br /&gt;
====Missed calls====&lt;br /&gt;
The information for missed calls is not replicated. So the first time, a standby server is used with mypbx, the missed calls information will be wrong. The second time will be correct again.&lt;br /&gt;
&lt;br /&gt;
===CDRs===&lt;br /&gt;
If the innovaphone Reporting is not running, for whatever reaseon, the device, which sends CDRs, currently stores up to 300kB CDRs data. So if one CDR has up to 2kB, 150 CDRs can be stored until the innovaphone Reporting should be up again, to avoid data loss.&lt;br /&gt;
&lt;br /&gt;
===Missing values for PBX drop down box===&lt;br /&gt;
If your database currently contains no CDRs of one of your PBX systems, you won&#039;t be able to select this system as PBX for report creation or report mail configuration!&lt;br /&gt;
&lt;br /&gt;
===Restoring Database with more than 2GB===&lt;br /&gt;
&lt;br /&gt;
When restoring database using the web browser there is a 2GB upload limit, so if our database have a bigger size the upload will fail.&lt;br /&gt;
&lt;br /&gt;
As alternative solution (if there is enough space):&lt;br /&gt;
&lt;br /&gt;
 1. Copy the gz database dump to the webdav folder&lt;br /&gt;
 2. Uncompress this dump: /bin/gzip -cd /var/www/innovaphone/webdav/dump.gz --uncompress &amp;gt; /tmp/db.dump&lt;br /&gt;
 3. Start the restore: /usr/local/bin/config.sh postgres db-restore /tmp/pg_schema.dump /tmp/db.dump innovaphone-reporting&lt;br /&gt;
 4. be patient, this might take a while&lt;br /&gt;
 5. delete /tmp/db.dump, /var/www/innovaphone/webdav/dump.gz and /tmp/pg_schema.dump (automatically created)&lt;br /&gt;
&lt;br /&gt;
===PDF generation for many CDRs may fail===&lt;br /&gt;
You may experience a &#039;&#039;&#039;Server error 500&#039;&#039;&#039; if you generate PDFs with many CDRs. The PDF library which is used to generate the PDFs fails.&lt;br /&gt;
Please generate multiple PDFs with a smaller timespan in such a case.&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
&lt;br /&gt;
[[Howto:Integration_reporting_and_voice_recording]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Concept|Reporting]]&lt;/div&gt;</summary>
		<author><name>Tru</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:Softwarephone_recommended_settings&amp;diff=44189</id>
		<title>Howto:Softwarephone recommended settings</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:Softwarephone_recommended_settings&amp;diff=44189"/>
		<updated>2016-09-15T16:29:28Z</updated>

		<summary type="html">&lt;p&gt;Tru: /* Problem Details */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Applies To==&lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
* innovaphone Softwarephone&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Keywords: softphone, softwarephone, settings, protocol, tcp, h.323, qos, quality --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Registration Settings==&lt;br /&gt;
&lt;br /&gt;
===Problem Details===&lt;br /&gt;
The Softwarephone needs to setup a signaling connection to the PBX. With H323 (UDP), the signaling needs several ports and they are opened on demand for each action. Sometimes it can happen that the port opening takes too long on some Windows machines and the Softwarephone doesn&#039;t respond to any requests. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Conclusion ===&lt;br /&gt;
From v11, please use H323/TCP or H323/TLS for signaling protocol. With TCP, there is one permanent session open and this prevents any Windows Session timeouts&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==QoS Settings==&lt;br /&gt;
&lt;br /&gt;
===Problem Details===&lt;br /&gt;
Because the Softwarephone is a Realtime Communication Client, the Softwarephones network traffic must have a higher network priority than other Applications (Like all VoIP Traffic). If it is not prioritized, you can have Problems with bad Audio Quality.&lt;br /&gt;
&lt;br /&gt;
=== Conclusion ===&lt;br /&gt;
Policy-based QoS must be configured on Windows Machines where the Softwarephone is running.&lt;br /&gt;
&lt;br /&gt;
[[Image:Policy-basedQoS.jpg]]&lt;/div&gt;</summary>
		<author><name>Tru</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=File:Policy-basedQoS.jpg&amp;diff=44188</id>
		<title>File:Policy-basedQoS.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=File:Policy-basedQoS.jpg&amp;diff=44188"/>
		<updated>2016-09-15T16:28:47Z</updated>

		<summary type="html">&lt;p&gt;Tru: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tru</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:Softwarephone_recommended_settings&amp;diff=44187</id>
		<title>Howto:Softwarephone recommended settings</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:Softwarephone_recommended_settings&amp;diff=44187"/>
		<updated>2016-09-15T16:28:12Z</updated>

		<summary type="html">&lt;p&gt;Tru: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Applies To==&lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
* innovaphone Softwarephone&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Keywords: softphone, softwarephone, settings, protocol, tcp, h.323, qos, quality --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Registration Settings==&lt;br /&gt;
&lt;br /&gt;
===Problem Details===&lt;br /&gt;
The Softwarephone needs to setup a signaling connection to the PBX. With H323 (UDP), the signaling needs several ports and they are opened on demand for each action. Sometimes it can happen that the port opening takes too long on some Windows machines and the Softwarephone doesn&#039;t respond to any requests. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Conclusion ===&lt;br /&gt;
From v11, please use H323/TCP or H323/TLS for signaling protocol. With TCP, there is one permanent session open and this prevents any Windows Session timeouts&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==QoS Settings==&lt;br /&gt;
&lt;br /&gt;
===Problem Details===&lt;br /&gt;
Because the Softwarephone is a Realtime Communication Client, the Softwarephones network traffic must have a higher network priority than other Applications (Like all VoIP Traffic). If it is not prioritized, you can have Problem with bad Audio Quality.&lt;br /&gt;
&lt;br /&gt;
=== Conclusion ===&lt;br /&gt;
Policy-based QoS must be configured on Windows Machines where the Softwarephone is running.&lt;br /&gt;
&lt;br /&gt;
[[Image:Policy-basedQoS.jpg]]&lt;/div&gt;</summary>
		<author><name>Tru</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:SBC_scaling_for_large_number_of_channels&amp;diff=44006</id>
		<title>Howto:SBC scaling for large number of channels</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:SBC_scaling_for_large_number_of_channels&amp;diff=44006"/>
		<updated>2016-09-05T14:56:56Z</updated>

		<summary type="html">&lt;p&gt;Tru: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Applies To==&lt;br /&gt;
This information applies to:&lt;br /&gt;
&lt;br /&gt;
* SBC functionality on Gateways or IPVA with v12r1 or later&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Keywords: SBC,  Session Border Controller, SIP, scale, scaling, large, number, channels --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==More Information==&lt;br /&gt;
&lt;br /&gt;
===Preamble===&lt;br /&gt;
With the innovaphone SBC, we provide approximately 100 - 200 concurrent Channels per Gateway or IPVA. In bigger Scenarios where a few hundred (or more) Channels are required, several Gateways can be joined to a &amp;quot;Load Balancing Scenario&amp;quot; to provide a large number of Channels.&lt;br /&gt;
&lt;br /&gt;
Because a lot of SIP Provider does not support multiple registrations from many different Gateways and cannot guarantee an evenly Call distribution (Load Balancing), a dedicated SBC as SIP-Gateway for registrations is needed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Please ask your SIP Provider if he provides Multiple Registrations and Load Balancing before you start with the planning of the scenario.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This document describes the principles how to configure a &amp;quot;Load Balancing Scenario&amp;quot; with the reference to an example. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Be aware that this is just an example to explain how it works; maybe it’s a little bit different in your scenario - depending on the SIP Provider! &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Function Principle===&lt;br /&gt;
&lt;br /&gt;
The Limitation of the concurrent Channels per Gateway is based on the Media Relay Feature. If this Feature is enabled (and it’s mandatory for the SBC), the Channels are limited.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To bypass this limit, the idea is:&lt;br /&gt;
* to have a dedicated Gateway without Media-Relay. This acts only as Registration Gateway to the SIP Provider. Without Media Relay this Gateway can handle a very large number of calls. We call it &#039;&#039;&#039;&amp;quot;Register-GW&amp;quot;&#039;&#039;&#039; in this document.&lt;br /&gt;
* to use as many Gateways as needed for Media Relay. All calls should be evenly distributed on this Gateway to have a &amp;quot;Load Balance Scenario&amp;quot;. We call them &#039;&#039;&#039;&amp;quot;Relay-GWs&amp;quot;&#039;&#039;&#039; in this document.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Register-GW&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* On the &amp;quot;Register-GW&amp;quot; we need a PBX because only with the PBX we have an evenly distribution to several Gateways. Therefore the PBX must be enabled (Master) on this Gateway, but we need only two Gateway Objects in it. The first is for the registration from the Provider- SIP-Interface (on the same GW) and the second is for all registrations from the &amp;quot;Relay-GWs&amp;quot;.  No other object is needed.&lt;br /&gt;
* The SIP-Interface to the Provider is similar to the SBC of the &amp;quot;Common Scenario&amp;quot;. It has two registrations, one to the SIP Provider and another to the internal PBX. Only Media relay is disabled.&lt;br /&gt;
* The default Routes between SIP Provider and PBX must be adapted.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Relay-GWs&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Relay-GWs&amp;quot; are serving the Media Relay Part in this scenario. On each &amp;quot;Relay-GW&amp;quot; there are two registrations and simple routes between it.&lt;br /&gt;
* One registration to the &amp;quot;Register-GW&amp;quot;- PBX with Media Relay and the same Media Properties like the SIP Interface to the Provider at the &amp;quot;Register-GW&amp;quot;.&lt;br /&gt;
* One registration to the real PBX w/o Media Relay with default settings.&lt;br /&gt;
&lt;br /&gt;
[[Image:SBC_scenarios.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Configuration Example==&lt;br /&gt;
&#039;&#039;&#039;The following example shows how a configuration can be done, maybe it’s a little bit different in your scenario. Depending on the SIP Provider and the needed Number Mappings or Routes, there can be a lot of alternative Configurations&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Overview===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; &lt;br /&gt;
|----&lt;br /&gt;
|&#039;&#039;&#039;1)&#039;&#039;&#039; On the &amp;quot;Register-GW &amp;quot; the PBX must be enabled and&lt;br /&gt;
&lt;br /&gt;
two Gateway Objects with a Number must be created. In&lt;br /&gt;
&lt;br /&gt;
this example we have chosen the &#039;&#039;&#039;Prefix &amp;quot;1&amp;quot; for calls to&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;the SIP Provider&#039;&#039;&#039; and the &#039;&#039;&#039;Prefix &amp;quot;2&amp;quot; for calls to the&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;internal PBX&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2)&#039;&#039;&#039; The SIP Interface must be configured without Media&lt;br /&gt;
&lt;br /&gt;
Relay. The SIP Registration goes to the Provider; the&lt;br /&gt;
&lt;br /&gt;
internal Registration goes to the local PBX.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3)&#039;&#039;&#039; In the Routes &#039;&#039;&#039;TO the &amp;quot;PBX of the Register-GW&amp;quot;&#039;&#039;&#039;, a&lt;br /&gt;
&lt;br /&gt;
leading &#039;&#039;&#039;&amp;quot;2&amp;quot; must be added&#039;&#039;&#039; to reach the opposite&lt;br /&gt;
&lt;br /&gt;
GW-Object in the &amp;quot;PBX of the Register-GW&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
In the Routes &#039;&#039;&#039;FROM the &amp;quot;PBX of the Register-GW&amp;quot;&#039;&#039;&#039;, the &lt;br /&gt;
&lt;br /&gt;
leading &#039;&#039;&#039;&amp;quot;1&amp;quot; must be cut&#039;&#039;&#039; because it&#039;s not needed anymore.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4a)&#039;&#039;&#039; On the &amp;quot;Relay Gateway&amp;quot; one Interface must be &lt;br /&gt;
	&lt;br /&gt;
configured for the registration to the &#039;&#039;&#039;&amp;quot;PBX of the&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Register-GW&amp;quot; with  Media Relay&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4b)&#039;&#039;&#039; On the &amp;quot;Relay Gateway&amp;quot; one Interface must be &lt;br /&gt;
	&lt;br /&gt;
configured for the registration to the &#039;&#039;&#039;Regular &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; PBX without Media Relay&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;5)&#039;&#039;&#039; In the Routes &#039;&#039;&#039;FROM the Regular PBX&#039;&#039;&#039;, the &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tone Interface and a leading &amp;quot;1&amp;quot; must be added&#039;&#039;&#039; to reach&lt;br /&gt;
&lt;br /&gt;
the opposite GW-Object in the &amp;quot;PBX of the Register-GW&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
In the Routes &#039;&#039;&#039;TO the Regular PBX&#039;&#039;&#039;, the &#039;&#039;&#039;leading &amp;quot;2&amp;quot;&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;must be cut&#039;&#039;&#039; because it&#039;s not needed anymore.&lt;br /&gt;
|                                 .&lt;br /&gt;
|[[Image:ConfigurationOverview.jpg]]&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Configuring the Customers regular PBX===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Create a Trunk Object in the regular PBX&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Of Course, in the regular PBX (where usually the Users are registered), a Trunk Object must be existing for external calls.&lt;br /&gt;
	&lt;br /&gt;
[[Image: RealPBX_1TrunkObject.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Configuring the Registration Gateway===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Enable the PBX on the Register-GW&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
On the same GW where the SBC (SIP Interface to Provider) is configured, a PBX must be created. Any System or PBX Name can be chosen because it’s normally an isolated PBX. But two Port Licenses are needed for the two Gateway registrations.&lt;br /&gt;
&lt;br /&gt;
[[Image: RegisterGW_1MasterPBX.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Create two Gateway Objects&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Two Gateway Objects must be created on this PBX. Defaults settings can be used, but each Gateway Object must have a Number.&lt;br /&gt;
In this example we have chosen the &#039;&#039;&#039;Prefix &amp;quot;1&amp;quot; for calls to the SIP Provider&#039;&#039;&#039; and the &#039;&#039;&#039;Prefix &amp;quot;2&amp;quot; for calls to the internal PBX&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
[[Image: RegisterGW_2PBX-GatewayObjects.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4. Configure SIP Interface&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
At the SIP Interface to the Provider, nothing special must be configured, please use the Provider specific settings from the Profiles or from the Provider Documentation.&lt;br /&gt;
Only Media Relay must be set to &amp;quot;off&amp;quot; and the internal registration goes to the PBX on its own Gateway.&lt;br /&gt;
&lt;br /&gt;
[[Image: RegisterGW_3SIP-Interface.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4. Modification of the Routes&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Following modification must be done in the Routes:&lt;br /&gt;
* The &#039;&#039;&#039;&amp;quot;2&amp;quot;&#039;&#039;&#039; (Prefix of the second Gateway Object in the PBX) &#039;&#039;&#039;must be added&#039;&#039;&#039; to Numbers that goes to the PBX.&lt;br /&gt;
* If there is a default Tone Mapping, it can be disabled or deleted.&lt;br /&gt;
* The leading &#039;&#039;&#039;&amp;quot;1&amp;quot;&#039;&#039;&#039; (Prefix of the first GW Object in the PBX) &#039;&#039;&#039;must be cut&#039;&#039;&#039; from each Number that comes from the PBX.&lt;br /&gt;
&lt;br /&gt;
[[Image: RegisterGW_4Routing.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Configuring the SBC Relay Gateways===&lt;br /&gt;
The following configurations are absolute identical on each Relay Gateway.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;5. Creation of GW Interfaces&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Two GW Interfaces must be created.&lt;br /&gt;
The first one is to register with the Second Gateway Object on the PBX of the &amp;quot;Register-GW&amp;quot;. Here, the Media Relay must be enabled.&lt;br /&gt;
The second one is to register with the Trunk Object on the regular PBX. Here, the Media Relay must be disabled. All other settings (like Codecs, T.38, etc.) are depending on your requirements.&lt;br /&gt;
&lt;br /&gt;
[[Image: RelayGW_1GW-Interfaces.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;6. Creation of the Routes&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Routes must be created between these Gateway Interfaces:&lt;br /&gt;
* The leading &#039;&#039;&#039;&amp;quot;2&amp;quot;&#039;&#039;&#039; (Prefix of the second Gateway Object in the Register GW PBX) &#039;&#039;&#039;must be cut&#039;&#039;&#039; from each Number that comes from the Register GW; &amp;quot;Interworking&amp;quot; should be set.&lt;br /&gt;
* A standard Tone Mapping should be added.&lt;br /&gt;
* The &#039;&#039;&#039;&amp;quot;1&amp;quot;&#039;&#039;&#039; (Prefix of the first GW Object in the Register GW PBX) &#039;&#039;&#039;must be added&#039;&#039;&#039; to the called Number that goes to the Register GW; &amp;quot;Interworking&amp;quot; should be set.&lt;br /&gt;
&lt;br /&gt;
[[Image: RelayGW_2Routing.jpg]]&lt;/div&gt;</summary>
		<author><name>Tru</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:SBC_scaling_for_large_number_of_channels&amp;diff=44005</id>
		<title>Howto:SBC scaling for large number of channels</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:SBC_scaling_for_large_number_of_channels&amp;diff=44005"/>
		<updated>2016-09-05T14:14:30Z</updated>

		<summary type="html">&lt;p&gt;Tru: /* Configuring the Customers regular PBX */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Applies To==&lt;br /&gt;
This information applies to:&lt;br /&gt;
&lt;br /&gt;
* SBC functionality on Gateways or IPVA with v12r1 or later&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Keywords: SBC,  Session Border Controller, SIP, scale, scaling, large, number, channels --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==More Information==&lt;br /&gt;
&lt;br /&gt;
===Preamble===&lt;br /&gt;
With the innovaphone SBC, we provide approximately 100 - 200 concurrent Channels per Gateway or IPVA. In bigger Scenarios where a few hundred (or more) Channels are required, several Gateways can be joined to a &amp;quot;Load Balancing Scenario&amp;quot; to provide a large number of Channels.&lt;br /&gt;
&lt;br /&gt;
Because a lot of SIP Provider does not support multiple registrations from many different Gateways and cannot guarantee an evenly Call distribution (Load Balancing), a dedicated SBC as SIP-Gateway for registrations is needed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Please ask your SIP Provider if he provides Multiple Registrations and Load Balancing before you start with the planning of the scenario.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This document describes the principles how to configure a &amp;quot;Load Balancing Scenario&amp;quot; with the reference to an example. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Be aware that this is just an example to explain how it works; maybe it’s a little bit different in your scenario - depending on the SIP Provider! &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Function Principle===&lt;br /&gt;
&lt;br /&gt;
The Limitation of the concurrent Channels per Gateway is based on the Media Relay Feature. If this Feature is enabled (and it’s mandatory for the SBC), the Channels are limited.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To bypass this limit, the idea is:&lt;br /&gt;
* to have a dedicated Gateway without Media-Relay. This acts only as Registration Gateway to the SIP Provider. Without Media Relay this Gateway can handle a very large number of calls. We call it &#039;&#039;&#039;&amp;quot;Register-GW&amp;quot;&#039;&#039;&#039; in this document.&lt;br /&gt;
* to use as many Gateways as needed for Media Relay. All calls should be evenly distributed on this Gateway to have a &amp;quot;Load Balance Scenario&amp;quot;. We call them &#039;&#039;&#039;&amp;quot;Relay-GWs&amp;quot;&#039;&#039;&#039; in this document.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Register-GW&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* On the &amp;quot;Register-GW&amp;quot; we need a PBX because only with the PBX we have an evenly distribution to several Gateways. Therefore the PBX must be enabled (Master) on this Gateway, but we need only two Gateway Objects in it. The first is for the registration from the Provider- SIP-Interface (on the same GW) and the second is for all registrations from the &amp;quot;Relay-GWs&amp;quot;.  No other object is needed.&lt;br /&gt;
* The SIP-Interface to the Provider is similar to the SBC of the &amp;quot;Common Scenario&amp;quot;. It has two registrations, one to the SIP Provider and another to the internal PBX. Only Media relay is disabled.&lt;br /&gt;
* The default Routes between SIP Provider and PBX must be adapted.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Relay-GWs&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Relay-GWs&amp;quot; are serving the Media Relay Part in this scenario. On each &amp;quot;Relay-GW&amp;quot; there are two registrations and simple routes between it.&lt;br /&gt;
* One registration to the &amp;quot;Register-GW&amp;quot;- PBX with Media Relay and the same Media Properties like the SIP Interface to the Provider at the &amp;quot;Register-GW&amp;quot;.&lt;br /&gt;
* One registration to the real PBX w/o Media Relay with default settings.&lt;br /&gt;
&lt;br /&gt;
[[Image:SBC_scenarios.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Configuration Example==&lt;br /&gt;
&#039;&#039;&#039;The following example shows how a configuration can be done, maybe it’s a little bit different in your scenario. Depending on the SIP Provider and the needed Number Mappings or Routes, there can be a lot of alternative Configurations&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Overview===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; &lt;br /&gt;
|----&lt;br /&gt;
|&#039;&#039;&#039;1.&#039;&#039;&#039; On the &amp;quot;Register-GW &amp;quot; the PBX must be enabled and&lt;br /&gt;
&lt;br /&gt;
two Gateway Objects with a Number must be created. In&lt;br /&gt;
&lt;br /&gt;
this example we have chosen the &#039;&#039;&#039;Prefix &amp;quot;1&amp;quot; for calls to&lt;br /&gt;
&lt;br /&gt;
the SIP Provider&#039;&#039;&#039; and the &#039;&#039;&#039;Prefix &amp;quot;2&amp;quot; for calls to the&lt;br /&gt;
&lt;br /&gt;
internal PBX&#039;&#039;&#039;.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2.&#039;&#039;&#039; The SIP Interface must be configured without Media&lt;br /&gt;
&lt;br /&gt;
Relay. The SIP Registration goes to the Provider; the&lt;br /&gt;
&lt;br /&gt;
internal Registration goes to the local PBX.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3.&#039;&#039;&#039; In the Routes &#039;&#039;&#039;TO the &amp;quot;PBX of the Register-GW&amp;quot;&#039;&#039;&#039;, a&lt;br /&gt;
&lt;br /&gt;
leading &#039;&#039;&#039;&amp;quot;2&amp;quot; must be added&#039;&#039;&#039; to reach the opposite&lt;br /&gt;
&lt;br /&gt;
GW-Object in the &amp;quot;PBX of the Register-GW&amp;quot;. In the Routes&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;FROM the &amp;quot;PBX of the Register-GW&amp;quot;&#039;&#039;&#039;, the leading &#039;&#039;&#039;&amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
must be cut&#039;&#039;&#039; because it&#039;s not needed anymore.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4.&#039;&#039;&#039; On the &amp;quot;Relay Gateway&amp;quot;, two GW Interfaces must be&lt;br /&gt;
&lt;br /&gt;
configured. One for the registration to the &#039;&#039;&#039;PBX of the&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Register-GW&amp;quot; with Media Relay&#039;&#039;&#039; and another to register&lt;br /&gt;
&lt;br /&gt;
to the &#039;&#039;&#039;Regular PBX without Media Relay&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;5.&#039;&#039;&#039;  A Route must be created &#039;&#039;&#039;FROM the Regular PBX&#039;&#039;&#039;, with&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tone generation and adding a leading &amp;quot;1&amp;quot;&#039;&#039;&#039; to reach the&lt;br /&gt;
&lt;br /&gt;
opposite GW-Object in the &amp;quot;PBX of the Register-GW&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;6.&#039;&#039;&#039;  A Route must be created &#039;&#039;&#039;TO the Regular PBX&#039;&#039;&#039;,&lt;br /&gt;
&lt;br /&gt;
with &#039;&#039;&#039;cutting the leading &amp;quot;2&amp;quot;&#039;&#039;&#039; because it&#039;s not needed anymore.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|[[Image:ConfigurationOverview.jpg]]&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Configuring the Customers regular PBX===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Create a Trunk Object in the regular PBX&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Of Course, in the regular PBX (where usually the Users are registered), a Trunk Object must be existing for external calls.&lt;br /&gt;
	&lt;br /&gt;
[[Image: RealPBX_1TrunkObject.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Configuring the Registration Gateway===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Enable the PBX on the Register-GW&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
On the same GW where the SBC (SIP Interface to Provider) is configured, a PBX must be created. Any System or PBX Name can be chosen because it’s normally an isolated PBX. But two Port Licenses are needed for the two Gateway registrations.&lt;br /&gt;
&lt;br /&gt;
[[Image: RegisterGW_1MasterPBX.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Create two Gateway Objects&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Two Gateway Objects must be created on this PBX. Defaults settings can be used, but each Gateway Object must have a Number.&lt;br /&gt;
In this example we have chosen the &#039;&#039;&#039;Prefix &amp;quot;1&amp;quot; for calls to the SIP Provider&#039;&#039;&#039; and the &#039;&#039;&#039;Prefix &amp;quot;2&amp;quot; for calls to the internal PBX&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
[[Image: RegisterGW_2PBX-GatewayObjects.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4. Configure SIP Interface&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
At the SIP Interface to the Provider, nothing special must be configured, please use the Provider specific settings from the Profiles or from the Provider Documentation.&lt;br /&gt;
Only Media Relay must be set to &amp;quot;off&amp;quot; and the internal registration goes to the PBX on its own Gateway.&lt;br /&gt;
&lt;br /&gt;
[[Image: RegisterGW_3SIP-Interface.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4. Modification of the Routes&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Following modification must be done in the Routes:&lt;br /&gt;
* The &#039;&#039;&#039;&amp;quot;2&amp;quot;&#039;&#039;&#039; (Prefix of the second Gateway Object in the PBX) &#039;&#039;&#039;must be added&#039;&#039;&#039; to Numbers that goes to the PBX.&lt;br /&gt;
* If there is a default Tone Mapping, it can be disabled or deleted.&lt;br /&gt;
* The leading &#039;&#039;&#039;&amp;quot;1&amp;quot;&#039;&#039;&#039; (Prefix of the first GW Object in the PBX) &#039;&#039;&#039;must be cut&#039;&#039;&#039; from each Number that comes from the PBX.&lt;br /&gt;
&lt;br /&gt;
[[Image: RegisterGW_4Routing.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Configuring the SBC Relay Gateways===&lt;br /&gt;
The following configurations are absolute identical on each Relay Gateway.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;5. Creation of GW Interfaces&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Two GW Interfaces must be created.&lt;br /&gt;
The first one is to register with the Second Gateway Object on the PBX of the &amp;quot;Register-GW&amp;quot;. Here, the Media Relay must be enabled.&lt;br /&gt;
The second one is to register with the Trunk Object on the regular PBX. Here, the Media Relay must be disabled. All other settings (like Codecs, T.38, etc.) are depending on your requirements.&lt;br /&gt;
&lt;br /&gt;
[[Image: RelayGW_1GW-Interfaces.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;6. Creation of the Routes&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Routes must be created between these Gateway Interfaces:&lt;br /&gt;
* The leading &#039;&#039;&#039;&amp;quot;2&amp;quot;&#039;&#039;&#039; (Prefix of the second Gateway Object in the Register GW PBX) &#039;&#039;&#039;must be cut&#039;&#039;&#039; from each Number that comes from the Register GW; &amp;quot;Interworking&amp;quot; should be set.&lt;br /&gt;
* A standard Tone Mapping should be added.&lt;br /&gt;
* The &#039;&#039;&#039;&amp;quot;1&amp;quot;&#039;&#039;&#039; (Prefix of the first GW Object in the Register GW PBX) &#039;&#039;&#039;must be added&#039;&#039;&#039; to the called Number that goes to the Register GW; &amp;quot;Interworking&amp;quot; should be set.&lt;br /&gt;
&lt;br /&gt;
[[Image: RelayGW_2Routing.jpg]]&lt;/div&gt;</summary>
		<author><name>Tru</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:SBC_scaling_for_large_number_of_channels&amp;diff=44004</id>
		<title>Howto:SBC scaling for large number of channels</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:SBC_scaling_for_large_number_of_channels&amp;diff=44004"/>
		<updated>2016-09-05T14:14:05Z</updated>

		<summary type="html">&lt;p&gt;Tru: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Applies To==&lt;br /&gt;
This information applies to:&lt;br /&gt;
&lt;br /&gt;
* SBC functionality on Gateways or IPVA with v12r1 or later&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Keywords: SBC,  Session Border Controller, SIP, scale, scaling, large, number, channels --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==More Information==&lt;br /&gt;
&lt;br /&gt;
===Preamble===&lt;br /&gt;
With the innovaphone SBC, we provide approximately 100 - 200 concurrent Channels per Gateway or IPVA. In bigger Scenarios where a few hundred (or more) Channels are required, several Gateways can be joined to a &amp;quot;Load Balancing Scenario&amp;quot; to provide a large number of Channels.&lt;br /&gt;
&lt;br /&gt;
Because a lot of SIP Provider does not support multiple registrations from many different Gateways and cannot guarantee an evenly Call distribution (Load Balancing), a dedicated SBC as SIP-Gateway for registrations is needed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Please ask your SIP Provider if he provides Multiple Registrations and Load Balancing before you start with the planning of the scenario.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This document describes the principles how to configure a &amp;quot;Load Balancing Scenario&amp;quot; with the reference to an example. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Be aware that this is just an example to explain how it works; maybe it’s a little bit different in your scenario - depending on the SIP Provider! &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Function Principle===&lt;br /&gt;
&lt;br /&gt;
The Limitation of the concurrent Channels per Gateway is based on the Media Relay Feature. If this Feature is enabled (and it’s mandatory for the SBC), the Channels are limited.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To bypass this limit, the idea is:&lt;br /&gt;
* to have a dedicated Gateway without Media-Relay. This acts only as Registration Gateway to the SIP Provider. Without Media Relay this Gateway can handle a very large number of calls. We call it &#039;&#039;&#039;&amp;quot;Register-GW&amp;quot;&#039;&#039;&#039; in this document.&lt;br /&gt;
* to use as many Gateways as needed for Media Relay. All calls should be evenly distributed on this Gateway to have a &amp;quot;Load Balance Scenario&amp;quot;. We call them &#039;&#039;&#039;&amp;quot;Relay-GWs&amp;quot;&#039;&#039;&#039; in this document.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Register-GW&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* On the &amp;quot;Register-GW&amp;quot; we need a PBX because only with the PBX we have an evenly distribution to several Gateways. Therefore the PBX must be enabled (Master) on this Gateway, but we need only two Gateway Objects in it. The first is for the registration from the Provider- SIP-Interface (on the same GW) and the second is for all registrations from the &amp;quot;Relay-GWs&amp;quot;.  No other object is needed.&lt;br /&gt;
* The SIP-Interface to the Provider is similar to the SBC of the &amp;quot;Common Scenario&amp;quot;. It has two registrations, one to the SIP Provider and another to the internal PBX. Only Media relay is disabled.&lt;br /&gt;
* The default Routes between SIP Provider and PBX must be adapted.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Relay-GWs&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Relay-GWs&amp;quot; are serving the Media Relay Part in this scenario. On each &amp;quot;Relay-GW&amp;quot; there are two registrations and simple routes between it.&lt;br /&gt;
* One registration to the &amp;quot;Register-GW&amp;quot;- PBX with Media Relay and the same Media Properties like the SIP Interface to the Provider at the &amp;quot;Register-GW&amp;quot;.&lt;br /&gt;
* One registration to the real PBX w/o Media Relay with default settings.&lt;br /&gt;
&lt;br /&gt;
[[Image:SBC_scenarios.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Configuration Example==&lt;br /&gt;
&#039;&#039;&#039;The following example shows how a configuration can be done, maybe it’s a little bit different in your scenario. Depending on the SIP Provider and the needed Number Mappings or Routes, there can be a lot of alternative Configurations&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Overview===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; &lt;br /&gt;
|----&lt;br /&gt;
|&#039;&#039;&#039;1.&#039;&#039;&#039; On the &amp;quot;Register-GW &amp;quot; the PBX must be enabled and&lt;br /&gt;
&lt;br /&gt;
two Gateway Objects with a Number must be created. In&lt;br /&gt;
&lt;br /&gt;
this example we have chosen the &#039;&#039;&#039;Prefix &amp;quot;1&amp;quot; for calls to&lt;br /&gt;
&lt;br /&gt;
the SIP Provider&#039;&#039;&#039; and the &#039;&#039;&#039;Prefix &amp;quot;2&amp;quot; for calls to the&lt;br /&gt;
&lt;br /&gt;
internal PBX&#039;&#039;&#039;.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2.&#039;&#039;&#039; The SIP Interface must be configured without Media&lt;br /&gt;
&lt;br /&gt;
Relay. The SIP Registration goes to the Provider; the&lt;br /&gt;
&lt;br /&gt;
internal Registration goes to the local PBX.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3.&#039;&#039;&#039; In the Routes &#039;&#039;&#039;TO the &amp;quot;PBX of the Register-GW&amp;quot;&#039;&#039;&#039;, a&lt;br /&gt;
&lt;br /&gt;
leading &#039;&#039;&#039;&amp;quot;2&amp;quot; must be added&#039;&#039;&#039; to reach the opposite&lt;br /&gt;
&lt;br /&gt;
GW-Object in the &amp;quot;PBX of the Register-GW&amp;quot;. In the Routes&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;FROM the &amp;quot;PBX of the Register-GW&amp;quot;&#039;&#039;&#039;, the leading &#039;&#039;&#039;&amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
must be cut&#039;&#039;&#039; because it&#039;s not needed anymore.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4.&#039;&#039;&#039; On the &amp;quot;Relay Gateway&amp;quot;, two GW Interfaces must be&lt;br /&gt;
&lt;br /&gt;
configured. One for the registration to the &#039;&#039;&#039;PBX of the&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Register-GW&amp;quot; with Media Relay&#039;&#039;&#039; and another to register&lt;br /&gt;
&lt;br /&gt;
to the &#039;&#039;&#039;Regular PBX without Media Relay&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;5.&#039;&#039;&#039;  A Route must be created &#039;&#039;&#039;FROM the Regular PBX&#039;&#039;&#039;, with&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tone generation and adding a leading &amp;quot;1&amp;quot;&#039;&#039;&#039; to reach the&lt;br /&gt;
&lt;br /&gt;
opposite GW-Object in the &amp;quot;PBX of the Register-GW&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;6.&#039;&#039;&#039;  A Route must be created &#039;&#039;&#039;TO the Regular PBX&#039;&#039;&#039;,&lt;br /&gt;
&lt;br /&gt;
with &#039;&#039;&#039;cutting the leading &amp;quot;2&amp;quot;&#039;&#039;&#039; because it&#039;s not needed anymore.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|[[Image:ConfigurationOverview.jpg]]&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Configuring the Customers regular PBX===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Create a Trunk Object in the regular PBX&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Of Course, in the regular PBX (where usually the Users are registered), a Trunk Object must be existing for external calls.&lt;br /&gt;
	&lt;br /&gt;
[[Image: RealPBX_1TrunkObject.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Configuring the Registration Gateway===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Enable the PBX on the Register-GW&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
On the same GW where the SBC (SIP Interface to Provider) is configured, a PBX must be created. Any System or PBX Name can be chosen because it’s normally an isolated PBX. But two Port Licenses are needed for the two Gateway registrations.&lt;br /&gt;
&lt;br /&gt;
[[Image: RegisterGW_1MasterPBX.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Create two Gateway Objects&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Two Gateway Objects must be created on this PBX. Defaults settings can be used, but each Gateway Object must have a Number.&lt;br /&gt;
In this example we have chosen the &#039;&#039;&#039;Prefix &amp;quot;1&amp;quot; for calls to the SIP Provider&#039;&#039;&#039; and the &#039;&#039;&#039;Prefix &amp;quot;2&amp;quot; for calls to the internal PBX&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
[[Image: RegisterGW_2PBX-GatewayObjects.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4. Configure SIP Interface&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
At the SIP Interface to the Provider, nothing special must be configured, please use the Provider specific settings from the Profiles or from the Provider Documentation.&lt;br /&gt;
Only Media Relay must be set to &amp;quot;off&amp;quot; and the internal registration goes to the PBX on its own Gateway.&lt;br /&gt;
&lt;br /&gt;
[[Image: RegisterGW_3SIP-Interface.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4. Modification of the Routes&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Following modification must be done in the Routes:&lt;br /&gt;
* The &#039;&#039;&#039;&amp;quot;2&amp;quot;&#039;&#039;&#039; (Prefix of the second Gateway Object in the PBX) &#039;&#039;&#039;must be added&#039;&#039;&#039; to Numbers that goes to the PBX.&lt;br /&gt;
* If there is a default Tone Mapping, it can be disabled or deleted.&lt;br /&gt;
* The leading &#039;&#039;&#039;&amp;quot;1&amp;quot;&#039;&#039;&#039; (Prefix of the first GW Object in the PBX) &#039;&#039;&#039;must be cut&#039;&#039;&#039; from each Number that comes from the PBX.&lt;br /&gt;
&lt;br /&gt;
[[Image: RegisterGW_4Routing.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Configuring the SBC Relay Gateways===&lt;br /&gt;
The following configurations are absolute identical on each Relay Gateway.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;5. Creation of GW Interfaces&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Two GW Interfaces must be created.&lt;br /&gt;
The first one is to register with the Second Gateway Object on the PBX of the &amp;quot;Register-GW&amp;quot;. Here, the Media Relay must be enabled.&lt;br /&gt;
The second one is to register with the Trunk Object on the regular PBX. Here, the Media Relay must be disabled. All other settings (like Codecs, T.38, etc.) are depending on your requirements.&lt;br /&gt;
&lt;br /&gt;
[[Image: RelayGW_1GW-Interfaces.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;6. Creation of the Routes&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Routes must be created between these Gateway Interfaces:&lt;br /&gt;
* The leading &#039;&#039;&#039;&amp;quot;2&amp;quot;&#039;&#039;&#039; (Prefix of the second Gateway Object in the Register GW PBX) &#039;&#039;&#039;must be cut&#039;&#039;&#039; from each Number that comes from the Register GW; &amp;quot;Interworking&amp;quot; should be set.&lt;br /&gt;
* A standard Tone Mapping should be added.&lt;br /&gt;
* The &#039;&#039;&#039;&amp;quot;1&amp;quot;&#039;&#039;&#039; (Prefix of the first GW Object in the Register GW PBX) &#039;&#039;&#039;must be added&#039;&#039;&#039; to the called Number that goes to the Register GW; &amp;quot;Interworking&amp;quot; should be set.&lt;br /&gt;
&lt;br /&gt;
[[Image: RelayGW_2Routing.jpg]]&lt;/div&gt;</summary>
		<author><name>Tru</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:SBC_scaling_for_large_number_of_channels&amp;diff=44003</id>
		<title>Howto:SBC scaling for large number of channels</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:SBC_scaling_for_large_number_of_channels&amp;diff=44003"/>
		<updated>2016-09-05T14:13:42Z</updated>

		<summary type="html">&lt;p&gt;Tru: /* Overview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Applies To==&lt;br /&gt;
This information applies to:&lt;br /&gt;
&lt;br /&gt;
* SBC functionality on Gateways or IPVA with v12r1 or later&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Keywords: SBC,  Session Border Controller, SIP, scale, scaling, large, number, channels --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==More Information==&lt;br /&gt;
&lt;br /&gt;
===Preamble===&lt;br /&gt;
With the innovaphone SBC, we provide approximately 100 - 200 concurrent Channels per Gateway or IPVA. In bigger Scenarios where a few hundred (or more) Channels are required, several Gateways can be joined to a &amp;quot;Load Balancing Scenario&amp;quot; to provide a large number of Channels.&lt;br /&gt;
&lt;br /&gt;
Because a lot of SIP Provider does not support multiple registrations from many different Gateways and cannot guarantee an evenly Call distribution (Load Balancing), a dedicated SBC as SIP-Gateway for registrations is needed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Please ask your SIP Provider if he provides Multiple Registrations and Load Balancing before you start with the planning of the scenario.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This document describes the principles how to configure a &amp;quot;Load Balancing Scenario&amp;quot; with the reference to an example. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Be aware that this is just an example to explain how it works; maybe it’s a little bit different in your scenario - depending on the SIP Provider! &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Function Principle===&lt;br /&gt;
&lt;br /&gt;
The Limitation of the concurrent Channels per Gateway is based on the Media Relay Feature. If this Feature is enabled (and it’s mandatory for the SBC), the Channels are limited.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To bypass this limit, the idea is:&lt;br /&gt;
* to have a dedicated Gateway without Media-Relay. This acts only as Registration Gateway to the SIP Provider. Without Media Relay this Gateway can handle a very large number of calls. We call it &#039;&#039;&#039;&amp;quot;Register-GW&amp;quot;&#039;&#039;&#039; in this document.&lt;br /&gt;
* to use as many Gateways as needed for Media Relay. All calls should be evenly distributed on this Gateway to have a &amp;quot;Load Balance Scenario&amp;quot;. We call them &#039;&#039;&#039;&amp;quot;Relay-GWs&amp;quot;&#039;&#039;&#039; in this document.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Register-GW&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* On the &amp;quot;Register-GW&amp;quot; we need a PBX because only with the PBX we have an evenly distribution to several Gateways. Therefore the PBX must be enabled (Master) on this Gateway, but we need only two Gateway Objects in it. The first is for the registration from the Provider- SIP-Interface (on the same GW) and the second is for all registrations from the &amp;quot;Relay-GWs&amp;quot;.  No other object is needed.&lt;br /&gt;
* The SIP-Interface to the Provider is similar to the SBC of the &amp;quot;Common Scenario&amp;quot;. It has two registrations, one to the SIP Provider and another to the internal PBX. Only Media relay is disabled.&lt;br /&gt;
* The default Routes between SIP Provider and PBX must be adapted.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Relay-GWs&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Relay-GWs&amp;quot; are serving the Media Relay Part in this scenario. On each &amp;quot;Relay-GW&amp;quot; there are two registrations and simple routes between it.&lt;br /&gt;
* One registration to the &amp;quot;Register-GW&amp;quot;- PBX with Media Relay and the same Media Properties like the SIP Interface to the Provider at the &amp;quot;Register-GW&amp;quot;.&lt;br /&gt;
* One registration to the real PBX w/o Media Relay with default settings.&lt;br /&gt;
&lt;br /&gt;
[[Image:SBC_scenarios.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Configuration Example==&lt;br /&gt;
&#039;&#039;&#039;The following example shows how a configuration can be done, maybe it’s a little bit different in your scenario. Depending on the SIP Provider and the needed Number Mappings or Routes, there can be a lot of alternative Configurations&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Overview===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; &lt;br /&gt;
|----&lt;br /&gt;
|&#039;&#039;&#039;1.&#039;&#039;&#039; On the &amp;quot;Register-GW &amp;quot; the PBX must be enabled and&lt;br /&gt;
&lt;br /&gt;
two Gateway Objects with a Number must be created. In&lt;br /&gt;
&lt;br /&gt;
this example we have chosen the &#039;&#039;&#039;Prefix &amp;quot;1&amp;quot; for calls to&lt;br /&gt;
&lt;br /&gt;
the SIP Provider&#039;&#039;&#039; and the &#039;&#039;&#039;Prefix &amp;quot;2&amp;quot; for calls to the&lt;br /&gt;
&lt;br /&gt;
internal PBX&#039;&#039;&#039;.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2.&#039;&#039;&#039; The SIP Interface must be configured without Media&lt;br /&gt;
&lt;br /&gt;
Relay. The SIP Registration goes to the Provider; the&lt;br /&gt;
&lt;br /&gt;
internal Registration goes to the local PBX.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3.&#039;&#039;&#039; In the Routes &#039;&#039;&#039;TO the &amp;quot;PBX of the Register-GW&amp;quot;&#039;&#039;&#039;, a&lt;br /&gt;
&lt;br /&gt;
leading &#039;&#039;&#039;&amp;quot;2&amp;quot; must be added&#039;&#039;&#039; to reach the opposite&lt;br /&gt;
&lt;br /&gt;
GW-Object in the &amp;quot;PBX of the Register-GW&amp;quot;. In the Routes&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;FROM the &amp;quot;PBX of the Register-GW&amp;quot;&#039;&#039;&#039;, the leading &#039;&#039;&#039;&amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
must be cut&#039;&#039;&#039; because it&#039;s not needed anymore.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4.&#039;&#039;&#039; On the &amp;quot;Relay Gateway&amp;quot;, two GW Interfaces must be&lt;br /&gt;
&lt;br /&gt;
configured. One for the registration to the &#039;&#039;&#039;PBX of the&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Register-GW&amp;quot; with Media Relay&#039;&#039;&#039; and another to register&lt;br /&gt;
&lt;br /&gt;
to the &#039;&#039;&#039;Regular PBX without Media Relay&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;5.&#039;&#039;&#039;  A Route must be created &#039;&#039;&#039;FROM the Regular PBX&#039;&#039;&#039;, with&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tone generation and adding a leading &amp;quot;1&amp;quot;&#039;&#039;&#039; to reach the&lt;br /&gt;
&lt;br /&gt;
opposite GW-Object in the &amp;quot;PBX of the Register-GW&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;6.&#039;&#039;&#039;  A Route must be created &#039;&#039;&#039;TO the Regular PBX&#039;&#039;&#039;,&lt;br /&gt;
&lt;br /&gt;
with &#039;&#039;&#039;cutting the leading &amp;quot;2&amp;quot;&#039;&#039;&#039; because it&#039;s not needed anymore.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|[[Image:ConfigurationOverview.jpg]]&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Configuring the Customers regular PBX===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Create a Trunk Object in the regular PBX&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Of Course, in the regular PBX (where usually the Users are registered), a Trunk Object must be existing for external calls.&lt;br /&gt;
	&lt;br /&gt;
[[Image: RealPBX_1TrunkObject.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Configuring the Registration Gateway===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Enable the PBX on the Register-GW&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
On the same GW where the SBC (SIP Interface to Provider) is configured, a PBX must be created. Any System or PBX Name can be chosen because it’s normally an isolated PBX. But two Port Licenses are needed for the two Gateway registrations.&lt;br /&gt;
&lt;br /&gt;
[[Image: RegisterGW_1MasterPBX.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Create two Gateway Objects&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Two Gateway Objects must be created on this PBX. Defaults settings can be used, but each Gateway Object must have a Number.&lt;br /&gt;
In this example we have chosen the &#039;&#039;&#039;Prefix &amp;quot;1&amp;quot; for calls to the SIP Provider&#039;&#039;&#039; and the &#039;&#039;&#039;Prefix &amp;quot;2&amp;quot; for calls to the internal PBX&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
[[Image: RegisterGW_2PBX-GatewayObjects.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4. Configure SIP Interface&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
At the SIP Interface to the Provider, nothing special must be configured, please use the Provider specific settings from the Profiles or from the Provider Documentation.&lt;br /&gt;
Only Media Relay must be set to &amp;quot;off&amp;quot; and the internal registration goes to the PBX on its own Gateway.&lt;br /&gt;
&lt;br /&gt;
[[Image: RegisterGW_3SIP-Interface.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4. Modification of the Routes&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Following modification must be done in the Routes:&lt;br /&gt;
* The &#039;&#039;&#039;&amp;quot;2&amp;quot;&#039;&#039;&#039; (Prefix of the second Gateway Object in the PBX) &#039;&#039;&#039;must be added&#039;&#039;&#039; to Numbers that goes to the PBX.&lt;br /&gt;
* If there is a default Tone Mapping, it can be disabled or deleted.&lt;br /&gt;
* The leading &#039;&#039;&#039;&amp;quot;1&amp;quot;&#039;&#039;&#039; (Prefix of the first GW Object in the PBX) &#039;&#039;&#039;must be cut&#039;&#039;&#039; from each Number that comes from the PBX.&lt;br /&gt;
&lt;br /&gt;
[[Image: RegisterGW_4Routing.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Configuring the SBC Relay Gateways===&lt;br /&gt;
The following configurations are absolute identical on each Relay Gateway.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;5. Creation of GW Interfaces&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Two GW Interfaces must be created.&lt;br /&gt;
The first one is to register with the Second Gateway Object on the PBX of the &amp;quot;Register-GW&amp;quot;. Here, the Media Relay must be enabled.&lt;br /&gt;
The second one is to register with the Trunk Object on the regular PBX. Here, the Media Relay must be disabled. All other settings (like Codecs, T.38, etc.) are depending on your requirements.&lt;br /&gt;
&lt;br /&gt;
[[Image: RelayGW_1GW-Interfaces.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;6. Creation of the Routes&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Routes must be created between these Gateway Interfaces:&lt;br /&gt;
* The leading &#039;&#039;&#039;&amp;quot;2&amp;quot;&#039;&#039;&#039; (Prefix of the second Gateway Object in the Register GW PBX) &#039;&#039;&#039;must be cut&#039;&#039;&#039; from each Number that comes from the Register GW; &amp;quot;Interworking&amp;quot; should be set.&lt;br /&gt;
* A standard Tone Mapping should be added.&lt;br /&gt;
* The &#039;&#039;&#039;&amp;quot;1&amp;quot;&#039;&#039;&#039; (Prefix of the first GW Object in the Register GW PBX) &#039;&#039;&#039;must be added&#039;&#039;&#039; to the called Number that goes to the Register GW; &amp;quot;Interworking&amp;quot; should be set.&lt;br /&gt;
&lt;br /&gt;
[[Image: RelayGW_2Routing.jpg]]&lt;/div&gt;</summary>
		<author><name>Tru</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=File:ConfigurationOverview.jpg&amp;diff=44002</id>
		<title>File:ConfigurationOverview.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=File:ConfigurationOverview.jpg&amp;diff=44002"/>
		<updated>2016-09-05T13:59:42Z</updated>

		<summary type="html">&lt;p&gt;Tru: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tru</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:SBC_scaling_for_large_number_of_channels&amp;diff=44001</id>
		<title>Howto:SBC scaling for large number of channels</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:SBC_scaling_for_large_number_of_channels&amp;diff=44001"/>
		<updated>2016-09-05T13:59:24Z</updated>

		<summary type="html">&lt;p&gt;Tru: /* Overview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Applies To==&lt;br /&gt;
This information applies to:&lt;br /&gt;
&lt;br /&gt;
* SBC functionality on Gateways or IPVA with v12r1 or later&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Keywords: SBC,  Session Border Controller, SIP, scale, scaling, large, number, channels --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==More Information==&lt;br /&gt;
&lt;br /&gt;
===Preamble===&lt;br /&gt;
With the innovaphone SBC, we provide approximately 100 - 200 concurrent Channels per Gateway or IPVA. In bigger Scenarios where a few hundred (or more) Channels are required, several Gateways can be joined to a &amp;quot;Load Balancing Scenario&amp;quot; to provide a large number of Channels.&lt;br /&gt;
&lt;br /&gt;
Because a lot of SIP Provider does not support multiple registrations from many different Gateways and cannot guarantee an evenly Call distribution (Load Balancing), a dedicated SBC as SIP-Gateway for registrations is needed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Please ask your SIP Provider if he provides Multiple Registrations and Load Balancing before you start with the planning of the scenario.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This document describes the principles how to configure a &amp;quot;Load Balancing Scenario&amp;quot; with the reference to an example. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Be aware that this is just an example to explain how it works; maybe it’s a little bit different in your scenario - depending on the SIP Provider! &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Function Principle===&lt;br /&gt;
&lt;br /&gt;
The Limitation of the concurrent Channels per Gateway is based on the Media Relay Feature. If this Feature is enabled (and it’s mandatory for the SBC), the Channels are limited.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To bypass this limit, the idea is:&lt;br /&gt;
* to have a dedicated Gateway without Media-Relay. This acts only as Registration Gateway to the SIP Provider. Without Media Relay this Gateway can handle a very large number of calls. We call it &#039;&#039;&#039;&amp;quot;Register-GW&amp;quot;&#039;&#039;&#039; in this document.&lt;br /&gt;
* to use as many Gateways as needed for Media Relay. All calls should be evenly distributed on this Gateway to have a &amp;quot;Load Balance Scenario&amp;quot;. We call them &#039;&#039;&#039;&amp;quot;Relay-GWs&amp;quot;&#039;&#039;&#039; in this document.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Register-GW&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* On the &amp;quot;Register-GW&amp;quot; we need a PBX because only with the PBX we have an evenly distribution to several Gateways. Therefore the PBX must be enabled (Master) on this Gateway, but we need only two Gateway Objects in it. The first is for the registration from the Provider- SIP-Interface (on the same GW) and the second is for all registrations from the &amp;quot;Relay-GWs&amp;quot;.  No other object is needed.&lt;br /&gt;
* The SIP-Interface to the Provider is similar to the SBC of the &amp;quot;Common Scenario&amp;quot;. It has two registrations, one to the SIP Provider and another to the internal PBX. Only Media relay is disabled.&lt;br /&gt;
* The default Routes between SIP Provider and PBX must be adapted.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Relay-GWs&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Relay-GWs&amp;quot; are serving the Media Relay Part in this scenario. On each &amp;quot;Relay-GW&amp;quot; there are two registrations and simple routes between it.&lt;br /&gt;
* One registration to the &amp;quot;Register-GW&amp;quot;- PBX with Media Relay and the same Media Properties like the SIP Interface to the Provider at the &amp;quot;Register-GW&amp;quot;.&lt;br /&gt;
* One registration to the real PBX w/o Media Relay with default settings.&lt;br /&gt;
&lt;br /&gt;
[[Image:SBC_scenarios.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Configuration Example==&lt;br /&gt;
&#039;&#039;&#039;The following example shows how a configuration can be done, maybe it’s a little bit different in your scenario. Depending on the SIP Provider and the needed Number Mappings or Routes, there can be a lot of alternative Configurations&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Overview===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; &lt;br /&gt;
|----&lt;br /&gt;
|[[Image:ConfigurationOverview.jpg]]&lt;br /&gt;
|&lt;br /&gt;
&#039;&#039;&#039;1.&#039;&#039;&#039; On the &amp;quot;Register-GW &amp;quot; the PBX must be enabled and two Gateway Objects with a Number must be created. In this example we have chosen the &#039;&#039;&#039;Prefix &amp;quot;1&amp;quot; for calls to the SIP Provider&#039;&#039;&#039; and the &#039;&#039;&#039;Prefix &amp;quot;2&amp;quot; for calls to the internal PBX&#039;&#039;&#039;.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2.&#039;&#039;&#039; The SIP Interface must be configured without Media Relay. The SIP Registration goes to the Provider; the internal Registration goes to the local PBX.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3.&#039;&#039;&#039; In the Routes &#039;&#039;&#039;TO the &amp;quot;PBX of the Register-GW&amp;quot;&#039;&#039;&#039;, a leading &#039;&#039;&#039;&amp;quot;2&amp;quot; must be added&#039;&#039;&#039; to reach the opposite GW-Object in the &amp;quot;PBX of the Register-GW&amp;quot;.&lt;br /&gt;
In the Routes &#039;&#039;&#039;FROM the &amp;quot;PBX of the Register-GW&amp;quot;&#039;&#039;&#039;, the leading &#039;&#039;&#039;&amp;quot;1&amp;quot; must be cut&#039;&#039;&#039; because it&#039;s not needed anymore.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4.&#039;&#039;&#039; On the &amp;quot;Relay Gateway&amp;quot;, two GW Interfaces must be configured. One for the registration to the &#039;&#039;&#039;PBX of the &amp;quot;Register-GW&amp;quot; with Media Relay&#039;&#039;&#039; and another to register to the &#039;&#039;&#039;Regular PBX without Media Relay&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;5.&#039;&#039;&#039;  A Route must be created &#039;&#039;&#039;FROM the Regular PBX&#039;&#039;&#039;, with &#039;&#039;&#039;Tone generation and adding a leading &amp;quot;1&amp;quot;&#039;&#039;&#039; to reach the opposite GW-Object in the &amp;quot;PBX of the Register-GW&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;6.&#039;&#039;&#039;  A Route must be created &#039;&#039;&#039;TO the Regular PBX&#039;&#039;&#039;, with &#039;&#039;&#039;cutting the leading &amp;quot;2&amp;quot;&#039;&#039;&#039; because it&#039;s not needed anymore.&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Configuring the Customers regular PBX===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Create a Trunk Object in the regular PBX&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Of Course, in the regular PBX (where usually the Users are registered), a Trunk Object must be existing for external calls.&lt;br /&gt;
	&lt;br /&gt;
[[Image: RealPBX_1TrunkObject.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Configuring the Registration Gateway===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Enable the PBX on the Register-GW&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
On the same GW where the SBC (SIP Interface to Provider) is configured, a PBX must be created. Any System or PBX Name can be chosen because it’s normally an isolated PBX. But two Port Licenses are needed for the two Gateway registrations.&lt;br /&gt;
&lt;br /&gt;
[[Image: RegisterGW_1MasterPBX.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Create two Gateway Objects&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Two Gateway Objects must be created on this PBX. Defaults settings can be used, but each Gateway Object must have a Number.&lt;br /&gt;
In this example we have chosen the &#039;&#039;&#039;Prefix &amp;quot;1&amp;quot; for calls to the SIP Provider&#039;&#039;&#039; and the &#039;&#039;&#039;Prefix &amp;quot;2&amp;quot; for calls to the internal PBX&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
[[Image: RegisterGW_2PBX-GatewayObjects.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4. Configure SIP Interface&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
At the SIP Interface to the Provider, nothing special must be configured, please use the Provider specific settings from the Profiles or from the Provider Documentation.&lt;br /&gt;
Only Media Relay must be set to &amp;quot;off&amp;quot; and the internal registration goes to the PBX on its own Gateway.&lt;br /&gt;
&lt;br /&gt;
[[Image: RegisterGW_3SIP-Interface.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4. Modification of the Routes&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Following modification must be done in the Routes:&lt;br /&gt;
* The &#039;&#039;&#039;&amp;quot;2&amp;quot;&#039;&#039;&#039; (Prefix of the second Gateway Object in the PBX) &#039;&#039;&#039;must be added&#039;&#039;&#039; to Numbers that goes to the PBX.&lt;br /&gt;
* If there is a default Tone Mapping, it can be disabled or deleted.&lt;br /&gt;
* The leading &#039;&#039;&#039;&amp;quot;1&amp;quot;&#039;&#039;&#039; (Prefix of the first GW Object in the PBX) &#039;&#039;&#039;must be cut&#039;&#039;&#039; from each Number that comes from the PBX.&lt;br /&gt;
&lt;br /&gt;
[[Image: RegisterGW_4Routing.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Configuring the SBC Relay Gateways===&lt;br /&gt;
The following configurations are absolute identical on each Relay Gateway.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;5. Creation of GW Interfaces&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Two GW Interfaces must be created.&lt;br /&gt;
The first one is to register with the Second Gateway Object on the PBX of the &amp;quot;Register-GW&amp;quot;. Here, the Media Relay must be enabled.&lt;br /&gt;
The second one is to register with the Trunk Object on the regular PBX. Here, the Media Relay must be disabled. All other settings (like Codecs, T.38, etc.) are depending on your requirements.&lt;br /&gt;
&lt;br /&gt;
[[Image: RelayGW_1GW-Interfaces.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;6. Creation of the Routes&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Routes must be created between these Gateway Interfaces:&lt;br /&gt;
* The leading &#039;&#039;&#039;&amp;quot;2&amp;quot;&#039;&#039;&#039; (Prefix of the second Gateway Object in the Register GW PBX) &#039;&#039;&#039;must be cut&#039;&#039;&#039; from each Number that comes from the Register GW; &amp;quot;Interworking&amp;quot; should be set.&lt;br /&gt;
* A standard Tone Mapping should be added.&lt;br /&gt;
* The &#039;&#039;&#039;&amp;quot;1&amp;quot;&#039;&#039;&#039; (Prefix of the first GW Object in the Register GW PBX) &#039;&#039;&#039;must be added&#039;&#039;&#039; to the called Number that goes to the Register GW; &amp;quot;Interworking&amp;quot; should be set.&lt;br /&gt;
&lt;br /&gt;
[[Image: RelayGW_2Routing.jpg]]&lt;/div&gt;</summary>
		<author><name>Tru</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:SBC_scaling_for_large_number_of_channels&amp;diff=44000</id>
		<title>Howto:SBC scaling for large number of channels</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:SBC_scaling_for_large_number_of_channels&amp;diff=44000"/>
		<updated>2016-09-05T12:17:47Z</updated>

		<summary type="html">&lt;p&gt;Tru: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Applies To==&lt;br /&gt;
This information applies to:&lt;br /&gt;
&lt;br /&gt;
* SBC functionality on Gateways or IPVA with v12r1 or later&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Keywords: SBC,  Session Border Controller, SIP, scale, scaling, large, number, channels --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==More Information==&lt;br /&gt;
&lt;br /&gt;
===Preamble===&lt;br /&gt;
With the innovaphone SBC, we provide approximately 100 - 200 concurrent Channels per Gateway or IPVA. In bigger Scenarios where a few hundred (or more) Channels are required, several Gateways can be joined to a &amp;quot;Load Balancing Scenario&amp;quot; to provide a large number of Channels.&lt;br /&gt;
&lt;br /&gt;
Because a lot of SIP Provider does not support multiple registrations from many different Gateways and cannot guarantee an evenly Call distribution (Load Balancing), a dedicated SBC as SIP-Gateway for registrations is needed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Please ask your SIP Provider if he provides Multiple Registrations and Load Balancing before you start with the planning of the scenario.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This document describes the principles how to configure a &amp;quot;Load Balancing Scenario&amp;quot; with the reference to an example. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Be aware that this is just an example to explain how it works; maybe it’s a little bit different in your scenario - depending on the SIP Provider! &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Function Principle===&lt;br /&gt;
&lt;br /&gt;
The Limitation of the concurrent Channels per Gateway is based on the Media Relay Feature. If this Feature is enabled (and it’s mandatory for the SBC), the Channels are limited.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To bypass this limit, the idea is:&lt;br /&gt;
* to have a dedicated Gateway without Media-Relay. This acts only as Registration Gateway to the SIP Provider. Without Media Relay this Gateway can handle a very large number of calls. We call it &#039;&#039;&#039;&amp;quot;Register-GW&amp;quot;&#039;&#039;&#039; in this document.&lt;br /&gt;
* to use as many Gateways as needed for Media Relay. All calls should be evenly distributed on this Gateway to have a &amp;quot;Load Balance Scenario&amp;quot;. We call them &#039;&#039;&#039;&amp;quot;Relay-GWs&amp;quot;&#039;&#039;&#039; in this document.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Register-GW&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* On the &amp;quot;Register-GW&amp;quot; we need a PBX because only with the PBX we have an evenly distribution to several Gateways. Therefore the PBX must be enabled (Master) on this Gateway, but we need only two Gateway Objects in it. The first is for the registration from the Provider- SIP-Interface (on the same GW) and the second is for all registrations from the &amp;quot;Relay-GWs&amp;quot;.  No other object is needed.&lt;br /&gt;
* The SIP-Interface to the Provider is similar to the SBC of the &amp;quot;Common Scenario&amp;quot;. It has two registrations, one to the SIP Provider and another to the internal PBX. Only Media relay is disabled.&lt;br /&gt;
* The default Routes between SIP Provider and PBX must be adapted.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Relay-GWs&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Relay-GWs&amp;quot; are serving the Media Relay Part in this scenario. On each &amp;quot;Relay-GW&amp;quot; there are two registrations and simple routes between it.&lt;br /&gt;
* One registration to the &amp;quot;Register-GW&amp;quot;- PBX with Media Relay and the same Media Properties like the SIP Interface to the Provider at the &amp;quot;Register-GW&amp;quot;.&lt;br /&gt;
* One registration to the real PBX w/o Media Relay with default settings.&lt;br /&gt;
&lt;br /&gt;
[[Image:SBC_scenarios.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Configuration Example==&lt;br /&gt;
&#039;&#039;&#039;The following example shows how a configuration can be done, maybe it’s a little bit different in your scenario. Depending on the SIP Provider and the needed Number Mappings or Routes, there can be a lot of alternative Configurations&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Overview===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
|----&lt;br /&gt;
|TEXT1&lt;br /&gt;
|-----&lt;br /&gt;
|OK&lt;br /&gt;
|-----&lt;br /&gt;
|OK&lt;br /&gt;
|----&lt;br /&gt;
|TEXT2&lt;br /&gt;
|OK&lt;br /&gt;
|OK&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Configuring the Customers regular PBX===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Create a Trunk Object in the regular PBX&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Of Course, in the regular PBX (where usually the Users are registered), a Trunk Object must be existing for external calls.&lt;br /&gt;
	&lt;br /&gt;
[[Image: RealPBX_1TrunkObject.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Configuring the Registration Gateway===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Enable the PBX on the Register-GW&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
On the same GW where the SBC (SIP Interface to Provider) is configured, a PBX must be created. Any System or PBX Name can be chosen because it’s normally an isolated PBX. But two Port Licenses are needed for the two Gateway registrations.&lt;br /&gt;
&lt;br /&gt;
[[Image: RegisterGW_1MasterPBX.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Create two Gateway Objects&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Two Gateway Objects must be created on this PBX. Defaults settings can be used, but each Gateway Object must have a Number.&lt;br /&gt;
In this example we have chosen the &#039;&#039;&#039;Prefix &amp;quot;1&amp;quot; for calls to the SIP Provider&#039;&#039;&#039; and the &#039;&#039;&#039;Prefix &amp;quot;2&amp;quot; for calls to the internal PBX&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
[[Image: RegisterGW_2PBX-GatewayObjects.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4. Configure SIP Interface&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
At the SIP Interface to the Provider, nothing special must be configured, please use the Provider specific settings from the Profiles or from the Provider Documentation.&lt;br /&gt;
Only Media Relay must be set to &amp;quot;off&amp;quot; and the internal registration goes to the PBX on its own Gateway.&lt;br /&gt;
&lt;br /&gt;
[[Image: RegisterGW_3SIP-Interface.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4. Modification of the Routes&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Following modification must be done in the Routes:&lt;br /&gt;
* The &#039;&#039;&#039;&amp;quot;2&amp;quot;&#039;&#039;&#039; (Prefix of the second Gateway Object in the PBX) &#039;&#039;&#039;must be added&#039;&#039;&#039; to Numbers that goes to the PBX.&lt;br /&gt;
* If there is a default Tone Mapping, it can be disabled or deleted.&lt;br /&gt;
* The leading &#039;&#039;&#039;&amp;quot;1&amp;quot;&#039;&#039;&#039; (Prefix of the first GW Object in the PBX) &#039;&#039;&#039;must be cut&#039;&#039;&#039; from each Number that comes from the PBX.&lt;br /&gt;
&lt;br /&gt;
[[Image: RegisterGW_4Routing.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Configuring the SBC Relay Gateways===&lt;br /&gt;
The following configurations are absolute identical on each Relay Gateway.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;5. Creation of GW Interfaces&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Two GW Interfaces must be created.&lt;br /&gt;
The first one is to register with the Second Gateway Object on the PBX of the &amp;quot;Register-GW&amp;quot;. Here, the Media Relay must be enabled.&lt;br /&gt;
The second one is to register with the Trunk Object on the regular PBX. Here, the Media Relay must be disabled. All other settings (like Codecs, T.38, etc.) are depending on your requirements.&lt;br /&gt;
&lt;br /&gt;
[[Image: RelayGW_1GW-Interfaces.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;6. Creation of the Routes&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Routes must be created between these Gateway Interfaces:&lt;br /&gt;
* The leading &#039;&#039;&#039;&amp;quot;2&amp;quot;&#039;&#039;&#039; (Prefix of the second Gateway Object in the Register GW PBX) &#039;&#039;&#039;must be cut&#039;&#039;&#039; from each Number that comes from the Register GW; &amp;quot;Interworking&amp;quot; should be set.&lt;br /&gt;
* A standard Tone Mapping should be added.&lt;br /&gt;
* The &#039;&#039;&#039;&amp;quot;1&amp;quot;&#039;&#039;&#039; (Prefix of the first GW Object in the Register GW PBX) &#039;&#039;&#039;must be added&#039;&#039;&#039; to the called Number that goes to the Register GW; &amp;quot;Interworking&amp;quot; should be set.&lt;br /&gt;
&lt;br /&gt;
[[Image: RelayGW_2Routing.jpg]]&lt;/div&gt;</summary>
		<author><name>Tru</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:SBC_scaling_for_large_number_of_channels&amp;diff=43999</id>
		<title>Howto:SBC scaling for large number of channels</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:SBC_scaling_for_large_number_of_channels&amp;diff=43999"/>
		<updated>2016-09-05T12:10:26Z</updated>

		<summary type="html">&lt;p&gt;Tru: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Applies To==&lt;br /&gt;
This information applies to:&lt;br /&gt;
&lt;br /&gt;
* SBC functionality on Gateways or IPVA with v12r1 or later&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Keywords: SBC,  Session Border Controller, SIP, scale, scaling, large, number, channels --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==More Information==&lt;br /&gt;
&lt;br /&gt;
===Preamble===&lt;br /&gt;
With the innovaphone SBC, we provide approximately 100 - 200 concurrent Channels per Gateway or IPVA. In bigger Scenarios where a few hundred (or more) Channels are required, several Gateways can be joined to a &amp;quot;Load Balancing Scenario&amp;quot; to provide a large number of Channels.&lt;br /&gt;
&lt;br /&gt;
Because a lot of SIP Provider does not support multiple registrations from many different Gateways and cannot guarantee an evenly Call distribution (Load Balancing), a dedicated SBC as SIP-Gateway for registrations is needed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Please ask your SIP Provider if he provides multiple registrations and Load Balancing before you start with the planning of such a scenario&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This document describes the principles how to configure a &amp;quot;Load Balancing Scenario&amp;quot; with the reference to an example. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Be aware that this is just an example to explain how it works; maybe it’s a little bit different in your scenario - depending on the SIP Provider! &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Function Principle===&lt;br /&gt;
&lt;br /&gt;
The Limitation of the concurrent Channels per Gateway is based on the Media Relay Feature. If this Feature is enabled (and it’s mandatory for the SBC), the Channels are limited.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To bypass this limit, the idea is:&lt;br /&gt;
* to have a dedicated Gateway without Media-Relay. This acts only as Registration Gateway to the SIP Provider. Without Media Relay this Gateway can handle a very large number of calls. We call it &#039;&#039;&#039;&amp;quot;Register-GW&amp;quot;&#039;&#039;&#039; in this document.&lt;br /&gt;
* to use as many Gateways as needed for Media Relay. All calls should be evenly distributed on this Gateway to have a &amp;quot;Load Balance Scenario&amp;quot;. We call them &#039;&#039;&#039;&amp;quot;Relay-GWs&amp;quot;&#039;&#039;&#039; in this document.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Register-GW&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* On the &amp;quot;Register-GW&amp;quot; we need a PBX because only with the PBX we have an evenly distribution to several Gateways. Therefore the PBX must be enabled (Master) on this Gateway, but we need only two Gateway Objects in it. The first is for the registration from the Provider- SIP-Interface (on the same GW) and the second is for all registrations from the &amp;quot;Relay-GWs&amp;quot;.  No other object is needed.&lt;br /&gt;
* The SIP-Interface to the Provider is similar to the SBC of the &amp;quot;Common Scenario&amp;quot;. It has two registrations, one to the SIP Provider and another to the internal PBX. Only Media relay is disabled.&lt;br /&gt;
* The default Routes between SIP Provider and PBX must be adapted.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Relay-GWs&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Relay-GWs&amp;quot; are serving the Media Relay Part in this scenario. On each &amp;quot;Relay-GW&amp;quot; there are two registrations and simple routes between it.&lt;br /&gt;
* One registration to the &amp;quot;Register-GW&amp;quot;- PBX with Media Relay and the same Media Properties like the SIP Interface to the Provider at the &amp;quot;Register-GW&amp;quot;.&lt;br /&gt;
* One registration to the real PBX w/o Media Relay with default settings.&lt;br /&gt;
&lt;br /&gt;
[[Image:SBC_scenarios.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Configuration Example==&lt;br /&gt;
&#039;&#039;&#039;The following example shows how a configuration can be done, maybe it’s a little bit different in your scenario. Depending on the SIP Provider and the needed Number Mappings or Routes, there can be a lot of alternative Configurations&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Overview===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Result &lt;br /&gt;
|----&lt;br /&gt;
|&#039;&#039;&#039;Call can be put on hold&#039;&#039;&#039; &lt;br /&gt;
|OK&lt;br /&gt;
|----&lt;br /&gt;
|Held end hears music on hold / announcement from PBX&lt;br /&gt;
|OK&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; &lt;br /&gt;
!Tested feature&lt;br /&gt;
!Voice Ok?&lt;br /&gt;
!MoH Ok?&lt;br /&gt;
|----&lt;br /&gt;
|inno1 calls inno2. inno2 transfers to PSTN-phone.&lt;br /&gt;
|OK&lt;br /&gt;
|OK&lt;br /&gt;
|----&lt;br /&gt;
|inno1 calls PSTN-phone. inno1 transfers to inno2.&lt;br /&gt;
|OK&lt;br /&gt;
|OK&lt;br /&gt;
|----&lt;br /&gt;
|inno1 calls PSTN-phone. PSTN-phone transfers to inno2.&lt;br /&gt;
|OK&lt;br /&gt;
|OK&lt;br /&gt;
|----&lt;br /&gt;
|PSTN-phone calls inno1. inno1 transfers to inno2.&lt;br /&gt;
|OK&lt;br /&gt;
|OK&lt;br /&gt;
|----&lt;br /&gt;
|PSTN-phone calls inno1. PSTN-phone transfers to inno2.&lt;br /&gt;
|OK&lt;br /&gt;
|OK&lt;br /&gt;
|----&lt;br /&gt;
|PSTN-phone calls inno1. inno1 transfers to other PSTN-phone-2.&lt;br /&gt;
|OK&lt;br /&gt;
|OK&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Configuring the Customers regular PBX===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Create a Trunk Object in the regular PBX&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Of Course, in the regular PBX (where usually the Users are registered), a Trunk Object must be existing for external calls.&lt;br /&gt;
	&lt;br /&gt;
[[Image: RealPBX_1TrunkObject.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Configuring the Registration Gateway===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Enable the PBX on the Register-GW&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
On the same GW where the SBC (SIP Interface to Provider) is configured, a PBX must be created. Any System or PBX Name can be chosen because it’s normally an isolated PBX. But two Port Licenses are needed for the two Gateway registrations.&lt;br /&gt;
&lt;br /&gt;
[[Image: RegisterGW_1MasterPBX.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Create two Gateway Objects&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Two Gateway Objects must be created on this PBX. Defaults settings can be used, but each Gateway Object must have a Number.&lt;br /&gt;
In this example we have chosen the &#039;&#039;&#039;Prefix &amp;quot;1&amp;quot; for calls to the SIP Provider&#039;&#039;&#039; and the &#039;&#039;&#039;Prefix &amp;quot;2&amp;quot; for calls to the internal PBX&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
[[Image: RegisterGW_2PBX-GatewayObjects.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4. Configure SIP Interface&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
At the SIP Interface to the Provider, nothing special must be configured, please use the Provider specific settings from the Profiles or from the Provider Documentation.&lt;br /&gt;
Only Media Relay must be set to &amp;quot;off&amp;quot; and the internal registration goes to the PBX on its own Gateway.&lt;br /&gt;
&lt;br /&gt;
[[Image: RegisterGW_3SIP-Interface.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4. Modification of the Routes&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Following modification must be done in the Routes:&lt;br /&gt;
* The &#039;&#039;&#039;&amp;quot;2&amp;quot;&#039;&#039;&#039; (Prefix of the second Gateway Object in the PBX) &#039;&#039;&#039;must be added&#039;&#039;&#039; to Numbers that goes to the PBX.&lt;br /&gt;
* If there is a default Tone Mapping, it can be disabled or deleted.&lt;br /&gt;
* The leading &#039;&#039;&#039;&amp;quot;1&amp;quot;&#039;&#039;&#039; (Prefix of the first GW Object in the PBX) &#039;&#039;&#039;must be cut&#039;&#039;&#039; from each Number that comes from the PBX.&lt;br /&gt;
&lt;br /&gt;
[[Image: RegisterGW_4Routing.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Configuring the SBC Relay Gateways===&lt;br /&gt;
The following configurations are absolute identical on each Relay Gateway.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;5. Creation of GW Interfaces&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Two GW Interfaces must be created.&lt;br /&gt;
The first one is to register with the Second Gateway Object on the PBX of the &amp;quot;Register-GW&amp;quot;. Here, the Media Relay must be enabled.&lt;br /&gt;
The second one is to register with the Trunk Object on the regular PBX. Here, the Media Relay must be disabled. All other settings (like Codecs, T.38, etc.) are depending on your requirements.&lt;br /&gt;
&lt;br /&gt;
[[Image: RelayGW_1GW-Interfaces.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;6. Creation of the Routes&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Routes must be created between these Gateway Interfaces:&lt;br /&gt;
* The leading &#039;&#039;&#039;&amp;quot;2&amp;quot;&#039;&#039;&#039; (Prefix of the second Gateway Object in the Register GW PBX) &#039;&#039;&#039;must be cut&#039;&#039;&#039; from each Number that comes from the Register GW; &amp;quot;Interworking&amp;quot; should be set.&lt;br /&gt;
* A standard Tone Mapping should be added.&lt;br /&gt;
* The &#039;&#039;&#039;&amp;quot;1&amp;quot;&#039;&#039;&#039; (Prefix of the first GW Object in the Register GW PBX) &#039;&#039;&#039;must be added&#039;&#039;&#039; to the called Number that goes to the Register GW; &amp;quot;Interworking&amp;quot; should be set.&lt;br /&gt;
&lt;br /&gt;
[[Image: RelayGW_2Routing.jpg]]&lt;/div&gt;</summary>
		<author><name>Tru</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:SBC_scaling_for_large_number_of_channels&amp;diff=43991</id>
		<title>Howto:SBC scaling for large number of channels</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:SBC_scaling_for_large_number_of_channels&amp;diff=43991"/>
		<updated>2016-09-02T13:26:32Z</updated>

		<summary type="html">&lt;p&gt;Tru: /* Configuring the Registration Gateway */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Applies To==&lt;br /&gt;
This information applies to:&lt;br /&gt;
&lt;br /&gt;
* SBC functionality on Gateways or IPVA with v12r1 or later&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Keywords: SBC,  Session Border Controller, SIP, scale, scaling, large, number, channels --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==More Information==&lt;br /&gt;
&lt;br /&gt;
===Preamble===&lt;br /&gt;
With the innovaphone SBC, we provide approximately 100 - 200 concurrent Channels per Gateway or IPVA. In bigger Scenarios where a few hundred (or more) Channels are required, several Gateways can be joined to a &amp;quot;Load Balancing Scenario&amp;quot; to provide a large number of Channels.&lt;br /&gt;
&lt;br /&gt;
Also, in most scenarios an additional and dedicated SBC as SIP -Gateway to the Provider is needed (with or w/o registrations), because most of the SIP Providers accepts only one registration.&lt;br /&gt;
&lt;br /&gt;
This document describes the principles how to configure such a &amp;quot;Load Balancing Scenario&amp;quot; with the reference to an example. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Be aware that this is just an example to explain how it works; maybe it’s a little bit different in your scenario depending on the SIP Provider! &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Function Principle===&lt;br /&gt;
&lt;br /&gt;
The Limitation of the concurrent Channels per Gateway is based on the Media Relay Feature. If this Feature is enabled (and it’s mandatory for the SBC), the Channels are limited.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To bypass this limit, the idea is:&lt;br /&gt;
* to have a dedicated Gateway without Media-Relay. This acts only as Registration Gateway to the SIP Provider. Without Media Relay this Gateway can handle a very large number of calls. We call it &#039;&#039;&#039;&amp;quot;Register-GW&amp;quot;&#039;&#039;&#039; in this document.&lt;br /&gt;
* to use as many Gateways as needed for Media Relay. All calls should be evenly distributed on this Gateway to have a &amp;quot;Load Balance Scenario&amp;quot;. We call them &#039;&#039;&#039;&amp;quot;Relay-GWs&amp;quot;&#039;&#039;&#039; in this document.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Register-GW&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* On the &amp;quot;Register-GW&amp;quot; we need a PBX because only with the PBX we have an evenly distribution to several Gateways. Therefore the PBX must be enabled (Master) on this Gateway, but we need only two Gateway Objects in it. The first is for the registration from the Provider- SIP-Interface (on the same GW) and the second is for all registrations from the &amp;quot;Relay-GWs&amp;quot;.  No other object is needed.&lt;br /&gt;
* The SIP-Interface to the Provider is similar to the SBC of the &amp;quot;Common Scenario&amp;quot;. It has two registrations, one to the SIP Provider and another to the internal PBX. Only Media relay is disabled.&lt;br /&gt;
* The default Routes between SIP Provider and PBX must be adapted.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Relay-GWs&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Relay-GWs&amp;quot; are serving the Media Relay Part in this scenario. On each &amp;quot;Relay-GW&amp;quot; there are two registrations and simple routes between it.&lt;br /&gt;
* One registration to the &amp;quot;Register-GW&amp;quot;- PBX with Media Relay and the same Media Properties like the SIP Interface to the Provider at the &amp;quot;Register-GW&amp;quot;.&lt;br /&gt;
* One registration to the real PBX w/o Media Relay with default settings.&lt;br /&gt;
&lt;br /&gt;
[[Image:SBC_scenarios.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Configuration Example==&lt;br /&gt;
&#039;&#039;&#039;The following example shows how a configuration can be done, maybe it’s a little bit different in your scenario. Depending on the SIP Provider and the needed Number Mappings or Routes, there can be a lot of alternative Configurations&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Configuring the Customers regular PBX===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Create a Trunk Object in the regular PBX&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Of Course, in the regular PBX (where usually the Users are registered), a Trunk Object must be existing for external calls.&lt;br /&gt;
	&lt;br /&gt;
[[Image: RealPBX_1TrunkObject.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Configuring the Registration Gateway===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Enable the PBX on the Register-GW&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
On the same GW where the SBC (SIP Interface to Provider) is configured, a PBX must be created. Any System or PBX Name can be chosen because it’s normally an isolated PBX. But two Port Licenses are needed for the two Gateway registrations.&lt;br /&gt;
&lt;br /&gt;
[[Image: RegisterGW_1MasterPBX.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Create two Gateway Objects&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Two Gateway Objects must be created on this PBX. Defaults settings can be used, but each Gateway Object must have a Number.&lt;br /&gt;
In this example we have chosen the &#039;&#039;&#039;Prefix &amp;quot;1&amp;quot; for calls to the SIP Provider&#039;&#039;&#039; and the &#039;&#039;&#039;Prefix &amp;quot;2&amp;quot; for calls to the internal PBX&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
[[Image: RegisterGW_2PBX-GatewayObjects.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4. Configure SIP Interface&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
At the SIP Interface to the Provider, nothing special must be configured, please use the Provider specific setting from the Profiles or from the Provider Documentation.&lt;br /&gt;
Only Media Relay must be set to &amp;quot;off&amp;quot; and the internal registration goes to the PBX on its own Gateway.&lt;br /&gt;
&lt;br /&gt;
[[Image: RegisterGW_3SIP-Interface.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4. Modification of the Routes&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Following modification must be done in the Routes:&lt;br /&gt;
* The &#039;&#039;&#039;&amp;quot;2&amp;quot;&#039;&#039;&#039; (Prefix of the second Gateway Object in the PBX) &#039;&#039;&#039;must be added&#039;&#039;&#039; to Numbers that goes to the PBX.&lt;br /&gt;
* If there is a default Tone Mapping, it can be disabled or deleted.&lt;br /&gt;
* The leading &#039;&#039;&#039;&amp;quot;1&amp;quot;&#039;&#039;&#039; (Prefix of the first GW Object in the PBX) &#039;&#039;&#039;must be cut&#039;&#039;&#039; from each Number that comes from the PBX.&lt;br /&gt;
&lt;br /&gt;
[[Image: RegisterGW_4Routing.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Configuring the SBC Relay Gateways===&lt;br /&gt;
The following configurations are absolute identical on each Relay Gateway.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;5. Creation of GW Interfaces&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Two GW Interfaces must be created.&lt;br /&gt;
The first one is to register with the Second Gateway Object on the PBX of the &amp;quot;Register-GW&amp;quot;. Here, the Media Relay must be enabled.&lt;br /&gt;
The second one is to register with the Trunk Object on the regular PBX. Here, the Media Relay must be disabled. All other settings (like Codecs, T.38, etc.) are depending on your requirements.&lt;br /&gt;
&lt;br /&gt;
[[Image: RelayGW_1GW-Interfaces.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;6. Creation of the Routes&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Routes must be created between these Gateway Interfaces:&lt;br /&gt;
* The leading &#039;&#039;&#039;&amp;quot;2&amp;quot;&#039;&#039;&#039; (Prefix of the second Gateway Object in the Register GW PBX) &#039;&#039;&#039;must be cut&#039;&#039;&#039; from each Number that comes from the Register GW.&lt;br /&gt;
* A standard Tone Mapping should be added.&lt;br /&gt;
* The &#039;&#039;&#039;&amp;quot;1&amp;quot;&#039;&#039;&#039; (Prefix of the first GW Object in the Register GW PBX) &#039;&#039;&#039;must be added&#039;&#039;&#039; to the called Number that goes to the Register GW.&lt;br /&gt;
&lt;br /&gt;
[[Image: RelayGW_2Routing.jpg]]&lt;/div&gt;</summary>
		<author><name>Tru</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:SBC_scaling_for_large_number_of_channels&amp;diff=43990</id>
		<title>Howto:SBC scaling for large number of channels</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:SBC_scaling_for_large_number_of_channels&amp;diff=43990"/>
		<updated>2016-09-02T12:50:52Z</updated>

		<summary type="html">&lt;p&gt;Tru: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Applies To==&lt;br /&gt;
This information applies to:&lt;br /&gt;
&lt;br /&gt;
* SBC functionality on Gateways or IPVA with v12r1 or later&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Keywords: SBC,  Session Border Controller, SIP, scale, scaling, large, number, channels --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==More Information==&lt;br /&gt;
&lt;br /&gt;
===Preamble===&lt;br /&gt;
With the innovaphone SBC, we provide approximately 100 - 200 concurrent Channels per Gateway or IPVA. In bigger Scenarios where a few hundred (or more) Channels are required, several Gateways can be joined to a &amp;quot;Load Balancing Scenario&amp;quot; to provide a large number of Channels.&lt;br /&gt;
&lt;br /&gt;
Also, in most scenarios an additional and dedicated SBC as SIP -Gateway to the Provider is needed (with or w/o registrations), because most of the SIP Providers accepts only one registration.&lt;br /&gt;
&lt;br /&gt;
This document describes the principles how to configure such a &amp;quot;Load Balancing Scenario&amp;quot; with the reference to an example. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Be aware that this is just an example to explain how it works; maybe it’s a little bit different in your scenario depending on the SIP Provider! &#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Function Principle===&lt;br /&gt;
&lt;br /&gt;
The Limitation of the concurrent Channels per Gateway is based on the Media Relay Feature. If this Feature is enabled (and it’s mandatory for the SBC), the Channels are limited.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To bypass this limit, the idea is:&lt;br /&gt;
* to have a dedicated Gateway without Media-Relay. This acts only as Registration Gateway to the SIP Provider. Without Media Relay this Gateway can handle a very large number of calls. We call it &#039;&#039;&#039;&amp;quot;Register-GW&amp;quot;&#039;&#039;&#039; in this document.&lt;br /&gt;
* to use as many Gateways as needed for Media Relay. All calls should be evenly distributed on this Gateway to have a &amp;quot;Load Balance Scenario&amp;quot;. We call them &#039;&#039;&#039;&amp;quot;Relay-GWs&amp;quot;&#039;&#039;&#039; in this document.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Register-GW&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* On the &amp;quot;Register-GW&amp;quot; we need a PBX because only with the PBX we have an evenly distribution to several Gateways. Therefore the PBX must be enabled (Master) on this Gateway, but we need only two Gateway Objects in it. The first is for the registration from the Provider- SIP-Interface (on the same GW) and the second is for all registrations from the &amp;quot;Relay-GWs&amp;quot;.  No other object is needed.&lt;br /&gt;
* The SIP-Interface to the Provider is similar to the SBC of the &amp;quot;Common Scenario&amp;quot;. It has two registrations, one to the SIP Provider and another to the internal PBX. Only Media relay is disabled.&lt;br /&gt;
* The default Routes between SIP Provider and PBX must be adapted.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Relay-GWs&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Relay-GWs&amp;quot; are serving the Media Relay Part in this scenario. On each &amp;quot;Relay-GW&amp;quot; there are two registrations and simple routes between it.&lt;br /&gt;
* One registration to the &amp;quot;Register-GW&amp;quot;- PBX with Media Relay and the same Media Properties like the SIP Interface to the Provider at the &amp;quot;Register-GW&amp;quot;.&lt;br /&gt;
* One registration to the real PBX w/o Media Relay with default settings.&lt;br /&gt;
&lt;br /&gt;
[[Image:SBC_scenarios.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Configuration Example==&lt;br /&gt;
&#039;&#039;&#039;The following example shows how a configuration can be done, maybe it’s a little bit different in your scenario. Depending on the SIP Provider and the needed Number Mappings or Routes, there can be a lot of alternative Configurations&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Configuring the Customers regular PBX===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Create a Trunk Object in the regular PBX&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Of Course, in the regular PBX (where usually the Users are registered), a Trunk Object must be existing for external calls.&lt;br /&gt;
	&lt;br /&gt;
[[Image: RealPBX_1TrunkObject.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Configuring the Registration Gateway===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Enable the PBX on the Register-GW&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
On the same GW where the SBC (SIP Interface to Provider) is configured, a PBX must be created. Any System or PBX Name can be chosen because it’s normally an isolated PBX. But two Port Licenses are needed for the two Gateway registrations.&lt;br /&gt;
&lt;br /&gt;
[[Image: RegisterGW_1MasterPBX.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Create two Gateway Objects&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Two Gateway Objects must be created on this PBX. Defaults settings can be used, but each Gateway Object must have a Number.&lt;br /&gt;
In this example we have chosen the &#039;&#039;&#039;Prefix &amp;quot;1&amp;quot; for calls to the SIP Provider&#039;&#039;&#039; and the &#039;&#039;&#039;Prefix &amp;quot;2&amp;quot; for calls to the internal PBX&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
[[Image: RegisterGW_2PBX-GatewayObjects.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4. Configure SIP Interface&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
At the SIP Interface to the Provider, nothing special must be configured, please use the Provider specific setting from the Profiles or from the Provider Documentation.&lt;br /&gt;
Only Media Relay must be set to &amp;quot;off&amp;quot; and the internal registration goes to the PBX on its own Gateway.&lt;br /&gt;
&lt;br /&gt;
[[Image: RegisterGW_3SIP-Interface.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4. Modification of the Routes&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Following modification must be done in the Routes:&lt;br /&gt;
* The &#039;&#039;&#039;&amp;quot;2&amp;quot;&#039;&#039;&#039; (Prefix of the second Gateway Object in the PBX) &#039;&#039;&#039;must be added&#039;&#039;&#039; to Numbers that goes to the PBX.&lt;br /&gt;
* If there is a default Tone Mapping, it can be disabled or deleted.&lt;br /&gt;
* The leading &#039;&#039;&#039;&amp;quot;1&amp;quot;&#039;&#039;&#039; (Prefix of the first GW Object in the PBX) &#039;&#039;&#039;must be cut&#039;&#039;&#039; from each Number that comes from the PBX.&lt;br /&gt;
&lt;br /&gt;
 [[Image: RegisterGW_4Routing.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Configuring the SBC Relay Gateways===&lt;br /&gt;
The following configurations are absolute identical on each Relay Gateway.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;5. Creation of GW Interfaces&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Two GW Interfaces must be created.&lt;br /&gt;
The first one is to register with the Second Gateway Object on the PBX of the &amp;quot;Register-GW&amp;quot;. Here, the Media Relay must be enabled.&lt;br /&gt;
The second one is to register with the Trunk Object on the regular PBX. Here, the Media Relay must be disabled. All other settings (like Codecs, T.38, etc.) are depending on your requirements.&lt;br /&gt;
&lt;br /&gt;
[[Image: RelayGW_1GW-Interfaces.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;6. Creation of the Routes&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Routes must be created between these Gateway Interfaces:&lt;br /&gt;
* The leading &#039;&#039;&#039;&amp;quot;2&amp;quot;&#039;&#039;&#039; (Prefix of the second Gateway Object in the Register GW PBX) &#039;&#039;&#039;must be cut&#039;&#039;&#039; from each Number that comes from the Register GW.&lt;br /&gt;
* A standard Tone Mapping should be added.&lt;br /&gt;
* The &#039;&#039;&#039;&amp;quot;1&amp;quot;&#039;&#039;&#039; (Prefix of the first GW Object in the Register GW PBX) &#039;&#039;&#039;must be added&#039;&#039;&#039; to the called Number that goes to the Register GW.&lt;br /&gt;
&lt;br /&gt;
[[Image: RelayGW_2Routing.jpg]]&lt;/div&gt;</summary>
		<author><name>Tru</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:SBC_scaling_for_large_number_of_channels&amp;diff=43989</id>
		<title>Howto:SBC scaling for large number of channels</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:SBC_scaling_for_large_number_of_channels&amp;diff=43989"/>
		<updated>2016-09-02T12:22:01Z</updated>

		<summary type="html">&lt;p&gt;Tru: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Applies To==&lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
* SBC functionality on Gateways or IPVA with v12r1 or later&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Keywords: SBC,  Session Border Controller, scale, scaling, large, number, channels --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==More Information==&lt;br /&gt;
&lt;br /&gt;
===Preamble===&lt;br /&gt;
With the innovaphone SBC, we provide approximately 100 - 200 concurrent Channels per Gateway or IPVA. In bigger Scenarios where a few hundred (or more) Channels are required, several Gateways can be joined to a &amp;quot;Load Balancing Scenario&amp;quot; to provide a large number of Channels.&lt;br /&gt;
&lt;br /&gt;
Also, in most scenarios an additional and dedicated SBC as SIP -Gateway to the Provider is needed (with or w/o registrations), because the most part of SIP Providers accept only one counterpart.&lt;br /&gt;
&lt;br /&gt;
This document describes the principles how to configure such a &amp;quot;Load Balancing Scenario&amp;quot; with reference to an example. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Be aware that this is just an example to explain how it works; maybe it’s a little bit different in your scenarios depending on the SIP Provider!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Function Principle===&lt;br /&gt;
&lt;br /&gt;
The Limitation of the concurrent Channels per Gateway is based on the Media Relay Feature. If this Feature is enabled (and it’s mandatory for the SBC), the Channels are limited.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To bypass this limit, the idea is:&lt;br /&gt;
* to have a dedicated Gateway without Media-Relay. This acts only as Registration Gateway to the SIP Provider. Without Media Relay this Gateway can handle a very large number of calls. We call it &#039;&#039;&#039;&amp;quot;Register-GW&amp;quot;&#039;&#039;&#039; in this document.&lt;br /&gt;
* to use as many Gateways as needed for Media Relay. All calls should be evenly distributed on this Gateway to have a &amp;quot;Load Balance Scenario&amp;quot;. We call them &#039;&#039;&#039;&amp;quot;Relay-GWs&amp;quot;&#039;&#039;&#039; in this document.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Register-GW&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* On the &amp;quot;Register-GW&amp;quot; we need a PBX because only with the PBX we have an evenly distribution to several Gateways. Therefore the PBX must be enabled (Master) on this Gateway, but we need only two Gateway Objects in it. The first is for the registration from the Provider- SIP-Interface (on the same GW) and the second is for all registrations from the &amp;quot;Relay-GWs&amp;quot;.  No other object is needed.&lt;br /&gt;
* The SIP-Interface to the Provider is similar to the SBC of the &amp;quot;Common Scenario&amp;quot;. It has two registrations, one to the SIP Provider and another to the internal PBX. Only Media relay is disabled.&lt;br /&gt;
* The default Routes between SIP Provider and PBX must be adapted.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Relay-GWs&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Relay-GWs&amp;quot; are serving the Media Relay Part in this scenario. On each &amp;quot;Relay-GW&amp;quot; there are two registrations and simple routes between it.&lt;br /&gt;
* One registration to the &amp;quot;Register-GW&amp;quot;- PBX with Media Relay and the same SDP settings like the SIP Interface to the Provider.&lt;br /&gt;
* One registration to the real PBX w/o Media Relay with default settings.&lt;br /&gt;
&lt;br /&gt;
[[Image:SBC_scenarios.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Configuration Example==&lt;br /&gt;
&#039;&#039;&#039;The following example shows how a configuration can be done, maybe it’s a little bit different in your scenario. Depending on the SIP Provider and the needed Number Mappings or Routes, there can be a lot of alternative Configurations&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Configuring the Customers regular PBX===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Create a Trunk Object in the regular PBX&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Of Course, in the regular PBX (where usually the Users are registered), a Trunk Object must be existing with the Number for External calls.&lt;br /&gt;
&lt;br /&gt;
[[Image: RealPBX_1TrunkObject.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Configuring the Registration Gateway===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Enable the PBX on the Register-GW&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
On the same GW where the SBC (SIP Interface to Provider) is configured, a PBX must be created. Any System or PBX Name can be chosen because it’s normally an isolated PBX. But two Port Licenses are needed for the two Gateway registrations.&lt;br /&gt;
&lt;br /&gt;
[[Image: RegisterGW_1MasterPBX.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Create two Gateway Objects&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
On this PBX two Gateway Objects must be created. Defaults settings can be used, but each Gateway Object must have a Number.&lt;br /&gt;
In this example we have chosen the Prefix &amp;quot;1&amp;quot; for calls to the SIP Provider and the Prefix &amp;quot;2&amp;quot; for calls to the internal PBX.&lt;br /&gt;
&lt;br /&gt;
[[Image: RegisterGW_2PBX-GatewayObjects.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4. Configure SIP Interface&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
At the SIP Interface to the Provider, nothing special must be configured, please use the Provider specific setting from the Profiles or from the Provider Documentation.&lt;br /&gt;
Only Media Relay must be set to &amp;quot;off&amp;quot; and the internal registration goes to the PBX on its own Gateway.&lt;br /&gt;
&lt;br /&gt;
[[Image: RegisterGW_3SIP-Interface.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4. Modification of the Routes&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Following modification must be done in the Routes&lt;br /&gt;
* The &#039;&#039;&#039;&amp;quot;2&amp;quot;&#039;&#039;&#039; (Prefix of the second Gateway Object in the PBX) &#039;&#039;&#039;must be added&#039;&#039;&#039; before each called Number that goes to the PBX.&lt;br /&gt;
* If there is a default Tone Mapping, it can be disabled or deleted.&lt;br /&gt;
* The &#039;&#039;&#039;&amp;quot;1&amp;quot;&#039;&#039;&#039; (Prefix of the first GW Object in the PBX) &#039;&#039;&#039;must be cut&#039;&#039;&#039; before each called Number that comes from the PBX.&lt;br /&gt;
&lt;br /&gt;
 [[Image: RegisterGW_4Routing.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Configuring the SBC Relay Gateways===&lt;br /&gt;
The following configurations are absolute identical on each Relay Gateway.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;5. Creation of GW Interfaces&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Two &lt;br /&gt;
&lt;br /&gt;
[[Image: RelayGW_1GW-Interfaces.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;6. Creation  of the Routes&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Following&lt;br /&gt;
&lt;br /&gt;
[[Image: RelayGW_2Routing.jpg]]&lt;/div&gt;</summary>
		<author><name>Tru</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:SBC_scaling_for_large_number_of_channels&amp;diff=43988</id>
		<title>Howto:SBC scaling for large number of channels</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:SBC_scaling_for_large_number_of_channels&amp;diff=43988"/>
		<updated>2016-09-02T12:10:15Z</updated>

		<summary type="html">&lt;p&gt;Tru: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Applies To==&lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
* SBC functionality on Gateways or IPVA with v12r1 or later&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Keywords: SBC,  Session Border Controller, scale, scaling, large, number, channels --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==More Information==&lt;br /&gt;
&lt;br /&gt;
===Preamble===&lt;br /&gt;
With the innovaphone SBC, we provide approximately 100 - 200 concurrent Channels per Gateway or IPVA. In bigger Scenarios where a few hundred (or more) Channels are required, several Gateways can be joined to a &amp;quot;Load Balancing Scenario&amp;quot; to provide a large number of Channels.&lt;br /&gt;
&lt;br /&gt;
Also, in most scenarios an additional and dedicated SBC as SIP -Gateway to the Provider is needed (with or w/o registrations), because the most part of SIP Providers accept only one counterpart.&lt;br /&gt;
&lt;br /&gt;
This document describes the principles how to configure such a &amp;quot;Load Balancing Scenario&amp;quot; with reference to an example. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Be aware that this is just an example to explain how it works; maybe it’s a little bit different in your scenarios depending on the SIP Provider!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Function Principle===&lt;br /&gt;
&lt;br /&gt;
The Limitation of the concurrent Channels per Gateway is based on the Media Relay Feature. If this Feature is enabled (and it’s mandatory for the SBC), the Channels are limited.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To bypass this limit, the idea is:&lt;br /&gt;
* to have a dedicated Gateway without Media-Relay. This acts only as Registration Gateway to the SIP Provider. Without Media Relay this Gateway can handle a very large number of calls. We call it &#039;&#039;&#039;&amp;quot;Register-GW&amp;quot;&#039;&#039;&#039; in this document.&lt;br /&gt;
* to use as many Gateways as needed for Media Relay. All calls should be evenly distributed on this Gateway to have a &amp;quot;Load Balance Scenario&amp;quot;. We call them &#039;&#039;&#039;&amp;quot;Relay-GWs&amp;quot;&#039;&#039;&#039; in this document.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Register-GW&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* On the &amp;quot;Register-GW&amp;quot; we need a PBX because only with the PBX we have an evenly distribution to several Gateways. Therefore the PBX must be enabled (Master) on this Gateway, but we need only two Gateway Objects in it. The first is for the registration from the Provider- SIP-Interface (on the same GW) and the second is for all registrations from the &amp;quot;Relay-GWs&amp;quot;.  No other object is needed.&lt;br /&gt;
* The SIP-Interface to the Provider is similar to the SBC of the &amp;quot;Common Scenario&amp;quot;. It has two registrations, one to the SIP Provider and another to the internal PBX. Only Media relay is disabled.&lt;br /&gt;
* The default Routes between SIP Provider and PBX must be adapted.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Relay-GWs&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Relay-GWs&amp;quot; are serving the Media Relay Part in this scenario. On each &amp;quot;Relay-GW&amp;quot; there are two registrations and simple routes between it.&lt;br /&gt;
* One registration to the &amp;quot;Register-GW&amp;quot;- PBX with Media Relay and the same SDP settings like the SIP Interface to the Provider.&lt;br /&gt;
* One registration to the real PBX w/o Media Relay with default settings.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:SBC_scenarios.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Configuration Example==&lt;br /&gt;
&#039;&#039;&#039;The following example shows how a configuration can be done, maybe it’s a little bit different in your scenario. Depending on the SIP Provider and the needed Number Mappings or Routes, there can be a lot of alternative Configurations&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Configuring the Customers regular PBX===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Create a Trunk Object in the regular PBX&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Of Course, in the regular PBX (where usually the Users are registered), a Trunk Object must be existing with the Number for External calls.&lt;br /&gt;
[[Image: RealPBX_1TrunkObject.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Configuring the Registration Gateway===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Enable the PBX on the Register-GW&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
On the same GW where the SBC (SIP Interface to Provider) is configured, a PBX must be created. Any System or PBX Name can be chosen because it’s normally an isolated PBX. But two Port Licenses are needed for the two Gateway registrations.&lt;br /&gt;
[[Image: RegisterGW_1MasterPBX.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Create two Gateway Objects&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
On this PBX two Gateway Objects must be created. Defaults settings can be used, but each Gateway Object must have a Number.&lt;br /&gt;
In this example we have chosen the Prefix &amp;quot;1&amp;quot; for calls to the SIP Provider and the Prefix &amp;quot;2&amp;quot; for calls to the internal PBX.&lt;br /&gt;
[[Image: RegisterGW_2PBX-GatewayObjects.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4. Configure SIP Interface&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
At the SIP Interface to the Provider, nothing special must be configured, please use the Provider specific setting from the Profiles or from the Provider Documentation.&lt;br /&gt;
Only Media Relay must be set to &amp;quot;off&amp;quot; and the internal registration goes to the PBX on its own Gateway.&lt;br /&gt;
[[Image: RegisterGW_3SIP-Interface.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4. Modification of the Routes&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Following modification must be done in the Routes&lt;br /&gt;
* The &#039;&#039;&#039;&amp;quot;2&amp;quot;&#039;&#039;&#039; (Prefix of the second Gateway Object in the PBX) &#039;&#039;&#039;must be added&#039;&#039;&#039; before each called Number that goes to the PBX.&lt;br /&gt;
* If there is a default Tone Mapping, it can be disabled or deleted.&lt;br /&gt;
* The &#039;&#039;&#039;&amp;quot;1&amp;quot;&#039;&#039;&#039; (Prefix of the first GW Object in the PBX) &#039;&#039;&#039;must be cut&#039;&#039;&#039; before each called Number that comes from the PBX.&lt;br /&gt;
 [[Image: RegisterGW_4Routing.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Configuring the SBC Relay Gateways===&lt;br /&gt;
&lt;br /&gt;
[[Image: RelayGW_1GW-Interfaces.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image: RelayGW_2Routing.jpg]]&lt;/div&gt;</summary>
		<author><name>Tru</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=File:RelayGW_2Routing.jpg&amp;diff=43987</id>
		<title>File:RelayGW 2Routing.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=File:RelayGW_2Routing.jpg&amp;diff=43987"/>
		<updated>2016-09-02T11:38:28Z</updated>

		<summary type="html">&lt;p&gt;Tru: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tru</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=File:RelayGW_1GW-Interfaces.jpg&amp;diff=43986</id>
		<title>File:RelayGW 1GW-Interfaces.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=File:RelayGW_1GW-Interfaces.jpg&amp;diff=43986"/>
		<updated>2016-09-02T11:38:15Z</updated>

		<summary type="html">&lt;p&gt;Tru: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tru</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=File:RegisterGW_4Routing.jpg&amp;diff=43985</id>
		<title>File:RegisterGW 4Routing.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=File:RegisterGW_4Routing.jpg&amp;diff=43985"/>
		<updated>2016-09-02T11:38:00Z</updated>

		<summary type="html">&lt;p&gt;Tru: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tru</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=File:RegisterGW_3SIP-Interface.jpg&amp;diff=43984</id>
		<title>File:RegisterGW 3SIP-Interface.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=File:RegisterGW_3SIP-Interface.jpg&amp;diff=43984"/>
		<updated>2016-09-02T11:37:41Z</updated>

		<summary type="html">&lt;p&gt;Tru: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tru</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=File:RegisterGW_2PBX-GatewayObjects.jpg&amp;diff=43983</id>
		<title>File:RegisterGW 2PBX-GatewayObjects.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=File:RegisterGW_2PBX-GatewayObjects.jpg&amp;diff=43983"/>
		<updated>2016-09-02T11:37:23Z</updated>

		<summary type="html">&lt;p&gt;Tru: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tru</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=File:RegisterGW_1MasterPBX.jpg&amp;diff=43982</id>
		<title>File:RegisterGW 1MasterPBX.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=File:RegisterGW_1MasterPBX.jpg&amp;diff=43982"/>
		<updated>2016-09-02T11:37:01Z</updated>

		<summary type="html">&lt;p&gt;Tru: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tru</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=File:RealPBX_1TrunkObject.jpg&amp;diff=43981</id>
		<title>File:RealPBX 1TrunkObject.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=File:RealPBX_1TrunkObject.jpg&amp;diff=43981"/>
		<updated>2016-09-02T11:35:51Z</updated>

		<summary type="html">&lt;p&gt;Tru: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tru</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:SBC_scaling_for_large_number_of_channels&amp;diff=43980</id>
		<title>Howto:SBC scaling for large number of channels</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:SBC_scaling_for_large_number_of_channels&amp;diff=43980"/>
		<updated>2016-09-02T11:33:57Z</updated>

		<summary type="html">&lt;p&gt;Tru: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Applies To==&lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
* SBC functionality on Gateways or IPVA with v12r1 or later&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Keywords: SBC,  Session Border Controller, scale, scaling, large, number, channels --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==More Information==&lt;br /&gt;
&lt;br /&gt;
===Preamble===&lt;br /&gt;
With the innovaphone SBC, we provide approximately 100 - 200 concurrent Channels per Gateway or IPVA. In bigger Scenarios where a few hundred (or more) Channels are required, several Gateways can be joined to a &amp;quot;Load Balancing Scenario&amp;quot; to provide a large number of Channels.&lt;br /&gt;
&lt;br /&gt;
Also, in most scenarios an additional and dedicated SBC as SIP -Gateway to the Provider is needed (with or w/o registrations), because the most part of SIP Providers accept only one counterpart.&lt;br /&gt;
&lt;br /&gt;
This document describes the principles how to configure such a &amp;quot;Load Balancing Scenario&amp;quot; with reference to an example. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Be aware that this is just an example to explain how it works; maybe it’s a little bit different in your scenarios depending on the SIP Provider!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Function Principle===&lt;br /&gt;
&lt;br /&gt;
The Limitation of the concurrent Channels per Gateway is based on the Media Relay Feature. If this Feature is enabled (and it’s mandatory for the SBC), the Channels are limited.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To bypass this limit, the idea is:&lt;br /&gt;
* to have a dedicated Gateway without Media-Relay. This acts only as Registration Gateway to the SIP Provider. Without Media Relay this Gateway can handle a very large number of calls. We call it &#039;&#039;&#039;&amp;quot;Register-GW&amp;quot;&#039;&#039;&#039; in this document.&lt;br /&gt;
* to use as many Gateways as needed for Media Relay. All calls should be evenly distributed on this Gateway to have a &amp;quot;Load Balance Scenario&amp;quot;. We call them &#039;&#039;&#039;&amp;quot;Relay-GWs&amp;quot;&#039;&#039;&#039; in this document.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Register-GW&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* On the &amp;quot;Register-GW&amp;quot; we need a PBX because only with the PBX we have an evenly distribution to several Gateways. Therefore the PBX must be enabled (Master) on this Gateway, but we need only two Gateway Objects in it. The first is for the registration from the Provider- SIP-Interface (on the same GW) and the second is for all registrations from the &amp;quot;Relay-GWs&amp;quot;.  No other object is needed.&lt;br /&gt;
* The SIP-Interface to the Provider is similar to the SBC of the &amp;quot;Common Scenario&amp;quot;. It has two registrations, one to the SIP Provider and another to the internal PBX. Only Media relay is disabled.&lt;br /&gt;
* The default Routes between SIP Provider and PBX must be adapted.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Relay-GWs&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Relay-GWs&amp;quot; are serving the Media Relay Part in this scenario. On each &amp;quot;Relay-GW&amp;quot; there are two registrations and simple routes between it.&lt;br /&gt;
* One registration to the &amp;quot;Register-GW&amp;quot;- PBX with Media Relay and the same SDP settings like the SIP Interface to the Provider.&lt;br /&gt;
* One registration to the real PBX w/o Media Relay with default settings.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:SBC_scenarios.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Configuration Example==&lt;br /&gt;
&lt;br /&gt;
===Configuring the Customers regular PBX===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image: RealPBX_1TrunkObject.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Configuring the Registration Gateway===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image: RegisterGW_1MasterPBX.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image: RegisterGW_2PBX-GatewayObjects.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image: RegisterGW_3SIP-Interface.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image: RegisterGW_4Routing.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Configuring the SBC Relay Gateways===&lt;br /&gt;
&lt;br /&gt;
[[Image: RelayGW_1GW-Interfaces.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image: RelayGW_2Routing.jpg]]&lt;/div&gt;</summary>
		<author><name>Tru</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=File:RealPBX_TrunkObject.jpg&amp;diff=43979</id>
		<title>File:RealPBX TrunkObject.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=File:RealPBX_TrunkObject.jpg&amp;diff=43979"/>
		<updated>2016-09-02T09:33:30Z</updated>

		<summary type="html">&lt;p&gt;Tru: In the customer Real PBX,&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In the customer Real PBX,&lt;/div&gt;</summary>
		<author><name>Tru</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:SBC_scaling_for_large_number_of_channels&amp;diff=43978</id>
		<title>Howto:SBC scaling for large number of channels</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:SBC_scaling_for_large_number_of_channels&amp;diff=43978"/>
		<updated>2016-09-02T09:32:54Z</updated>

		<summary type="html">&lt;p&gt;Tru: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Applies To==&lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
* SBC functionality on Gateways or IPVA with v12r1 or later&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Keywords: SBC,  Session Border Controller, scale, scaling, large, number, channels --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==More Information==&lt;br /&gt;
&lt;br /&gt;
===Preamble===&lt;br /&gt;
With the innovaphone SBC, we provide approximately 100 - 200 concurrent Channels per Gateway or IPVA. In bigger Scenarios where a few hundred (or more) Channels are required, several Gateways can be joined to a &amp;quot;Load Balancing Scenario&amp;quot; to provide a large number of Channels.&lt;br /&gt;
&lt;br /&gt;
Also, in most scenarios an additional and dedicated SBC as SIP -Gateway to the Provider is needed (with or w/o registrations), because the most part of SIP Providers accept only one counterpart.&lt;br /&gt;
&lt;br /&gt;
This document describes the principles how to configure such a &amp;quot;Load Balancing Scenario&amp;quot; with reference to an example. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Be aware that this is just an example to explain how it works; maybe it’s a little bit different in your scenarios depending on the SIP Provider!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Function Principle===&lt;br /&gt;
&lt;br /&gt;
The Limitation of the concurrent Channels per Gateway is based on the Media Relay Feature. If this Feature is enabled (and it’s mandatory for the SBC), the Channels are limited.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To bypass this limit, the idea is:&lt;br /&gt;
* to have a dedicated Gateway without Media-Relay. This acts only as Registration Gateway to the SIP Provider. Without Media Relay this Gateway can handle a very large number of calls. We call it &#039;&#039;&#039;&amp;quot;Register-GW&amp;quot;&#039;&#039;&#039; in this document.&lt;br /&gt;
* to use as many Gateways as needed for Media Relay. All calls should be evenly distributed on this Gateway to have a &amp;quot;Load Balance Scenario&amp;quot;. We call them &#039;&#039;&#039;&amp;quot;Relay-GWs&amp;quot;&#039;&#039;&#039; in this document.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Register-GW&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* On the &amp;quot;Register-GW&amp;quot; we need a PBX because only with the PBX we have an evenly distribution to several Gateways. Therefore the PBX must be enabled (Master) on this Gateway, but we need only two Gateway Objects in it. The first is for the registration from the Provider- SIP-Interface (on the same GW) and the second is for all registrations from the &amp;quot;Relay-GWs&amp;quot;.  No other object is needed.&lt;br /&gt;
* The SIP-Interface to the Provider is similar to the SBC of the &amp;quot;Common Scenario&amp;quot;. It has two registrations, one to the SIP Provider and another to the internal PBX. Only Media relay is disabled.&lt;br /&gt;
* The default Routes between SIP Provider and PBX must be adapted.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Relay-GWs&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Relay-GWs&amp;quot; are serving the Media Relay Part in this scenario. On each &amp;quot;Relay-GW&amp;quot; there are two registrations and simple routes between it.&lt;br /&gt;
* One registration to the &amp;quot;Register-GW&amp;quot;- PBX with Media Relay and the same SDP settings like the SIP Interface to the Provider.&lt;br /&gt;
* One registration to the real PBX w/o Media Relay with default settings.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:SBC_scenarios.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Configuration Example==&lt;br /&gt;
&lt;br /&gt;
===Configuring the Customers regular PBX===&lt;br /&gt;
&lt;br /&gt;
[[Image:RealPBX_TrunkObject.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Configuring the Registration Gateway===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Configuring the SBC Relay Gateways===&lt;/div&gt;</summary>
		<author><name>Tru</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:SBC_scaling_for_large_number_of_channels&amp;diff=43977</id>
		<title>Howto:SBC scaling for large number of channels</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:SBC_scaling_for_large_number_of_channels&amp;diff=43977"/>
		<updated>2016-09-02T09:32:10Z</updated>

		<summary type="html">&lt;p&gt;Tru: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Applies To==&lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
* SBC functionality on Gateways or IPVA with v12r1 or later&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Keywords: SBC,  Session Border Controller, scale, scaling, large, number, channels --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==More Information==&lt;br /&gt;
&lt;br /&gt;
===Preamble===&lt;br /&gt;
With the innovaphone SBC, we provide approximately 100 - 200 concurrent Channels per Gateway or IPVA. In bigger Scenarios where a few hundred (or more) Channels are required, several Gateways can be joined to a &amp;quot;Load Balancing Scenario&amp;quot; to provide a large number of Channels.&lt;br /&gt;
&lt;br /&gt;
Also, in most scenarios an additional and dedicated SBC as SIP -Gateway to the Provider is needed (with or w/o registrations), because the most part of SIP Providers accept only one counterpart.&lt;br /&gt;
&lt;br /&gt;
This document describes the principles how to configure such a &amp;quot;Load Balancing Scenario&amp;quot; with reference to an example. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Be aware that this is just an example to explain how it works; maybe it’s a little bit different in your scenarios depending on the SIP Provider!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Function Principle===&lt;br /&gt;
&lt;br /&gt;
The Limitation of the concurrent Channels per Gateway is based on the Media Relay Feature. If this Feature is enabled (and it’s mandatory for the SBC), the Channels are limited.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To bypass this limit, the idea is:&lt;br /&gt;
* to have a dedicated Gateway without Media-Relay. This acts only as Registration Gateway to the SIP Provider. Without Media Relay this Gateway can handle a very large number of calls. We call it &#039;&#039;&#039;&amp;quot;Register-GW&amp;quot;&#039;&#039;&#039; in this document.&lt;br /&gt;
* to use as many Gateways as needed for Media Relay. All calls should be evenly distributed on this Gateway to have a &amp;quot;Load Balance Scenario&amp;quot;. We call them &#039;&#039;&#039;&amp;quot;Relay-GWs&amp;quot;&#039;&#039;&#039; in this document.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Register-GW&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* On the &amp;quot;Register-GW&amp;quot; we need a PBX because only with the PBX we have an evenly distribution to several Gateways. Therefore the PBX must be enabled (Master) on this Gateway, but we need only two Gateway Objects in it. The first is for the registration from the Provider- SIP-Interface (on the same GW) and the second is for all registrations from the &amp;quot;Relay-GWs&amp;quot;.  No other object is needed.&lt;br /&gt;
* The SIP-Interface to the Provider is similar to the SBC of the &amp;quot;Common Scenario&amp;quot;. It has two registrations, one to the SIP Provider and another to the internal PBX. Only Media relay is disabled.&lt;br /&gt;
* The default Routes between SIP Provider and PBX must be adapted.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Relay-GWs&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Relay-GWs&amp;quot; are serving the Media Relay Part in this scenario. On each &amp;quot;Relay-GW&amp;quot; there are two registrations and simple routes between it.&lt;br /&gt;
* One registration to the &amp;quot;Register-GW&amp;quot;- PBX with Media Relay and the same SDP settings like the SIP Interface to the Provider.&lt;br /&gt;
* One registration to the real PBX w/o Media Relay with default settings.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:SBC_scenarios.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Configuration Example==&lt;br /&gt;
&lt;br /&gt;
===Configuring the Customers regular PBX===&lt;br /&gt;
&lt;br /&gt;
[[RealPBX_TrunkObject.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Configuring the Registration Gateway===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Configuring the SBC Relay Gateways===&lt;/div&gt;</summary>
		<author><name>Tru</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:SBC_scaling_for_large_number_of_channels&amp;diff=43975</id>
		<title>Howto:SBC scaling for large number of channels</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:SBC_scaling_for_large_number_of_channels&amp;diff=43975"/>
		<updated>2016-09-01T14:01:14Z</updated>

		<summary type="html">&lt;p&gt;Tru: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Applies To==&lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
* SBC functionality on Gateways or IPVA with v12r1 or later&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Keywords: SBC,  Session Border Controller, scale, scaling, large, number, channels --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==More Information==&lt;br /&gt;
&lt;br /&gt;
===Preamble===&lt;br /&gt;
With the innovaphone SBC, we provide approximately 100 - 200 concurrent Channels per Gateway or IPVA. In bigger Scenarios where a few hundred (or more) Channels are required, several Gateways can be joined to a &amp;quot;Load Balancing Scenario&amp;quot; to provide a large number of Channels.&lt;br /&gt;
&lt;br /&gt;
Also, in most scenarios an additional and dedicated SBC as SIP -Gateway to the Provider is needed (with or w/o registrations), because the most part of SIP Providers accept only one counterpart.&lt;br /&gt;
&lt;br /&gt;
This document describes the principles how to configure such a &amp;quot;Load Balancing Scenario&amp;quot; with reference to an example. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Be aware that this is just an example to explain how it works; maybe it’s a little bit different in your scenarios depending on the SIP Provider!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Function Principle===&lt;br /&gt;
&lt;br /&gt;
The Limitation of the concurrent Channels per Gateway is based on the Media Relay Feature. If this Feature is enabled (and it’s mandatory for the SBC), the Channels are limited.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To bypass this limit, the idea is:&lt;br /&gt;
* to have a dedicated Gateway without Media-Relay. This acts only as Registration Gateway to the SIP Provider. Without Media Relay this Gateway can handle a very large number of calls. We call it &#039;&#039;&#039;&amp;quot;Register-GW&amp;quot;&#039;&#039;&#039; in this document.&lt;br /&gt;
* to use as many Gateways as needed for Media Relay. All calls should be evenly distributed on this Gateway to have a &amp;quot;Load Balance Scenario&amp;quot;. We call them &#039;&#039;&#039;&amp;quot;Relay-GWs&amp;quot;&#039;&#039;&#039; in this document.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Register-GW&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* On the &amp;quot;Register-GW&amp;quot; we need a PBX because only with the PBX we have an evenly distribution to several Gateways. Therefore the PBX must be enabled (Master) on this Gateway, but we need only two Gateway Objects in it. The first is for the registration from the Provider- SIP-Interface (on the same GW) and the second is for all registrations from the &amp;quot;Relay-GWs&amp;quot;.  No other object is needed.&lt;br /&gt;
* The SIP-Interface to the Provider is similar to the SBC of the &amp;quot;Common Scenario&amp;quot;. It has two registrations, one to the SIP Provider and another to the internal PBX. Only Media relay is disabled.&lt;br /&gt;
* The default Routes between SIP Provider and PBX must be adapted.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Relay-GWs&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Relay-GWs&amp;quot; are serving the Media Relay Part in this scenario. On each &amp;quot;Relay-GW&amp;quot; there are two registrations and simple routes between it.&lt;br /&gt;
* One registration to the &amp;quot;Register-GW&amp;quot;- PBX with Media Relay and the same SDP settings like the SIP Interface to the Provider.&lt;br /&gt;
* One registration to the real PBX w/o Media Relay with default settings.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:SBC_scenarios.jpg]]&lt;/div&gt;</summary>
		<author><name>Tru</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:SBC_scaling_for_large_number_of_channels&amp;diff=43974</id>
		<title>Howto:SBC scaling for large number of channels</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:SBC_scaling_for_large_number_of_channels&amp;diff=43974"/>
		<updated>2016-09-01T14:00:18Z</updated>

		<summary type="html">&lt;p&gt;Tru: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Applies To==&lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
* SBC functionality on Gateways or IPVA with v12r1 or later&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Keywords: SBC,  Session Border Controller, scale, scaling, large, number, channels --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==More Information==&lt;br /&gt;
&lt;br /&gt;
===Preamble===&lt;br /&gt;
With the innovaphone SBC, we provide approximately 100 - 200 concurrent Channels per Gateway or IPVA. In bigger Scenarios where a few hundred (or more) Channels are required, several Gateways can be joined to a &amp;quot;Load Balancing Scenario&amp;quot; to provide a large number of Channels.&lt;br /&gt;
&lt;br /&gt;
Also, in most scenarios an additional and dedicated SBC as SIP -Gateway to the Provider is needed (with or w/o registrations), because the most part of SIP Providers accept only one counterpart.&lt;br /&gt;
&lt;br /&gt;
This document describes the principles how to configure such a &amp;quot;Load Balancing Scenario&amp;quot; with reference to an example. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Be aware that this is just an example to explain how it works; maybe it’s a little bit different in your scenarios depending on the SIP Provider!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Function Principle===&lt;br /&gt;
&lt;br /&gt;
The Limitation of the concurrent Channels per Gateway is based on the Media Relay Feature. If this Feature is enabled (and it’s mandatory for the SBC), the Channels are limited.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To bypass this limit, the idea is:&lt;br /&gt;
&lt;br /&gt;
* to have a dedicated Gateway without Media-Relay. This acts only as Registration Gateway to the SIP Provider. Without Media Relay this Gateway can handle a very large number of calls.&lt;br /&gt;
We call it &#039;&#039;&#039;&amp;quot;Register-GW&amp;quot;&#039;&#039;&#039; in this document.&lt;br /&gt;
* to use as many Gateways as needed for Media Relay. All calls should be evenly distributed on this Gateway to have a &amp;quot;Load Balance Scenario&amp;quot;.&lt;br /&gt;
We call them &#039;&#039;&#039;&amp;quot;Relay-GWs&amp;quot;&#039;&#039;&#039; in this document.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Register-GW&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* On the &amp;quot;Register-GW&amp;quot; we need a PBX because only with the PBX we have an evenly distribution to several Gateways. Therefore the PBX must be enabled (Master) on this Gateway, but we need only two Gateway Objects in it. The first is for the registration from the Provider- SIP-Interface (on the same GW) and the second is for all registrations from the &amp;quot;Relay-GWs&amp;quot;.  No other object is needed.&lt;br /&gt;
* The SIP-Interface to the Provider is similar to the SBC of the &amp;quot;Common Scenario&amp;quot;. It has two registrations, one to the SIP Provider and another to the internal PBX. Only Media relay is disabled.&lt;br /&gt;
* The default Routes between SIP Provider and PBX must be adapted.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Relay-GWs&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Relay-GWs&amp;quot; are serving the Media Relay Part in this scenario. On each &amp;quot;Relay-GW&amp;quot; there are two registrations and simple routes between it.&lt;br /&gt;
* One registration to the &amp;quot;Register-GW&amp;quot;- PBX with Media Relay and the same SDP settings like the SIP Interface to the Provider.&lt;br /&gt;
* One registration to the real PBX w/o Media Relay with default settings.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:SBC_scenarios.jpg]]&lt;/div&gt;</summary>
		<author><name>Tru</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=File:SBC_scenarios.jpg&amp;diff=43973</id>
		<title>File:SBC scenarios.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=File:SBC_scenarios.jpg&amp;diff=43973"/>
		<updated>2016-09-01T13:56:50Z</updated>

		<summary type="html">&lt;p&gt;Tru: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tru</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:SBC_scaling_for_large_number_of_channels&amp;diff=43972</id>
		<title>Howto:SBC scaling for large number of channels</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:SBC_scaling_for_large_number_of_channels&amp;diff=43972"/>
		<updated>2016-09-01T13:56:29Z</updated>

		<summary type="html">&lt;p&gt;Tru: New page: ==Applies To== This information applies to  * SBC functionality on Gateways or IPVA with v12r1 or later  &amp;lt;!-- Keywords: SBC,  Session Border Controller, scale, scaling, large, number, chan...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Applies To==&lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
* SBC functionality on Gateways or IPVA with v12r1 or later&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Keywords: SBC,  Session Border Controller, scale, scaling, large, number, channels --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==More Information==&lt;br /&gt;
&lt;br /&gt;
===Preamble===&lt;br /&gt;
With the innovaphone SBC, we provide approximately 100 - 200 concurrent Channels per Gateway or IPVA. In bigger Scenarios where a few hundred (or more) Channels are required, several Gateways can be joined to a &amp;quot;Load Balancing Scenario&amp;quot; to provide a large number of Channels.&lt;br /&gt;
&lt;br /&gt;
Also, in most scenarios an additional and dedicated SBC as SIP -Gateway to the Provider is needed (with or w/o registrations), because the most part of SIP Providers accept only one counterpart.&lt;br /&gt;
&lt;br /&gt;
This document describes the principles how to configure such a &amp;quot;Load Balancing Scenario&amp;quot; with reference to an example. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Be aware that this is just an example to explain how it works; maybe it’s a little bit different in your scenarios depending on the SIP Provider!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Function Principle===&lt;br /&gt;
&lt;br /&gt;
The Limitation of the concurrent Channels per Gateway is based on the Media Relay Feature. If this Feature is enabled (and it’s mandatory for the SBC), the Channels are limited.&lt;br /&gt;
&lt;br /&gt;
To bypass this limit, the idea is&lt;br /&gt;
* to have a dedicated Gateway without Media-Relay. This acts only as Registration Gateway to the SIP Provider. Without Media Relay this Gateway can handle a very large number of calls.&lt;br /&gt;
We call it &#039;&#039;&#039;&amp;quot;Register-GW&amp;quot;&#039;&#039;&#039; in this document.&lt;br /&gt;
* to use as many Gateways as needed for Media Relay. All calls should be evenly distributed on this Gateway to have a &amp;quot;Load Balance Scenario&amp;quot;.&lt;br /&gt;
We call them &#039;&#039;&#039;&amp;quot;Relay-GWs&amp;quot;&#039;&#039;&#039; in this document.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Register-GW&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* On the &amp;quot;Register-GW&amp;quot; we need a PBX because only with the PBX we have an evenly distribution to several Gateways. Therefore the PBX must be enabled (Master) on this Gateway, but we need only two Gateway Objects in it. The first is for the registration from the Provider- SIP-Interface (on the same GW) and the second is for all registrations from the &amp;quot;Relay-GWs&amp;quot;.  No other object is needed.&lt;br /&gt;
* The SIP-Interface to the Provider is similar to the SBC of the &amp;quot;Common Scenario&amp;quot;. It has two registrations, one to the SIP Provider and another to the internal PBX. Only Media relay is disabled.&lt;br /&gt;
* The default Routes between SIP Provider and PBX must be adapted.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Relay-GWs&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Relay-GWs&amp;quot; are serving the Media Relay Part in this scenario. On each &amp;quot;Relay-GW&amp;quot; there are two registrations and simple routes between it.&lt;br /&gt;
* One registration to the &amp;quot;Register-GW&amp;quot;- PBX with Media Relay and the same SDP settings like the SIP Interface to the Provider.&lt;br /&gt;
* One registration to the real PBX w/o Media Relay with default settings.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:SBC_scenarios.jpg]]&lt;/div&gt;</summary>
		<author><name>Tru</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=File:Outlook.jpg&amp;diff=43693</id>
		<title>File:Outlook.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=File:Outlook.jpg&amp;diff=43693"/>
		<updated>2016-08-16T16:21:53Z</updated>

		<summary type="html">&lt;p&gt;Tru: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tru</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=File:Thunderbird.jpg&amp;diff=43692</id>
		<title>File:Thunderbird.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=File:Thunderbird.jpg&amp;diff=43692"/>
		<updated>2016-08-16T16:21:27Z</updated>

		<summary type="html">&lt;p&gt;Tru: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Tru</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:Faxserver_with_Mailclients&amp;diff=43691</id>
		<title>Howto:Faxserver with Mailclients</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:Faxserver_with_Mailclients&amp;diff=43691"/>
		<updated>2016-08-16T16:21:14Z</updated>

		<summary type="html">&lt;p&gt;Tru: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;These are examples howto setup the Mail-Clients for direct Faxserver access.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example for Thunderbird:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Image:Thunderbird.jpg]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example for Outlook:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Image:Outlook.jpg]]&lt;/div&gt;</summary>
		<author><name>Tru</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:Faxserver_with_Mailclients&amp;diff=43690</id>
		<title>Howto:Faxserver with Mailclients</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:Faxserver_with_Mailclients&amp;diff=43690"/>
		<updated>2016-08-16T16:17:50Z</updated>

		<summary type="html">&lt;p&gt;Tru: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;These are examples howto setup the Mail-Clients for direct Faxserver access.&lt;br /&gt;
&lt;br /&gt;
Example for Thunderbird:&lt;br /&gt;
&lt;br /&gt;
[[Image:Example.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example for Outlook:&lt;br /&gt;
&lt;br /&gt;
[[Image:Example.jpg]]&lt;/div&gt;</summary>
		<author><name>Tru</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:Faxserver_with_Mailclients&amp;diff=43689</id>
		<title>Howto:Faxserver with Mailclients</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:Faxserver_with_Mailclients&amp;diff=43689"/>
		<updated>2016-08-16T16:13:56Z</updated>

		<summary type="html">&lt;p&gt;Tru: New page: These are examples howto setup the Mail-Clients for direct Faxserver access.  Example for Thunderbird: Image:Example.jpg  Example for Outlook: Image:Example.jpg&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;These are examples howto setup the Mail-Clients for direct Faxserver access.&lt;br /&gt;
&lt;br /&gt;
Example for Thunderbird:&lt;br /&gt;
[[Image:Example.jpg]]&lt;br /&gt;
&lt;br /&gt;
Example for Outlook:&lt;br /&gt;
[[Image:Example.jpg]]&lt;/div&gt;</summary>
		<author><name>Tru</name></author>
	</entry>
</feed>