The Customer Service Center (CSC) is a new portal that offers a central place for Bonitasoft customers to access the services provided as part of the Bonita Enterprise subscription: technical support, Expert Corner, audit, version update, training, and Professional Services requests. It was developed to offer an updated, improved user experience for subscription customers.
I was responsible for the technical side of this project: sizing, designing project architecture, implementing some of the features, and more. In this article, I will highlight some of the technical challenges and my experience as a “customer” developing the project from scratch on the Bonita Cloud based digital process automation platform.
From expert advisor to customer-user
Since beginning as a professional services consultant at Bonitasoft a few years ago, I’ve been responsible for accompanying a number of Bonita Enterprise users as they moved their business processes to the cloud-based platform.
When we began to develop the Customer Service Center internally on Bonita, my role shifted from “consultant” to “customer-user.” This change reinforced some of my convictions and opened new perspectives that will certainly be beneficial for us and our users.
But before diving into detail, I’d like to say a few words about the platform and its cloud version.
What is Bonita?
Bonita is an open Business Process Management (BPM)-based digital process automation (DPA) platform to create applications based on processes. IT-business teams use it to build complete business applications rapidly. Bonita Cloud is the whole Bonita platform offered as a secured, fault-tolerant, and scalable platform-as-a-service (PaaS). It’s operated and managed by Bonitasoft, and users develop their customized enterprise applications on it.
As a Professional Service consultant, I work with the Customer Support and Customer Success teams. When customers encounter doubts, difficulties, or difficult choices, I’m engaged to provide the expertise they need. Behind the scenes, I work with the Cloud Ops and R&D teams, the unseen part of the iceberg, to deliver solutions.
The Bonita Cloud edition, like the on-premise Bonita edition, is a low-code, rich and extensible platform to build applications. Some of the practices I use in on-premise development are restricted in the Bonita Cloud edition, but this turned out to be an opportunity to build a better application in the end.
How constraints push the boundaries of what is possible
One of the things we discuss most is the extensions available for Bonita users. (Extensibility is one of the fundamental key propositions of Bonita.) However, PaaS packaging brings some extensibility constraints.
When a customer faces a constraint, we work to find an alternative approach that works with the cloud service, or to find a standard external solution to plug with the platform if that’s what’s needed. In this latter case, my role as a Professional Services consultant is to provide explanations and guidelines, but not to implement them.
For the development of the Customer Service Center though, as we were doing the implementation ourselves, we needed to get our hands “dirty” with the cloud platform, pushing its limits.
And as a former IaaS/PaaS expert for a big cloud vendor, I’d like to emphasize that, in my experience, for most projects you can rarely build a complete solution on a single PaaS service. Thus this project offered an opportunity for us to see how to combine the cloud platform with other cloud and in-house services.
Taking on the Customer Service Center development challenges
Before diving into the technical challenges we encountered, I’d like to give some context. The Customer Service Center is the main communication hub between the company and its customers. Developers and business users use it to open support, expertise, and training requests. They need to be able to download product releases or generate licenses. When there is information to share, the company can use it to push notices. And the use of the Customer Service Center is conditioned on each customer’s subscription status.
It’s got to be scalable, reliable, and secure
The Customer Service Center is deployed on the cloud platform. The cloud production environment is clustered on containers running behind a load balancer, and the databases are backed up every day. HTTPS is enforced by default as well as by security policies.
Salesforce integration - yes it’s possible
The Customer Service Center is centered on customers. The company uses Salesforce as its CRM, which has a rich set of APIs to communicate with. We wanted to display information contained in different Salesforce objects in summary tables or detailed views. However, requesting objects from Salesforce each time they are needed is slow and can significantly degrade user experience. To mitigate this issue, we decided to cache the information. As the cloud-based platform is running on a clustered environment, we chose to use Hazelcast, a distributed cache.
File storage relies on built-in AWS solutions
Some of the features in the Customer Service Center require sending and receiving files: attaching log files to a case, downloading product releases, generating license files, and so on. Using the local filesystem is not an option on a PaaS, and we didn’t want to rely on (S)FTP(S) for security reasons. In a cloud environment, the most natural approach is to rely on Object Storage. All cloud vendors offer Java SDKs that make them easy to integrate inside integration connectors and Rest API extensions, and we used them extensively in this project.
Overcoming the limitation of PaaS with Functions
To generate licenses, we need to execute some runnable jars. One of the main limitations of a PaaS is that you can’t have access to the underlying systems, in particular the infrastructure. On-premises, it’s fine to run external pieces of code (shell scripts, jars, etc.) from the platform environment. Within a cloud environment, this is not possible.
We decided to use Functions as they are easy to integrate through the Java SDKs of most cloud vendors. And this option brings a full range of possibilities, as we can write Functions in a wide range of languages for many purposes.
Let’s make it all visible
In a business-process-based application, processes move step by step through tasks or actions. We wanted the Customer Service Center to show visual notifications of the progress of a process. An easy solution was to expose a Rest API extension to check the process state from the Hazelcast distributed cache.
We built a laboratory, and we discovered innovation
The Customer Service Center project turned out to be an excellent laboratory for a professional services consultant to experiment with the possibilities of our own Bonita platform on the cloud.
While I’ve always felt that I was working with talented, dedicated professionals, the frequency and quality of our project team interactions have given me even more confidence in what Bonitasofters bring to our customers.
With the support of the whole ecosystem, our Bonitasoft Customer Services team has built an innovative solution that we hope will bring a great customer experience!