In my previous article “How to integrate #IoT and CRM?”, I sketched a scenario in which we have our CRM system connected via a gateway to the internet; facilitating inbound communications for IoT devices.
I believe that in the next couple of years appliances, tools, vehicles etc (further referred as: devices) will become much more intelligent. The devices will get more CPU power and memory and the ease of use will increase over time, providing us with functionality we even don’t know it exists. *hmmz*
As prices of mobile communications will drop even further, more and more devices will be connected to the internet. These devices will communicate with each other and to other systems out there, e.g.:
- Open a call at the service desk system of the manufacturer / distributor / reseller in case problems arise (malfunctioning hardware, service interval reached).
- Provice statistical data to the manufacturer.
- Provide usage data (e.g. smart meters for electricity, toners/drums for printers).
- Provided geographic data
- check user license
A lot of the data provided by the devices will end up somehow in a CRM system to get a better, more detailed profile of the users out there. I hear some of you wonder: “How does the manufacturer know that I’m using their device?”
The answer is dead simple
After you bought the device, the manufacturer asks you to activate the device, in favour for some freebies. By activating (registering) the device, it’s unique identification is coupled to the email address and/or phone number you provided. Once the device is linked to your profile, the device might even scan it’s surroundings for other devices and provide that information as well to the manufacturer.
As most manufacturers sell thousands or millions of products, you can understand that when all these devices start to communicate will create a workload the CRM system normally couldn’t handle very well.
The performance would collapse and the users would start to complain. Therefor I think it is really important to have a gateway that is capable of handling the load. The gateway itself should be capable of buffering an distributing the data to the CRM system (see image below).
The gateway itself should have a lightweight API exposed to the outside world. What comes in my mind first is a simple REST interface, providing the methods required to post data from the device to our CRM environment. Each method on the REST interface has to include the unique identification of the device as a minimum.
The gateway itself will communicate with the CRM environment to store the data. The CRM environment will pre validate the data and store the valid data, the invalid data will be discarded.
I divided the gateway into two parts, a lightweight API exposed to the outside world. This part is going to be hosted on Internet Information Server. The other part is a standalone service that takes the input from the web API, stores the incoming data temporary to disc and sends the incoming data to CRM. For the scenario I’m going to build I’ll stick to a console application instead of a service (for the sake of simplicity).
By setting up the gateway like this, I’m using concepts of advanced message brokers – like BizTalk – only on a tighter budget.
If there is any interest I can write an article about BizTalk and CRM – in which I’ll explain the basic principles of BizTalk and in which I’ll set up a simple gateway to connect the little devices to CRM (just let me know)….
As IoT device I’ll use the Raspberry Pi 2, which will be programmed in C# using the Mono framework. I’ll hook some simple electronics to the Raspberry in order to simulate an event that will trigger the service call to the gateway (e.g. a malfunctioning appliciance calling out for help).
At the backend, there will be CRM in which the incoming service call will be shown in a list.
If the scenario is functioning, I’ll also hook up another Raspberry Pi and then I’ll try to flood the gateway and CRM.
Sounds like a lot of fun to me