Finally, I can share this story with you. It’s about technology, people and the concept of selling something that is hard to explain to most of the people – IoT.
Objectivity is a software house. Its business is to deliver software solutions to clients. Recently, we have started to work with one of our clients on a big IoT endeavour, involving many assets, machine learning, return channel and big data. It has been built on the Microsoft Azure platform. Unfortunately, the whole project, as well as the client, have to be kept in secret. This means we can’t use this business case to prove ourselves in front of our present and potential clients.
Six weeks ago, we decided to prepare something from scratch that could be used to present our experience and excellence in IoT, and hence support our sales activities. It is much better to show something working, than just say:
“we are good at it – believe me, here is the contract… please sign it there…”.
Don’t you agree?
The journey starts with the question: what is our business case?
We cannot use the stuff we already have, we need to start from scratch. So what would be our business case? We were thinking about it a lot. We had several ideas, some of them good and some of them bad, too. We all agreed that the business case should be:
- simple to understand and easy to implement (data should be available)
- versatile to transfer it easily to client’s business case
- real, which means we do not make shortcuts if only possible (sometimes it is needed)
Next, we asked Microsoft about the business needs of their current clients (and potential ones they are meeting with), and we have learned that the business case should also illustrate:
- monitoring of assets and predictive maintenance
- integration with enterprise software
- new business opportunity generation
- operational cost reduction
Knowing all this, we came up with the idea of using office printing devices as our assets. We have a number of them in our office, we know what they do, we know how to communicate with them and what kind of messages they send. Moreover, it is a perfect case as our audience can easily replace the printer with their own assets during presentation and think about their own use cases.
Office printing devices
Everyone knows how printers work, what to expect from them and what problems could be encountered in their daily usage. Let’s say it loudly in the beginning of our demo presentation that EACH TIME our potential client SEES A PRINTER, he should replace it with his OWN ASSET. For example a pomp, an elevator, a wind turbine or a cow… Our potential client understands its business better than we do, so let’s allow them to identify the opportunities we don’t see. That is why it is so important that the presented asset (in our case a printer) is easily replaceable by any other. Of course we should also think about some obvious benefits that our solution would bring to the client.
Now, where is the business in printing devices and how to meet other business case requirements?
The company Print Prince is letting printing devices for office use. They are not generating profit on an asset, when the asset is not working (failure, lack of toner or lack of paper). Each printer requires service in case of malfunction and in case of maintenance. Support and service is complicated because often the information about malfunction or lack of toner is coming late. It is hard to monitor those devices and predict when it could break or when (how often) the toner is to be changed per device.
The company (Print Prince) has currently 10 different type of devices. Total number of devices is around 1000 served to 60 clients in 3 cities.
By introduction of our IoT solution for Print Prince we would like to:
- reduce chaos in planning for the technical crew and limit the number of visits required at client’s sites (this would save costs)
- be informed about failures as early as possible without the need to wait for client’s call (this would limit the time our asset is not productive)
track number of failures per asset, to see when we have to replace the asset to keep quality of service on high level (that would increase quality)
So we have a concept and the business case, how are we going to achieve it?
To deliver the solution, we have used Microsoft IoT platform with the following components:
- IoT Hub – responsible for receiving messages from the gateways and sending messages through gateways to printing devices
- Stream Analytics – to analyse incoming messages and react if necessary
- SQL database – to store the messages that can be used later by BI platform
- Machine Learning – to run algorithms allowing prediction of a few parameters (I will come back to this later)
- Power BI – to present data in the form of interactive reports, charts and dashboards
- Microsoft Dynamics CRM – as an enterprise software storing information about assets and clients
- Atlassian Jira – as a ticketing system used by technicians to organize the backlog of tasks, dispatching and tasks assignment
- Dashboard – our web application used to group and visualise current state of devices
For the time being we do not have a gateway implemented, therefore, we needed to develop an emulator of printing device, which simulates the device and sends messages to IoT Hub.
Why do we need a gateway? Well, there are two reasons. The first one is that Microsoft IoT platform doesn’t support SNMP protocol directly from devices. Gateway is a module allowing translation between protocols: SNMP used by printer and AMQP supported by IoT Hub. If we want a ‘return channel’ then the gateway would also be used in the way back to the device to translate from AMQP to SNMP protocol.
The second reason is security. The assets are connected to client’s network, therefore, there might be an issue with direct connection to the Internet. Thanks to a gateway, we can make sure the communication is secured.
Dashboard is something that the user sees after successful logging in to the application. An analyst is using it to analyse the current status of the accounts and properly plan the work for technicians (smart dispatching). They are using the following information about devices: current RAG status, level of toner, days left, MTBF, quality and connection status.
RAG status clearly indicates, which devices require our attention in the first place.
- Red means failure or 0% of toner level. It is equal to “my assets doesn’t bring value to me and my client”.
- Amber shows that toner level is low and soon someone will have to replace it.
- Green means all is OK.
The view is easy to sort and filter in order to present only those devices that require maintenance. Thanks to that, the Analyst can identify where to send the technician first and to which devices. All this is using logic that collects and analyses messages sent by the assets, while they work, for example: toner level 10%, toner level 5% or printed 1 page. It is a good example of assets’ monitoring with Stream Analytics.
Let’s focus on “days left” parameter, as it is really interesting. This parameter is calculated for the specific device type using algorithm hosted by Machine Learning. This means that there is a data model behind, and depending on data injected, it counts the parameter informing a user that “this type of device with current load should operate for x more days”. For the Analyst, this is very important information. Sending a technician to the clients’ site is often expensive, so if there is a broken device, and another one with almost empty toner that most probably would need to be replaced tomorrow, we can ask our technician to replace it straight away and save cost of travel the next day. This is a good example of predictive maintenance, isn’t it?
There is also one exciting feature hidden behind it. It would be nice if we could set some commands directly to the assets from our dashboard (well through the gateway). The Analyst can switch remotely the mode of printer quality between normal and eco to extend the time of printers’ operability. It allows to reduce cost of maintenance by reducing number of visits at client’s site. To make it even more interesting, this action can be performed automatically by the Stream Analytics module, when the toner level falls below – let’s say: 10%. Stream Analytics will send a message through gateway straight away after receiving the message “toner level 10%”. It is a good example of effort reduction and automation.
Our emulator of printing device sends messages to the IoT Hub simulating daily work of a printer. Almost the same visualization/UI will be used in case of real devices.
Visualization of collected data in Power BI
It is hard to visualize all this data for many devices, but with help of Power BI (a natural application for business intelligence to be used within Azure environment) it is achievable. Our challenge was to propose views that would be usable for the Print Prince Technician and Analyst.
We have decided that it would be nice to know where the assets (printers) are located geographically. Being a Technician that visits our clients’ location, I would like to know where exactly the assets are located on the floorplan in order not to waste time looking for them. The proposed views have been configured accordingly:
I would like to analyse more deeply the following chart, displaying number of pages printed in time.
It represents the load of particular asset. The black line shows the designed average load level, declared by the manufacturer of printing device. It simply means, that if the asset is used up to that line, it shouldn’t break too often, and this is the level where 3 years warranty applies. If we want our printer to operate longer, we have to keep its load balanced. Thanks to this visualization, the Print Prince analyst can easily notice that an asset is overloaded, and at the same time, the others might not be loaded enough. It means that there is a printer, where we can expect more failures and reduction of its life time (lower quality of our service and more travelling for our Technician is equal to increased costs). At the same time, we have a device, which is not used to the level it could be without any harm to its life time. Further, it is not generating such profit as it could. In both cases, an account manager can act as follows:
- Propose additional device to the client with overloaded asset
- Replace overloaded printer with another type of device having adequate parameters and designed load level
- Move not used device to other client (or location) where the load would increase generating more profit
All this is a great example of identifying new business opportunities within existing clients’ portfolio and generating more profit from the assets we possess.
Enterprise software integration
We have decided to use Microsoft Dynamics CRM to show the integration possibilities between enterprise applications. Our example, the company Print Prince, is using CRM to store information about the assets and their current deployment. The system also collects records of failures. Thanks to this information, Account Managers are always up to date with the quality of service that clients receive. Having all data from analysts, they can easily propose new devices to be deployed or other actions to increase efficiency and quality, always being supported by real data coming from assets directly. Account Managers will no longer be surprised with poor client satisfaction, if there are some issues they know about almost immediately.
Moreover, Print Prince uses 3rd party billing software integrated with CRM, which gives opportunity to automate the invoicing process, as once our IoT solution injects number of printed copies to the CRM, the data for invoicing is ready and available always when needed.
Another example of integration with an enterprise level application is automated communication between Jira and our IoT solution. Each time, a malfunction is detected, a ticket is created automatically for tracking and moving through dedicated workflow for technicians.
I believe that the Print Prince business case created by us meets all our requirements to become great IoT selling tool. Thanks to its simplicity, we trigger association between this what is seen as a Printer, and the real asset that the potential client possess. Everything is about justification for the use-case, it is better when the idea comes from the client, we do not need to convince anyone to their own ideas right? Each time, when our audience say something like “in addition, we can use it here, or there” I will call it a success!
Development Team and some numbers
The team consist of:
- 3 developers, 2 testers (one experienced with PowerBI)
- Technical Architect 0.5 FTE
- Business Analyst 1 FTE
- Project Manager 0.5 FTE
- User Experience and Graphic Designers 2md
Project duration: 5 weeks
Total effort: 135 md (all roles)
Team’s comments about the project and technology
Tomek (Senior Software Developer): Bidirectional communication between cloud and device, designing messages and device management seems to be easy using IoT Hub. The cost of service could be lower… currently there is only 8K limit per day for free, when we frequently send a lot of small messages, it’s definitely not enough. Debugging is a bit complicated, as error messages are often very vague, which doesn’t help to identify the issue. Implementation would be much harder without the architecture design concept that has been prepared by our Technical Architect, understanding the whole path and modules used in data transportation is an essence. To get up to speed with Microsoft IoT, it is worth to setup IoT Suite – Microsoft ready-to-use example. Modules and components are configured there already and the whole code is available on Github.
Andrzej (Senior Software Developer): IoT Hub is an interesting solution, which is missing in Amazon cloud product (AWS). There are some difficulties with handling ACK messages from devices, or with transferring bulk data in messages back and forth. Getting up to speed isn’t that troublesome. The key point is to make sure the deployment is automated, unfortunately Azure doesn’t support it fully yet.
Przemek (Business Analyst): For me the challenge was to emphasize the demonstration spirit of the application. Rather than building a solution for printers explicitly, we wanted to bring out those features that reveal the adequacy of IoT for any other business application. Views, user actions and the simulation of devices’ work over time had to be presented in a clear and easy to understand way. Rather than figuring out what-does-what on the screen, we wanted a potential customer to grasp the idea very quickly and move on to imagining how the solution might be useful for him”.
Maciej (Technical Architect): The challenge was to design system architecture that will guarantee performance and scalability but also the one that is easy to develop, maintain and extend. The key to achieve this goal was to carefully choose azure components and properly design interactions between them.
Kasia (Senior Project Manager): The participation of Technical Architect and Business Analyst in the project is necessary, to make sure the architecture fits the business case. Without those roles, it would be really hard to effectively manage Product Owner’s expectations. From my perspective, the most challenging thing was to organize subscription and access rights to prove that architecture can satisfy business requirements (use cases have been added one by one so we could ensure all architecture components are in place to handle them). It was a great fun to work with the team on new technology like IoT.