Skip to main content

Enterprise Applications Customization with Microservice

Introduction

Today in highly paced enterprise environment you, as the leader of enterprise IT division, need to be fast. Simplicity is the key for the speed. What are the key factors to simplify your IT? Three different areas are very important to take care of: Technology, Organisation and Environment (TOE Framework: http://goo.gl/tQlX5z). Here are some detail points for technology and organisation:

1. Technology: in most enterprises there are already one or more ERP and CRM solutions the so called Enterprise Applications. We need to manage them carefully as they support the business processes. In context of the core compentencies most enterprises customize the enterprise applications to fit their needs. We need to manage the customizations in detail as they represent the core competencies and at the same time the differentiation of our enterprise to other competitors.
2. Organisation: working in a small team with different roles and functions is already proved as the best way today. Scrum or small cross-functional agile team - organised around business capabilities - for one domain e.g. Order Management with its own product manager or product owner, business analysts, IT architect, developers, testers and operation people can work more concentrate and deliver the best result for the business. This type of product organisation is the key to the Microservice Architecture (http://goo.gl/wglXLp). A product organisation does not imply that there is no need for an IT division in the enterprise anymore. IT division is becoming more important in this context since e.g. all the developers spread around the product organisations need to exchange their experiences and learn from each other. Sometimes they also want to move from one product to another product. Also development processes like model and source code versioning, continuous integration and deployment should be centralised so that not each product organisation will have to build its own process. An IT division within the enterprise can be seen as the "home sweet home" of IT architects, business analysts, developers, testers and operators. As we know having a strong home is the base of strong, successfull and brave children.
In this article we will look into the detail of the customization and its relationship to the Microservice Architecture which represents the technology point above.

Enterprise Applications Customization and Integration with Microservice Architecture

Every enterprise needs individual software, no matter how good your standard software are. In many business domains like human resources, accounting and customer relationship standard software like ERP and CRM already offer best practices in business entities, services and processes. Using them are mostly enough since the key processes are similar all over the enterprises. Some of the components are different but only in the configuration of how the processes should be executed. Most of enterprise applications (ERP, CRM, CMS and DMS) offer customization by configuration for this purpose.
Before going any further we should define how customizations can be done. Each enterprise application has it own definition of what customization is. In e.g. SAP ERP customization means actually what we know as configuration. Here are my categories of customization:
A. Customization by Configuration: in this case we can use the internal function of the application to change the character of the application. Example:
  • If you use JIRA you can define new fields of an issue as you need it without programming. 
  • If you are using SAP ERP you use the Implementation Management Guide (IMG) to configure the processes in SAP.
  • If you are using Oracle E-Business Suite ERP you can use personalization to personalize your page.
In this customization type there are no problems if you upgrade your ERP installation because it uses the internal functions of the ERP.
B. Customization by Modification: in this case we make modification of the components within the ERP. To be able to modify we need to have the source code of the components. This customization type is in general not advisable because it will make the upgrade process complex and impossible. It is preferable to use the next customization type.
C. Customization by Extension: in this case we extend the functionality by creating a new component. Some enterprise applications offer the concept of plugins and exit points. In general an extension needs an integration point for example at UI (User Interface) layer, Business Logic and Entities layer and Data layer.
Back to the individual software, in other domains like Order Management the situation looks different. The order entities are very different in each domains. For example SSL certificates order entity has different characteristics than an order for shoes or an order for collecting waste. Also the order process looks quite different. The customization process is in general more complex and Customization by Configuration is mostly not enough. In this situation there are two alternatives as follows.

1. Customization by Extension using the standard mechanism from the ERP software.

Customization by Configuration is mostly not possible in this situation or at least not completely possible. Using the same technologies from the ERP software we can extend or modify the ERP software. This kind of extension is a tightly coupled integration with the ERP software. The deployment would be also done in the same container as the ERP software. Although this type of deployment is for Oracle E-Business Suite not adivisable (https://goo.gl/AJKbHh). If your IT division has no competence in software development this alternative would be mostly done by the company which introduces the ERP software. Figure 1 shows the architecture of this solution using Oracle E-Business Suite as an example. In this figure we can see an extension of iSupplier Portal (https://goo.gl/KWz7Pq) with a simple File Upload feature (File Upload Webapp) using Oracle Application Framework (OAF) (https://goo.gl/me4kT6).

 Figure 1: tightly coupled integration Monolith Architecture of extension
Pros:
  • The extension is integrated and tightly coupled within the ERP software. Especially in the UI (User Interface) area this is a huge advantage.
  • There are good integrated customization tools within the ERP software. In Oracle E-Business Suite you have the so called Customization Manager: http://goo.gl/qtoBFc. In SAP there is the Transport Management System: http://goo.gl/1sG6Jb. 
  • You don't need to take care of single-sign-on and security since the webapp is running within the context of E-Business Suite.
  • In the beginning it is easier to handle one big "monolith", all in one place solution, as the First Law of Distributed Object Design says: don't distribute your objects (http://goo.gl/DFnUpG).
Cons:
  • It uses the technologies of the ERP software and this depends on the vendor of the ERP software. This means higher license cost, high dependency to the vendor, restricted resource to find for the compentence in the vendor know how. In the time that Open Source Software is already mature you are stuck with the vendor solution. Also with new findings like Microservice Architecture you will have to stick with the monolith solution from your ERP vendor. 
  • In some ERP software like Oracle E-Business Suite you still need to handle all the software development process on your own like versioning, continuous integration and deployment.
  • Deployment in Oracle E-Business Suite shown in Figure 1 is not advisable. You can deploy the File Upload Webapp in an external OC4J similar what this article mentioned (https://goo.gl/AJKbHh). The problem with this approach is that we need to take care of the security and single-sign-on just like the next solution. 
  • Until certain point you are in a heavy weight situtation through the monolith architecture. It is difficult to extend and to rework, because you need to test everything in the monolith. You sacrifice flexibility and speed.
The difficulties of updating the ERP software because of the Customization by Extension or Modification cannot be seen as disadvantage since this type of customization always implies the same problem. All the extensions should be retested with the new version of the ERP software. This is just a simple problem as we already know everywhere in software. As a Java developer we know that before we upgrade e.g. our Eclipse IDE we should know whether all our plugins are still working with the newer version of Eclipse.

2. Customization by Extension using external standard and Open Source technologies. 

This solution is loosely coupled integration to the ERP software. We don't need to use the technologies of the ERP vendor and can use the Open Source technologies available. Using the state-of-the-art architecure like Microservice Architecture is also directly possible. The deployment would also be done somewhere else and not in the container of the ERP software (see Figure 2).

Figure 2: loosely coupled integration Microservice Architecture of extension
Pros:
  • No tight dependency to the ERP vendor technologies. We can use the resources of our own and build the extension with internal knowledge. Flexibility and speed is the key in this case.
  • We can use general best practices and new architectural solutions without waiting until the ERP vendor introduces it.
  • Thinking of your extension as a simple service (== Microservice) would decompose the complexity of your applications. This means that we can develop the extensions much more simple and get finished faster (http://goo.gl/Z9PyFE).
  • As we still need to handle all the software development process by our own we can use already established internal mechanism. 
Cons:
  • We still need an expert who knows the integration point to the used ERP software. Because at some point we need to integrate our solution into the ERP software (UI, business logic and entities or data layer).
  • At the UI level this solution could look really different. This could be positive or negative for your user. For Oracle E-Business Suite 12.1.x users with an old Oracle forms look&feel a good looking state-of-the-art UI like Bootstrap has surely positive impact to the users.
  • We need to take care of the security and single-sign-on, to be able to have a smooth integration with the Oracle E-Business Suite.
In this alternative we can introduce Microservice Architecture. Each extensions can be grouped as Microservice and mapped to the right product organisation. How we implement the Microservice depends on the available know how. For the organisation with modelling knowledge using BPMN, UML and Open Source products like Camunda and KissMDA could be very compelling to implement the Microservices. The typical advantages of Model Driven Development can be read here: https://goo.gl/CbvWb1.

Some interesting discussions about Microservices and BPMN Integration Platform can be found here:
Using Java and Open Source frameworks like Spring Framework and NetFlix OSS - all together bundled in Spring Cloud - for building Microservice is definitely a standard way for enterprise computing today (http://goo.gl/l5zvWD).

Summary

The customization of your enterprise applications like ERP or CRM software by extension should be managed carefully. Under the condition that the knowledge is available in the enterprise using external and Open Source technologies are the best way for simplicity and speed. You can exploit the advantages of Microservice Architecture now, without waiting too long for the vendors to come up with the same solution. Your customization by extension is also independent of the vendor's technologies. If you don't have the know how, search for it and find it. Don't let the vendor lock your extensions in their technology:
  • If you are using Oracle E-Business Suite, don't implement everything in Oracle Application Framework. Try to integrate Open Source frameworks and solutions to build your own Microservice Architecture.
  • If you are using SAP, don't implement everything in SAP Java technologies e.g. Web Dynpro and SAPUI5 within Netweaver. Also try to use Open Source frameworks and Microservice Architecture.
One aspect you should not forget is the domain and the ERP integration know how which you need to solve first, but for us as IT leader, this is just business as usual.

Comments

Anonymous said…
I love to read your articles because your writing style is too good, its is very very helpful for all of us and I never get bored while reading your article.
sap abap online training
kvenkata519 said…
Thanks for sharing this blog. this blog contain good information about erp software implementation. Please do more article about erp software and if any body to know more about erp software for visit cloud based erp software in india ,erp software development company in india,top erp software in india,cloud erp software in india
Thanks for sharing with us, This article gives more useful information to me. Great post, keep updating. Website Design Company in Bangalore | Web Designing Company in Bangalore | Web Design Companies in Bangalore
Sathya said…
Great Info!!! Thanks for sharing information with us. If someone wants to know about Taxi Service App and Health Management Software I think this is the right place for you.
Taxi Dispatch App | Taxi Service Providers | Safety and Health Management System
Rohit said…
Very informative blog post, thanks for sharing. Keep sharing and updating the blog.
Read more information here
enterprise application testing
enterprise application implementations
enterprise applications services
Alice paul said…
jiWebTech provides for all your Enterprise Management needs with its Cloud-based Enterprise Software Solutions.Highly Recommende for online software solutions.
Anonymous said…
It was great information. Thanks for sharing.
Microservices Online Training
Bhanu Sree said…
Thank you for sharing the wonderful information with us to get some ideas about it.
Microservices Online Training
Microservices Training in Hyderabad
Jon Hendo said…
Even if just as a hold-over from the expectations set by live in-person events Some events may be responsible for generating revenue. zoom us reviews and how does zoom work
MIE Solutions said…
Good to find this informative blog. Its extremely good and very helpful for me. Thank you for sharing.

ERP Software for Manufacturing

Nitesh Sharma said…
Thank you for sharing this powerful article, your explanation is clear and very easy to understand. Please kindly visit our site to get more information about Accounting software. i am also using a blog Best ERP System for SEMs. Visit our website at Best ERP System for SEMs

Popular posts from this blog

Why "Polyglot Programming" or "Do It Yourself Programming Languages" or "Language Oriented Programming" sucks?

Last year we saw the launch of a new Web programming language Dart - Structured Web Programming from Google. A very interesting approach to support web application development. Not so long after Go, Groovy, Ruby, Scala, << name your DSL here >> ; we see Dart. Is it a good thing to have at least one programming language to solve one problem? The answer is, like we already know, it depends. Some important backgrounds you should know about the multi programming language paradigm are following: 1. You can read Martin Fowler article about language oriented programming with language workbenches which enables you to write small programming languages easily. In this article I see everyone writing their small languages, everywhere. In this concept we see DSL (Domain Specific Language) as the future of our programming activities. Source: http://martinfowler.com/articles/languageWorkbench.html 2. Neal Ford talked about Polyglot Programming, combining multiple programming language

Software Development Macro and Micro Process

If you think that in year 2012 all companies which produce software and IT divisions in our world have already their optimized software development process, you are wrong. It seems that we - software architects, software developers or whatever your title is - still need to optimize the software development process in many software companies and IT divisions. So what do you do if you enter a software company or IT division and you see following things: 1. There is a perfect project management process to handle all those development of software but it is a pure project management without a context to software development. So basically you only take care of cost, time, budget and quality factors. In the software development you still use the old fashioned waterfall process. 2. From the tooling point of view: you have a project management planning and controlling tool but you are still in the beginning of Wiki (almost no collaboration tool) and you don't use issues tracking sy

Creating Spring Bean dynamically in the Runtime

In my training someone asked me whether it is possible to create an object (a Spring Bean) dynamically so you can choose which implementation you want to have  in the runtime . So at the compile time you don't know what object actually should be created yet. The application should decide what object to be created based on a property file . 1. We create an annotation so we can mark the method which should be able to create the object dynamically: ... package your.package; ... @Retention(RetentionPolicy.RUNTIME) public @interface InjectDynamicObject { } ... 2. Use the new created annotation in your method which should be able to create the object dynamically: ... @Named("customerBo") public class CustomerBoImpl implements CustomerBo { ...     @Override   @InjectDynamicObject   public Customer getDynamicCustomer() {         return this.dynamicCustomer; } ... 3. Write an aspect with Pointcut and Advise which change the ob