Architecture and Technology

Table of Contents

 

Overview

This document describes the technology and software architecture of CRM.COM, the CRM, Billing and Rewards application of CRM.COM.  It also explains the different development and application integration approaches that can be followed by CRM.COM or 3rd party companies.


Architecture

CRM.COM is purely developed on the J2EE (Java 2 Enterprise Edition) platform. The J2EE platform uses a distributed multitiered application model for enterprise applications.

Application logic is divided into components according to their function, and the various application components that make up a J2EE application are installed on different machines depending on the tier in the multitiered J2EE environment to which the application component belongs.

 

Diagram 1: CRM.COM Logical Tiers Diagram

The four logical tiers shown on Diagram 1 are mapped to J2EE Components.

  • Client-tier components run on the client machine.
  • Web-tier components run on the J2EE server.
  • Business-tier components run on the J2EE server.
  • Enterprise information system (EIS)-tier software runs on the EIS server.

 

Client Tier

The client tier consists of application logic accessed directly by an end user through a user interface.

CRM.COM application clients are thin clients. It delivers web content to the client tier that consists of pure HTML, CSS and Javascript. 

There is no execution of any complex business rules, or connection to any legacy applications. These heavyweight operations are off-loaded to the enterprise beans executing on the J2EE server, where the security, performance, services and reliability of J2EE server-side technologies are leveraged. In addition, it provides high usability by making use of the AJAX technology.

Web or Presentation Tier

The presentation tier consists of application logic that prepares data for delivery to the client tier and processes requests from the client tier for delivery to back-end business logic.

CRM.COM web tier consists of a combination of JSP pages, Servlets and Java objects. More specifically, CRM.COM user interface pages are described using XML documents. CRM.COM page generator parses these XML documents and generates the required client code which is delivered to the client's browser using JSP and Servlet technologies. 

Business Service Tier

The business service tier consists of logic that performs the main functions of the application: processing data, implementing business rules, coordinating multiple users, and managing external resources such as databases or legacy systems.

CRM.COM business logic is completely implemented using EJBs which are running under the EJB container of the application server. More specifically, the business logic is implemented using Stateless Session Beans that provide transactionality by completely handling the database transactions. EJB classes receive the events from the Web tier, process the events by applying the business rules based on the data retrieved from the Data tier by Hibernate / JDBC and save the data to the Data tier using Hibernate ORM.

Enterprise information system Tier or Data Tier

The data tier consists of data used by business logic.

CRM.COM data tier consists of a common database for all organizations called eCenter and one database per organization.

All the organization databases are linked through the eCenter database.

 

Although a J2EE application can consist of four tiers as shown on Diagram 1, J2EE multitiered applications are generally considered to be three-tiered applications because they are distributed over three locations: client machines, the J2EE server machine, and the database at the back end. 

 

Diagram 2: J2EE Three-tiered Application Diagram

 

Technology

CRM.COM is completely developed using the Java programming language, SQL and XML.

It is running on a JVM that provides the benefit of code portability and thus can be deployed on any operating system that supports a Java Runtime Environment. 

Frameworks

CRM.COM integrates the frameworks below.

Apache Struts 2

An open source framework for building Servlet/JSP based web applications based on the Model-View-Controller (MVC) design paradigm.

CRM.COM uses Apache Struts to map the User Interface requests to specific business actions.

Hibernate ORM

Hibernate is an Object/Relational Mapping (ORM) framework that enables developers to easily write applications whose data outlives the application process.

CRM.COM uses Hibernate for data persistence. All CRM.COM domain objects are mapped to database tables using Hibernate to maximize reusability and minimize the dependencies with a specific database engine.


Tools

The following tools are integrated with CRM.COM:

Pentaho Data Integration

 An ETL (Extract - Transform - Load) tool that can be used by third-party developers to import, transform and export data from/to CRM.COM. CRM.COM provides a user interface to easily execute Pentaho scripts and view the results.  

Libraries & Third-party Components:

  • JasperReports - a reporting library which is embedded in CRM.COM to produce reports in various formats such as HTML, PDF and XLS.
  • JFreeChart - a chart library used to generate charts included in CRM.COM dashboards.
  • Liquibase - a library used to apply and keep track of database changes.
  • Quartz Scheduler - a job scheduling library used by CRM.COM to schedule and execute batch processes.
  • ANTLR - a powerful parser generator for reading, processing, executing, or translating structured text or binary files. It is used to implement the CRM.COM Query Language.


Third-party System Integrations

The following systems are integrated with CRM.COM.

LDAP & Active Directory

CRM.COM is integrated with LDAP/Active Directory servers. It can be setup to authenticate users based on the parameters specified on the configured LDAP/Active Directory server.

Email (SMTP) Server

CRM.COM can be configured to send email notifications and alerts using a SMTP server.

SMS Providers

CRM.COM can be configured to send SMS messages using the SMPP protocol. It is also integrated with CM SMS Gateway.

Asterisk

CRM.COM is integrated with Asterisk, software implementation of a telephone private branch exchange (PBX). It can be configured to receive telephony events from an Asterisk server and notify the logged-in users.

Payment Gateways

CRM.COM is integrated with Stripe and PayPal Payment Gateways and can be configured to send/receive payment information. Additionally CRM.COM can be integrated to any payment gateway through the functionality provided by the Generic payment gateway providers module.

Provisioning Providers

CRM.COM is integrated with more than 10 provisioning providers including CONAX, Nagra Verimatrix, Irdeto, Sumavision. It enables an organization to send subscription related events to these providers and update the subscriber records based on a provider's response.

Zapier

CRM.COM is integrated to Zapier, a web tool that connects and moves information between web apps, automating tedious tasks in the process.  It can be configured to manage payments contacts and communications between you and your customers.

WEB API

The CRM.COM Web API allows third party systems (mobile apps, portals, device apps etc.) to interact with CRM.COM by performing all the business processes provided by CRM.COM as well as accessing important business rules that are defined within CRM.COM. 

Various applications were already implemented using the Web API library provided by CRM.COM such as:

  • Web portals for customers or partners
  • E-stores
  • Payment Systems
  • POS
  • Installer applications
  • Mobile applications for customers dealers or installers
  • Roku box applications used for registration


Recommended Infrastructure

CRM.COM supports the following software and can be deployed on the following systems.

Supported Operating Systems

CRM.COM application can be deployed on the following operating systems:

  • Microsoft Windows Server Edition
  • Any distribution of Linux. However, we recommend Red Hat Enterprise edition

Supported Database Engines

The following database engines are supported by CRM.COM application.

  • Oracle
  • IBM DB2 
  • Microsoft SQL Server
  • PostgreSQL

Supported Application Servers

CRM.COM can be installed on the following J2EE servers:

  • IBM Websphere
  • Wildfly

Supported Web Browsers

CRM.COM supports any web browser version that is compatible with HTML5, CSS3 and jQuery.

However, it is tested on the following web browsers:

  • Google Chrome
  • Mozilla Firefox
  • Microsoft Internet Explorer
  • Safari


Integration and Customization

CRM.COM is fully customizable and can be easily integrated with other systems and devices.

Web API

CRM.COM Service Oriented Architecture provides more than 350 RESTful Web API methods that can be used to easily integrate with other 3rd party systems.

CRM.COM Web API is implemented using JAX-RS (Java API for RESTful Web Services) specification that provides support in creating web services according to the Representational State Transfer (REST) architectural pattern. All Web API requests and responses are implemented using the JSON notation that can be used in any programming or scripting language.

CRM.COM SDK and Java API

CRM.COM provides an SDK that can be used to extend and customize the user interface, create custom analytics and ETL scripts using Pentaho, create custom Web APIs, as well as to extend the business functionality with Java classes using its component-based Java API.

Extensive development documentation is provided with best practices and examples that can be used to easily develop customizations and plugins.   


Performance and Security

CRM.COM is designed to deliver high performance, scalability and maximum security.

Performance

CRM.COM batch processes are multi-threaded and perform with high processing rate on minimum hardware that increases as the allocated hardware resources are increased.

The web content delivered to web browsers is compressed and cached to achieve small response times per request and the server side processing is optimized to respond to each request within a maximum of a 1 second period. With the use of a load balancer, high rate of requests can be distributed to multiple instances of CRM.COM to achieve small response times and linear scalability.

During testing, advanced profiling tools are used to make sure that CRM.COM is fully scalable and there are no blockers that affect the performance as the data grows.

Moreover, CRM.COM Web API is implemented in such a way that integrators can specify the information expected in responses to minimize the response data size and thus, maximize the performance.

Security

CRM.COM is designed, developed and tested with security awareness.

It is continuously tested against OWASP recommendations with manual and automated testing using Acunetix Web Scanner.

CRM.COM User Interface and Web API are implemented using security measures and tokens to prevent the most common security vulnerabilities such as XSS, CSRF, etc. It can be configured to operate over encrypted connections (HTTPS) and the Web API authentication tokens follow the JWT standard for additional security checks.

In addition, all sensitive data such as user passwords and credentials are stored in the database in an encrypted form using secure algorithms which are continuously reviewed.

Furthermore, CRM.COM is designed so it can be configured to allow or deny access to specific operations and data depending on the user's profile.

Lastly, CRM.COM provides an audit trail mechanism that can be configured to keep audit log of various record types.