From time to time some unexpected challenges appear and two weeks ago, while I was in the middle of the XD API training, we received a request to participate in a class of the curricular unit Implementation of Integrated Systems of the 3rd year, 2nd semester of the Integrated Master in Information Systems Engineering and Management at the University of Minho.
This curricular unit addresses the theme of integrated systems as software (ERPs, …), as systems integration (SOA, …) and also works as a curricular unit that integrates the knowledge acquired during the 1st, 2nd and 1st semester of the 3rd year.
Information systems integration, namely management software, is something we work with very regularly at Samsys so, even though we didn't have anything prepared, we thought it would be interesting and important to participate in this class.
The idea was to be a very practical presentation and it was in that spirit that we tried to prepare it.
Before presenting these cases, I tried to give a framework of how we see the reality of systems integration, both in the world in general and in the concrete challenges that our customers pose to us.
To initially address the topic of systems integration, I used an idea that, in my opinion, captures the essence of this concept. This image represented a person, with a set of leaves, passing those leaves to another person. It seemed to me that it was a good metaphor because, after all, when we talk about systems integration, we are talking about sharing something (information) that one system (one of the people) has with another system (the other person).
Of course, as they say, the devil is in the details, and if, conceptually, it's really just sharing information, when we start to detail the problem, many other questions arise.
- Requirements: Reliability; Consistency; Speed
- Strategies : Online; batch; files; data base; webservices, …
- Specifications: Protocols; Open / closed systems
- Development: From scratch; Within existing products
We may be talking about thinking about how we are going to monitor the entire process to see if it is reliable… what we are going to build so that when an error occurs we can know about it in advance and be able to solve it;
Or, understand the requirements in terms of speed of integration, which can lead to understand if we have to think about an online integration system or in batch, and being in batch with what frequency and what kind of data inconsistencies are we admitting as possible.
Then we still need to define or know the ways in which we are going to get the two systems to communicate, by exchanging files, by direct access to the databases of each of these systems, through apis or webservices.
In the case of some more specific systems, it may still be mandatory to know which communication protocols have to be established, which can be more or less complicated if we are talking about open or closed systems.
And, in our case, in which we develop these systems, we have to understand if we are going to build everything from scratch, if we are going to use some component or if we are going to use a complete framework that already makes this type of service available, making only the parameterization of each of the systems to integrate.
What we've seen as a general trend is a path from this industry towards microservices with rest APIs that can then be programmed directly, or orchestrated so they can communicate with each other.
However, the most common Samsys reality is that of systems integration, which at this time we could call classics, of the client/server type, in which we have a Windows desktop application that connects to a database that provides the information to process.
This does not mean that the different manufacturers we work with cannot already have 100% web solutions such as DriveFX in the case of PHC or webified like PHC cs web (I say webified because it still needs PHC CS Desktop), or Jasmine in the case of spring (manufacturer not so expressive in the Samsys portfolio).
That is, although the current trend is to connect web applications via rest apis, in our case we typically have to create a web interface that connects to the management software and then interacts with the other system with which we want to integrate.
In this scenario, we still have another issue that we typically have to deal with and that has to do with how these systems provide access to their data and logic. Even before the rest APIs or webservices, there was the concept of APIs. At the time we were talking about integration DLLs, typically sold as additional modules to the base software, these Windows APIs (let's call them that) allow us, at least, to abstract ourselves from the logic implemented in the ERP as well as from the structure of the data base.
This is the scenario for Sage, XD, Primavera and Wintouch, and if there is no option for a web API then at least having this kind of API is a good start.
These are all the previous questions that we have to work with, and this was also a topic that I tried to cover in the presentation. The development of software and this type of systems does not live only on technique. The context in which we work, that is, the companies for which we provide services, is very relevant to understand their needs, their expectations and how we can implement this solution.
After that, we move on to the presentation of specific cases. Where we try to give an idea, sometimes perhaps too exhaustive, of how we build these solutions. Presenting code, talking about the challenges of these implementations and answering some questions that have arisen.
The examples we presented, which were presented by my colleague Telmo Marques, included solutions that used Sage Extensibility or applications that used the Sage API to integrate data, others with Primavera to integrate with an online store in WordPress/WooCommerce, our addon for the Wintouch Oficinas that allows you to send SMS to customers whose car has to be inspected or some examples we've already tried with the XD API.
Overall, I was surprised that we were able to keep an audience of around 100 students, at the end of the day, relatively interested and that was asking some questions during the presentations. So a good experience.