Something I truly enjoy about my job is that fact that I am given freedom to explore creative solutions to business challenges. Being in manufacturing and the extremely demanding automotive industry, we are consistently challenged to produce better product, at a lower cost and in a shorter time in order to maintain reasonable margins. We are often faced with implementing solutions which augment our manufacturing processes and enable production employees to have better insight to the products being produced which ultimately ensures better quality. Some of these solutions include real time production labeling (tightly integrated from PLC’s to SAP), On-line visual display of requirements and products being produced and even include metrics like OEE.
So with my latest project, I tried to take a slightly different approach to handling enterprise data and bring a social aspect to certain tasks which are automated, but end users have a vested interest in. Some of these include: Work Orders being completed, Purchase Orders being received (Incoming material), material being rejected in Quality Control, shipments leaving a plant, etc. Essentially it gives “office” users insight to “plant” functions in a aggregated “Just a FYI” type of scenario.
Example: As a purchasing manager, I might not need to know that a specific purchase order has just arrived, but at the same time it’s a spark that might influence a reaction which could be useful to others, for example, I might need to notify quality to approve the material, or maybe the materials are “Urgent” or “Hot” and we need to notify production who is awaiting its arrival. But in some ways, this solution also provides just that. The ability for production (in this case a person urgently waiting for a product) to also know what is happening around them to make informed decisions and in return make informed decisions to enablepeople.
In my quest to solve some of the disconnect we have among departments I decided to develop a small proof of concept which would aggregate all of this data into a status stream or twitter type feed allowing users to respond to the events. I named the app “ERP Tweet”, it was “Sweet” (SAP + Tweet) origionally but since the source of data is not only SAP it did not make sense 😉
Use data originating in and around our plants, in SAP and supporting systems to be displayed in a consolidated “Open” view where users can get filtered, pertinent data which may affect their day to day actions and tasks to provide insight into their own and supporting departments.
Use a web based interface with “feeds” of data being added (push via XMLRPC). The ability to follow only certain departments or actions (Data filtering). Data should be interactive i.e. Add comments, send notifications if needed or requested.
After doing some custom development and a few early stage prototypes I decided to use PHP. I wanted a interface or language where multiple sources of data could be used and since we do not use EP in our company needed a basic platform to launch such a site. I also decided to use WordPress with a “social” plugin called P2. I created a small middleware application using SAP.NET Connector to pull data from SAP and other sources and push it into the “feed stream” at specific intervals.
So this might sound fairly far fetched and out of the ordinary, but after implementing a small pilot to around 10 users, people are finding the system quite useful. Below are some screenshots and annotations which might make the concept a little bit clearer after my ramblings above.
Here is a general overview screen displaying recent happenings in and around our facility. As you can see there are multiple “Feeds” coming from multiple sources including, Production Lines, Material Handlers, Quality Control, Receiving and shipping.
Comments can be added by users to express concern or simply make a remark about a specific event. In this case, checking for a UL certificate on the material. If a comment is added, all users who are involved would be notified via email that a new comment was added.
Each “feed” can be filtered so you can only view departments or data which is relevant to your needs. You can also subscribe via RSS to each of the feeds and display them in Outlook if you would prefer.
This is a feed which is generated when finished production material has been waiting for over 10 minutes at a quality checkpoint.
A feed displaying material leaving our warehouse en-route to customer.
As mentioned, the actual feed/stream is running on a WAMP server using open source wordpress and the P2 theme from Automatic. The Middleware was developed in VB.NET and uses the SAP .NET Connector to extract information from SAP and push it into WordPress using XMLRPC. There is a XML RPC class from CookComputing which makes this extremely seamless and can be found here: http://www.cookcomputing.com/blog/index.html Below is a small excerpt of code showing pushing data to wordpress from .NET.
As you can see, each event is considered a post in wordpress by a specific user. From the above examples I have a user called: line 1, Line 2, shipping, receiving, checkpoint etc.
Example call to method:
PosttoTweet(“9000079260023/A1646827767 is currently being produced”, “line2”, “line2,production”)
Method used to post to “ERP Tweet”
Private Sub PosttoTweet(ByVal title As String, ByVal post As String, ByVal user As String, ByVal tags As String)
Dim newBlogPost As blogInfo
newBlogPost.title = title
newBlogPost.description = post
newBlogPost.mt_keywords = tags
categories = CType(XmlRpcProxyGen.Create(GetType(IgetCatList)), IgetCatList)
clientProtocol = CType(categories, XmlRpcClientProtocol)
clientProtocol.Url = “http://wsus/wordpress/xmlrpc.php“
Dim result As String
result = categories.NewPage(1, user, “faist”, newBlogPost, 1)
Catch ex As Exception
txtPost.Text = txtPost.Text & Date.Now & “Error in PosttoTweet ” & Err.Description & vbCrLf
To date the project has wielded some interesting results. Some users like the insight into other departments and enjoy being kept up to date. We also users complain of information overload, just too much irrelevant data which did not pertain to them. A solution to this case would be the ability to add a “Urgent” flag to the messages so that users can follow only urgent events rather than “everything” happening in a specific department.