Friday, December 21, 2018

Unforgiving ERP and real life situations.

Unforgiving ERP and real life situations.

I would like to discuss how ERP implementations fail or if not fail cause major distress to all the end users due to the rigidness in the ERP.

I have developed 3 ERP solutions from scratch. I was the lead when I did the 3rd one with around 30 plus developers working for over a year. All through that we would insist that the users need follow the process otherwise we cannot help.
Then for a years I developed custom Java applications that met the users needs exactly and also realized that following agile PM techniques allowed less user distress and less issues with usage of the system.

Around 2006 I got introduced to NetSuite. I was amazed at how perfect the architecture was. Later I started working with companies that implemented NetSuite. Again the approach was we can customize to a certain extend but “users have to follow the process”.

Now I work at a company that uses NetSuite and I see first hand what happens after an ERP is implemented. The people who are impacted are my colleagues that I have to see every day.

Simple example is a transfer order that NetSuite offers. We ask a warehouse to Transfer 200 items from one warehouse to the other. They fulfill 200 items and when the load into the truck they find that they have to ship it in two trucks. The first truck arrives at the next warehouse and now they cannot short receive if ‘Use Transfer Price’ is checked on that. Now we have to either wait till the next 100 arrives or split that fulfillment into two 100 manually.Problem is magnified when we use serialized inventory. Now we can discuss whether to check on uncheck that ‘Use Transfer Price’ to allow short receipts. But that is not my point.

The technical architecture of NetSuite ERP is perfect but the design leaves a lot to be desired. I suggest that the data entry should be in a disconnected manner.
So a transfer Order Receipt should be independent of a Fulfillment. The approach should be to reconcile the receipt against the fulfillment at a later time. Not at the time where some one is scanning in goods. At core the system should be flexible with options to slowly introduce rigidness into the process to allow the maturity of the organization in their quest to a perfect process. I chose the transfer order as a simple example.

This is a generic approach to design where the system should be flexible to allow exceptions to be handle gracefully without significant manual interventions. This allows an organization to ease into an implementation by monitoring bad behavior and exceptions gracefully and then slowly introduce rigidness into business processes. This makes it much less traumatic to the actual people on the ground. This will also lead to more successful ERP implementations.

Some of the simple features of NetSuite does support this although we don’t think of it too much. Allowing transactions to be back dated is such an example. This is a huge help since this supporting a real life need. I hope NetSuite will extend this approach to other aspects of their system.