Infor M3 Integration Toolkit. What to use and when?

If you are planning a new integration project with Infor M3, there are a lot of different options available and in some cases it can be difficult to select the best option. In this article I aim to give some direction and hopefully make the decision easier. Let’s have a look at each of the options and provide some examples of use cases for each.

Infor M3 API’s

Infor Application Program Interfaces (API) have grown significantly in numbers over the past 10 years.
They provide the same business logic as the interactive programs, but as a set of functions, which vary by M3 program. These functions can be called programmatically and include Add, Delete, Update, Get and List functionality.
The M3 API’s are the preferred way to interact with M3, as the business logic is followed and the database is not exposed in any way. That is why most of the other methods I will discuss later use these API’s internally for invoking M3 functions.
The downside with the API’s is that they are quite cumbersome to connect to directly, unless you use propriety classes, and are not well suited for calling M3 remotely over the web.
If you have a local application, which needs to be very tightly connected to M3, and performance is extremely important, then perhaps you could consider building an interface directly to the API’s. This approach would most likely cost more to develop, test and maintain than using any of the standard methods below. Also be aware that the API’s may change between M3 versions, which could easily break the interface.

Infor MEC

M3 Enterprise Collaborator (MEC) was developed as a response to the increase of B2B transactions over the internet about 15 years ago. I was on the first development team and later Product manager for this application, when it was still owned by Intentia in Sweden.
I am very excited that it is still around, and although there has been a lot of improvements over the years, the basic functionality is still very much the same.
MEC allows any application to securely communicate with Infor M3 via XML messages over a range of different protocols.
The M3 Enterprise Collaborator uses API’s to safely update data in M3, but with the ability to write custom java-functions, you can call web services, extract data from other sources or anything else you wish to do.
MEC comes with a complete framework, which includes the ability to setup Partner Agreements for individual configurations by the partner or application with which you wish to integrate. It also comes with a flat-file parser to process text-based files.
An extensive admin interface includes the ability monitor each message and a has a full range of other useful functions to maintain your transactions.
If you have a B2B/EDI type integration, typically over the internet, where visibility and control is important, then MEC is the preferred alternative. It can also be used for A2A integrations and is particularly useful to replicate reference data between disperse systems.

Infor M3 Web Services

Infor M3 Web Services uses the traditional web services SOAP protocol and allows for synchronous communication with Infor M3 over http. Web services methods can be based on API transactions, but can also be based directly on most interactive programs, which makes it very useful for updating data when a suitable API function is missing.
Infor M3 Web Services makes sense for A2A integration, when a remote application, which also supports web services, is pulling the strings and controlling M3.
This could be a web shop which is calling a web service to retrieve information about whether an item is in stock or not.

Infor M3 REST interface

The Infor REST interface is a fairly new development and allows M3 API’s to be called remotely by virtually any programming language, without using the propriety classes required when calling the APIs directly. Compared with Web Services, REST is much more light-weight, can be called from pretty much any tool. It is a great for loosely coupled applications with a many-to-1 connection, where updates on the server side should not break the client.
It is a welcome addition to expose the API functionality to a greater range of possible integration scenarios.

M3 ION/EventHub

M3 ION and EventHub are also relatively new additions and are based on an event driven publish and subscribe service based communication. Infor M3 produces events for any type of update in the database and other applications can subscribe to specifically defined events and retrieve data from the files producing these events.
This type of integration is typically used for internal applications where M3 is the master. However, it can also be used to trigger MEC transactions, that could forward the information to external destinations.

Direct Access via ODBC or OLE/DB

It comes without saying, but if you decide to access Infor M3 directly via ODBC, it should only be to extract data, and NEVER to update data. Being a relational database, the tables in the M3 database have a lot of interconnected records and unless you know exactly what you are doing, it would be very easy to jeopardize the integrity of the database by removing or adding data.
However, there are still applications where direct access makes sense. I am thinking of data warehousing(ETL) and business intelligence tools for example, such as QlikView or Cognos where you need to extract large amounts of data.
There are also situations where none of the previous methods are available, and there is no other option than to extract the data directly.

If you would like more information, please contact us at Integration Wizards or get in touch with me directly (Mathias Wallgren). We can assist you at any stage of your integration project, from planning and execution to training and documentation.

Infor Event Analytics – What’s the Hype?

I’m currently involved in an Infor M3 integration project using Event Analytics extensively and I thought I would share some of my thoughts and experiences.
For those of you who have not come across Infor Event Analytics, it is an application within the Infor GRID for subscribing and filtering database events
created by Infor M3 Event Hub.

Event Analytics uses a rules language by JBoss called Drool to create these filters. Events such create, update or delete of a database record, or start, exist or fail of a program will trigger a rule and when defined field values (such as an item status) within the rule are met, it will fire off another user-defined event
to be picked up by MEC (M3 Enterprise Collaborator) or IPA (Infor Process Automation) or any other application that can act as a subscriber to these events.

I guess it sounds like a glorified database trigger, which listens to certain database conditions and executes a piece of code when those conditions are met, but it is much more than that.
The strengths of Event Analytics is the standardized approach, the framework to maintain these rules and the ability to pass on standard Business Object Documents (BOD’s) containing not only the current values of the file or program that triggered the event, but also the previous values of each field. This opens up enormous possibilities. Especially when combined with MEC.

So what are some real-world scenarios?
Imagine an M3 to Salesforce.com integration where current stock data replicates in real-time as they change in M3.
Or maybe an M3 3PL integration where item master data flow through automatically when the item status changes to Active (20) in M3.

However, I think a word of caution is in order. As always with great power comes great responsibility.
At this point I am not actually sure what impact on the database it could have.
One must be careful how these rules are defined, because there are literally millions of updates happening in M3 and one wrong step and you may have
hundreds of events triggering hundreds of messages in MEC, calling thousands of API’s and potentially bring the whole system down.

So my final advice is to be very specific in your rules and when you want them to trigger. One way to achieve this is to use a before and after values (ie. when item status changes from 10 to 20), thereby avoiding multiple triggers every time any field in the file is being updated.

What are the benefits of Cloud based integration?

There is a lot of hype around Cloud Integration at the moment and perhaps most of you already know or have an idea of what it is, but I thought I would write a few words anyway and explain what benefits can be achieved with this approach to data integration.

In the old days (or a few years ago) data integration software was mainly hosted on-premise and external electronic B2B transactions were sent via value-added networks (VANs). For traditional EDI (Electronic Data Interchange) transactions this still seem to be the de facto standard used.

However, with the emergence of more SaaS (Software-as-a-Service) offerings such as Salesforce.com and others, the requirement arose for a simple way to interchange data with other systems, such as internal legacy systems, and cloud based integration was born.

Cloud based integration may not solve all problems when it comes to data integration, but it is definitely a step in the right direction, with many benefits over the traditional in-house approach. Most Cloud integration vendors are offering features such as:

  • Elastic infrastructure that allows for seamless scalability with increase in demand
  • Pre-built Connectors for many software packages means significantly less development
  • Subscription based pricing means you only pay for what you use
  • Secure and encrypted data traffic removes the requirements of VAN infrastructure
  • Highly resilient with built-in redundancy
  • Web based monitoring from anywhere
  • Multiple data centres across the globe for increased performance

With Cloud based integration, better networks and higher transfer speeds, I think we will see a lot more of real-time global enterprise data traffic where geographical boundaries will play a less significant role and diverse applications are instantly exchanging information across the world as changes occur.