Prototype

At first, two existing automated communication tools were analyzed - Zapier (https://zapier.com/) and Azuqua (http://azuqua.com/). Our analyses showed though that these services do not meet the requirements from Swisscom. If for example Swisscom creates a ticket in its own ticketing system, the above mentioned tools can create a ticket in a different system. But the main problem is that the existing services do not offer the ability to listen for changes in a ticket or system in general. Therefore it is not possible to keep both systems synchronized.

Therefore, we decided to create an own small application with all the functions requested by our client and which can be adjusted and adapted with new adapters for new ticketing tools easily. The whole app is running as a web service on Swisscom's App Cloud (https://developer.swisscom.com/). Below you can see the system diagram of our prototype.

The basic architecture of our prototype is shown in the component diagram below. It is to mention that we decided to use the adapter pattern for our approach. So that adapters for new tools can easily be added to the exchange component without changing anything about the existing architecture.

The backend and exchange components are plain javascripts using the Node.js library. The Exchange component is taking care of the whole ticket translation and is listening to actions from the systems as well as triggering text messages to subscribed users. The GUI is using a nginx container containing a Bootstrap template. In the backend component the storage module communicates with an instance of the MongoDB.