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, a 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.