How to externalise Administration and Reporting applications

How to externalise Administration and Reporting applications

The purpose of this article is to explain how to externalise the “Admin” and “Reporting” application. This allows to move CPU intensive administration loading and report compilation on a remote application server.

In the steps below, the assumption is made that the current application server will be referred as SERVER A and the new application server as SERVER B.

1.    Prerequisites
1.1. General prerequisites:
The related documentation is available online here.

1.2. The latest installation files of the V2.x:
You can find them at the following address: http://update.nixxis.net/
Note: you need an account for accessing this web site. If you do not have one, ask it to support@nixxis.com

1.3. A running SQL Server with the reporting services:
Check the documentation: How to install Microsoft SQL Server for the prerequisites and the required configuration of the SQL Server.

2.   Best practices
When downloading the installation files, always try to structure the folders this way:
  1. Create a folder “Nixxis
    1. Create a folder “NixxisMaintenance” (prefer the root of a disk drive for a better visibility).
  2. Create the subfolders “Install”, “BackUp” and “Update
  3. Each time you download installation files, create a subfolder inside the “Install” folder with the international date format “YYYYMMDD”.
Same remark when you are doing backups or updates.

3.   Installation
You can follow the Installation and configuration procedure for the deployment of an application server : SERVER B.
Note: The NCS version V2.x of SERVER B must be in the same version as SERVER A.
 
3.1. Install the service
The CrAppserver SERVER B is to be installed in a minimal state with the following application:
  1. Dispatcher
  2. Admin
  3. Reporting 
http.config (SERVER B)
 
3.1.1. Domain and Host
Domain: contains the instance name
Host: IP interfaces or DNS entry to be able to access the server with the NCS client or other application using HTTP protocol. HTTP server will only accept the host(s) inside this key. Example:

 
<domain id="Default" domainType="http" host=" xxx.xxx.xx.xxx:8088" type="HttpProcessor" sessionType="ContactRoute.ApplicationServer.SessionMaster, CRClientSession" maxEventsQueueLength="50000"
connectionString="user ID=sa;password=YOURPASSWORD;Persist Security Info=False;Data Source=DATASOURCE_NAME;Initial Catalog={0}_{1}"  extendedConnectionString="Integrated Security=No;User ID=sa;Password=YOURPASSWORD;">
 
where xxx.xxx.xx.xxx represent the IP address of SERVER B
 
Add the credential block.
 
    <credentials>
    <add key="admin" credential="Admin:YOURPASSWORD" roles="NixxisAdminRole"/>
    <add credential="Reporting:Rep0rting" roles="NixxisReportingRole"/>
    </credentials>
 
Each host is separated by a semi-colon.
 
3.1.2. Dispatcher
Add the dispatcher application


   

<application id="dispatcher" name="Dispatcher" type="ContactRoute.Dispatcher.DispatcherApp, CRDispatcherLink" preload="true"  debug="true" serviceId="dispatcher">

      <add key="dispatcherRepositoryType" value="ContactRoute.Dispatcher.DispatcherSqlRepository, CRDispatcherLink" />

    </application> 

 
3.1.3. Admin 
Add the admin application.
Adapt the key reportServerUrl
 
  <add key="reportServerUrl" value="http:// xxx.xxx.xx.xxx/ReportServer"/>
 
where xxx.xxx.xx.xxx represent the IP address of SERVER A





    <application id="admin" name="CrAdmin" type="NixxisAdminApp" preload="true" sessionLess="true" serviceId="admin,signon" debug="true">

      <add key="campaignDatabasePatern" value="{0}_Data_"/>
 

      <add key="reportServerUrl" value="http://localhost/ReportServer"/>

      <add key="reportsBasePath" value="Nixxis administrator"/>

      <add key="reportsStatsBasePath" value="/"/>
 

      <add key="maintenanceTime" value="0200"/>

      <add key="maintenanceBackupPath" value="{0}.bak"/>
 

      <add key="pathSounds" value="HomeSounds\{0}"/>

      <add key="pathMoh" value="HomeSounds\{0}\Moh\"/>

      <add key="pathConfigs" value="HomeSounds\{0}\Configs\"/>

      <add key="pathAttachments" value="Attachments\{0}"/>

      <add key="pathImportExports" value="ImportExports\{0}"/>

      <add key="soundsSync" value="/home/soundsv2/{1}/"/>

      <add key="mohSync" value="/srv/www/lighttpd/MohReload"/>
 

      <add key="socialNetworkActive" value="false"/>
 

      <add key="basicSchema" value="Main.xsd"/>

      <add key="referencesSchema" value="References.xsd"/>

      <add key="ignoreValidationErrors" value="false"/>

    </application>

 
3.1.4. Reporting
Add the reporting application.
Adapt the connection string key.
 
  <add key="ReportingDatabaseConnectionString" value="User ID=sa;Password=zzz;Data Source= xxx.xxx.xx.xxx;Initial Catalog=ContactRouteReport" />
  <add key="NixxisReportingDatabaseConnectionString" value="User ID=sa;Password=zzz;Data Source= xxx.xxx.xx.xxx;Initial Catalog=NixxisReporting" />

where xxx.xxx.xx.xxx represent the IP address of SERVER B

 

<application id="reporting" name="CrReporting" type="NixxisReportingApp" preload="true" sessionLess="true" debug="true">

      <add key="ReportingDatabaseConnectionString" value="Initial Catalog={0}_ContactRouteReport"/>
      <add key="NixxisReportingDatabaseConnectionString" value="Initial Catalog={0}_NixxisReporting"/>
      <add key="StateMachineFolder" value="{0}_{1}"/>
 
      <add key="version" value="2"/>
      <add key="Statemachine_InsertInToAgentStat" value="true"/>
      <add key="Statemachine_InsertInToAgentStates" value="true"/>
      <add key="Statemachine_InsertInToAgentActions" value="true"/>
      <add key="EventLoadingCycle" value="10000"/>
      <add key="EventLoadingCycleMax" value="60000"/>
      <add key="EventLoadingCycleIncreaseTime" value="5000"/>
      <add key="EventLoadingCycleTries" value="3"/>
      <add key="EventSqlQueryWrnTime" value="-1"/>
      <add key="SaveIvrInfo" value="true"/>
      <add key="AgentSplitWaitingVoiceState" value="false"/>
 
      <add key="Debug_Global" value="true"/>
      <add key="Debug_StateMachine" value="false"/>
      <add key="Debug_DispatcherPublisher" value="false"/>
      <add key="Debug_DispatcherClientTriggers" value="false"/>
      <add key="Debug_Database" value="false"/>
      <add key="Debug_EventServer" value="false"/>
      <add key="Debug_LevelDebug" value="false"/>
      <add key="Debug_LevelInfo" value="false"/>
      <add key="Debug_LevelWarning" value="false"/>
      <add key="Debug_LevelError" value="true"/>
      <add key="Debug_LevelCritical" value="true"/>

    </application>
 
 
3.1.5. Add the ticket integration add-on (if applicable - here for example: SuperOffice)
 

<application id="superoffice" name="SuperOffice" type="SuperOfficeTicketsController" debug="false" sessionLess="true" preload="true">

        <add key="connectionString" value="user ID=sa;password=PASSWORD;Persist Security Info=True;Data Source=DATASOURCE_NAME;Initial Catalog=Default_Integration" />

        <add key="sp_ListNextTicketsName" value="SO_ListNextTicketsPerCategory" />

        <!--NumberOfTickets = max number of polled tickets from SO-->

    <add key="NumberOfTickets" value="10000" />

                            <!--pollingTime = in ms -->

        <add key="pollingTime" value="60000" />

                    <!--PreferredAgentWaitTime = in s -->

<add key="PreferredAgentWaitTime" value="120" />

        <add key="sp_VerifyTicketName" value="SO_VerifyTicket" />

          <!--MaxNumberOfEnqueuedTickets = per queue -->

<add key="MaxNumberOfEnqueuedTickets" value="1" />                  

</application>

 
3.2. Install the service
Execute CrAppServer.exe to install the application server
 
DRIVE:\Nixxis\CrAppServer
CrAppServer.exe -install
 
4.   Updating current installation
 
http.config (SERVER A)
 
4.1. Update the service

4.1.1. Admin application
Add the following tags under the Admin application in the http.config file (SERVER A)
 
  <add key="externalLoad" value="http://xxx.xxx.xx.xxx:8088"/>  
  <add key="notifyChanges" value="
http:// xxx.xxx.xx.xxx:8088/admin?action=reload"/>
 
where xxx.xxx.xx.xxx represent the IP address of SERVER B
 


4.1.2. Reporting application
Comment out the whole block of the Reporting application in the http.config (SERVER A)


4.2. Restart the service
The CrAppServer.exe service (SERVER A) needs to restart so the changes take effect.
 
DRIVE:\Nixxis\CrAppServer
net stop crappserver
net start crappserver
    • Related Articles

    • How to add .rdl report to NCS Reporting Interface

      Introduction The purpose of this article is to give an overview on how to add .rdl report to Nixxis Contact Suite (NCS) Reporting Interface, and includes the detailed basic steps/required settings to:    1. Upload the .rdl file to the SQL Reporting ...
    • Resources, Calls, Load balancing

      1.    Introduction  The purpose of this article is to describe the Nixxis Contact Suite (NCS) behaviors about call distribution between multiple media servers, and covers:    a. Behaviors in case of Inbound traffic for:  • Location of new calls  • ...
    • Module Administration V3.0 FR

      Introduction Cet article a pour but de détailler les fonctionnalités du module administration de l'outil NCS. Accès à l'interface Une fois l’application démarrée, choisissez via le sélecteur de module, l’interface administrateur. Page d'Accueil Une ...
    • Reporting Module V3.0

      Introduction The purpose of this article is to describe the available settings for the statistics module. Interface Access Once the application is started, choose via the module selector, the statistics tool interface. Home Page There are several ...
    • Best practices

      1.    Introduction  This article explains important changes that have been included in NCS 2.1. It provides information about installation of new servers but also about upgrading an existing system.  2.    Application server connection strings  ...