A Solution For Omni-Channel In Customer Communications Management

Created by: FPT Software Solution Specialists, Mr. Phan Trong Bach, Mr. Tran Thien Thinh.

Customer Communications Management (CCM)

From Wikipedia “Customer Communications Management (CCM) is a software to enable companies to manage customer communications across a wide range of media including printed documents, email, web pages and text messages”.

CCM solutions have been used mostly by the companies in banking and insurance areas where its initial concepts focus on the utilization of transactional documents. Without a proper IT solution for analyzing data and managing document, this mission seems to be very hard. By the time, rather than just management and data analysis, the scope of CCM solutions has been rapidly grown. There are more and more CCM solutions which have been implemented for fulfill the needs of each organization.

Now, CCM becomes an important term and companies must invest to have a proper strategy to improve the creation, delivery, storage and retrieval for all kinds of communication with their customers. During research, Forrester – an American market research company – has developed the Customer Experience Index to measure and evaluate different factors that can impact to customer experiences across different industries. The results are below:

As we can see, a proper CCM solution will ensure good experiences for customer and experiences are the basis for how the companies will compete and win in the market”.

Omni Channel in CCM

Channel or “channel strategy” is an important factor and always a hot topic when talking about CCM. It plays the role of a bridge between a company and its customers and therefore builds up customer engagement. A Company engages its customer through variety of channels such as physical papers, SMS, email, mobile, etc. Omni channel strategy ensures that the experiences will be consistent and seamless across the channels.

A real Omni Channel case study

Talking about a real case study of Omni Channel, let’s consider the following context to understand the business case.

A is a well-known European software company focusing on the solutions for Service Providers and their Enterprise users to deliver communication to the end customers in the Logistics industry.

During service usage, they found out some more business needs, that Service Provider and Enterprise user want to

  • Configure and manage communication by themselves or by some rule defined by them
  • Select a proper communication channel according to the specific situation
  • Control the end customers’ preferences


For a better description, let’s consider the following use case.

Use case: mutual organization to obtain 30% confirmation of attendance for Annual General Meeting.


  • Permissible channels are Email (priority 1), Registered Postal (Priority 2), SMS (Priority 3)
  • Rules: state if < 30% confirmations received
    • Generate registered postal output after 10 days
    • If still not 30% then send SMS after further 7 days

Technical Implementation

To ensure good customer experience, we build a solution to implement the above required Omni-Channel Coordinator (OCC) app as a distributed system to be deployed on the Cloud considering some technical requirements below

  • Follow the idea of Software as a Service (SaaS) with Multitenant architecture
  • Support scalability, high availability
  • High performance
  • Single Page Application for good user experience
  • Cluster deployment enabled

High-level architecture

Omni-channel Coordination is a cloud-based application. The overview of the application’s functionality can be seen in the following schema.

There are two main actors in the system, service providers are the owner of facilities and equipment able to send and deliver communications through multiple channels; and business users which are company or enterprise that uses the facilities and equipment of a Service Provider to deliver custom communications to their customers.

The above described system is built with SaaS model and based on a multitenant architecture. With this model, a single version of the application, with a single configuration is used for all customers (“tenants”). To support scalability, high availability the backend side was designed as a distributed system using CQRS, event sourcing architecture pattern, cutting edges technologies like Object Database, .NET Core, Kestrel, Caddy are also applied.

Furthermore, Apache Kafka and Zookeeper is selected as Event Store and configuration, coordination service for the system. Apache Kafka is horizontally scalable, fault-tolerant, very high performance. Zookeeper is highly reliable distributed coordination. Overview design for enabling high availability and data distribution can be seen as below:

Distributed web application with CQRS and Event Sourcing (ES)

Putting read (query) and write (command) logic into one place when the read/write ratio is a high value that leads to a big issue that asks a solution for it.

The domain that the Omni Channel is in, also, its business rules should be considered a high level of complexity. There applying single responsibility principle as a must to help to well control the system, isolate logic.

In a brief view, it is said that the traditional CRUD approach has some disadvantages against a set of critical requires of a complex business rules that running in cloud. The CQRS pattern comes in hand to maximize performance, scalability, and security, it brings to the system higher flexibility, and prevent update commands from causing conflicts at the domain level.

The CQRS patterns makes a good combination with the Event Sourcing pattern. In implementation, the Event Sourcing pattern is the write model, and becomes the official source of information. Every change including requested by commands is transferred to events and stored in order. Events are immutable and idempotent. All of these properties help to simply the business. The system handles commands multiply at a time, and the client can continue to safely process. A change in data only happens when an event is handled. This approach makes server fast response to requests from client and brings simplicity and flexibility to a complex system.

The data itself becomes audit log, so it should be convenient to debug. It helps to integrate with other subsystem. Event Sourcing itself is a good candidate technical choice for distributed programming. Because every change is event and in turn events are immutable, so synchronization across distributed nodes becomes as firm as it could be. The isolation it provides brings in a huge open opportunity to apply trending technique used in event log problem.

High interactive application

Because a CCM software always needs a better and better User Experience, the Frontend architecture and design is also important.

Quadient’s Omni channel application was developed around UX Needs We knew right away that the employee user interface (UI) and user experience (UX) were going to be critical drivers behind how we designed Quadient’s Omni channel application. CCM software that enables highly personalized but compliant and auditable customer communications that business users can produce quickly and effectively with minimal friction and send through review workflows with little to no added effort.

Because of list of reason above, the chosen frontend technique has to ensure the things: rapid development, lightweight, isomorphic JavaScript, web component oriented. Bobril mainly is the key to resolve the given stuffs. To speed up the development and focus to specific needs of Omni-Channel, the frontend framework needs a development tool all-in-one to easily startup and build the application. Bobril-build has been created to fulfil this purpose. All what the developer will have to do is to execute only one command instead of setting up many task runners as well as test runners. Further, the front-end data flow will be controlled by Bobflux (a framework inspired by Redux). Bobflux is a FUN model framework that includes (f – functional, u – unidirectional, n – whatever). Below it is frontend architecture using Bobflux.