Track and Trace in Asia Supply Chain

Big brother is here to stay. Required by COVID-19 pandemic, humans are now trackable in Singapore.Everyone and everywhere will need to be check in to log your presence. A pandemic is needed to remove the resistance to being tracked. Do you know that this resistance is also a challenge of IoT to track and trace the goods in supply chain?

Source SafeEntry App
Hiding our Movement

In my younger days, working in warehouse and helping with delivery runs do let you know the perks of not being tracked. If you are able to complete your run earlier, you can run the rest of the clock till knock off. This is the key reason why majority of transportation face resistance in Asia countries. This is the reason that drivers are lower paid in Asia and there are no incentives to be traceable.

Freelancing is High Cost Tracking

Many drivers are also freelance or daily wage in Asia. This means the tracking by the usage of your vehicles or drivers are not feasible as they are not under official employment of your truckers. That will also translate to tracking by cargo instead of utilising your vehicles or drivers. Thus, this incur higher cost to your cargo track and Trace.

A common resistance to track and trace in Asia is ironically due to the cheap labour and supply chain. These factors in transport industry create a strong barriers and resistance to track and trace implementation in Asia. The technologies are ready but are consumers prepare to pay for visibility?

IT Supply Chain Dilemma

Designing IT solution in Supply Chain is a constant dilemma. This is because we are trying to map the physical world into a digital plane. There will always be a constant timing and data gap in the system. So, how does we overcome this dilemma?

Managing Expectations

User expectations determines how you can tweak your supply chain system. The bullwhip effect actually applies for the information system as well. It is no uncommon for supply chain system to front facing to end users and vice versa. The dilemma happens when there is a mismatch of the system design with user expectations.

Real Time is Costly

Information flow is actually directly proportional to cost. The technology have provided cheaper real time information to users now. However, the change have not been effected to all existing systems built during the days of 2000s. It may take another five years or so before real time is the become a de facto standard. Meanwhile, it is a fact that all supply chain systems are only Near real time.

Many solutions that promised real time information update is nearly a hoax and dilemma in the year 2020s. This is because the physical world is not yet ready to provide such updates. By managing user expectations, you can deliver supply chain that achieve consumer satisfaction and not burden your IT team.

How to Manage your Exceptions in TMS

In TMS (Transportation Management System), the fun part is actually exception handling. Logistics is an ancient process that is designed to be simple and straightforward. The key model is the movement of goods from point A to point B. Complexity comes with the introduction of trade, data and system.

The Complex Exception in System

Update Failed! The record is locked. You are updating on data with a past date.

System Log

In the past, users can amend any paper records easily even though it have been submitted. Coming to the system world, data can be locked once it is in its past date. Although this provides data integrity and capture the love of your auditor, the real operational world hates it.

Building your Ideal Exception Model
  • Exception handling needs an exceptionally good team of SME (Subject Matter Expert).
  • Your solution must scale for exception with ease.
  • Exception requirements are not fixed and often are unarticulated.
  • A good exception model evolves from many iterations of design.
  • Use Agile to learn and manage your exception model.

Exception handling is the most complex for most products and applications. This is due to the management of the unknowns and the gaps of handling exceptions in the real world. Although new technologies like ML (Machine Learning) aim to improve exception model, we are still light years from the science fiction we watch in drama. In the meantime, the best way is to invest in your resources by increasing their domain knowledge.

Lesson from OTM LTL Error

Last week, we hit a weird default OTM (Oracle Transportation Management) error whereby LTL (Less Than Truckload) transport mode shipment does not tender out with the standard secure resources status. Instead, secure resources status was changed to SECURE RESOURCE_PICKUP NOTIFICATION. As a result, the service provider cannot accept the tender for this status. Thankfully, OTMFAQ forum give us the clue to resolve this. I will explain the rationale here instead.

OTM Default Workflow

The “issue” is actually due to a default business scenario in United States (US). In layman terms, LTL means loose cargo. Thus, service provider is expected to pickup the loose cargo rather than the need to accept the tender request. This is why the status is called SECURE RESOURCE_PICKUP NOTIFICATION. In a way, the request is auto accepted. The way to fix it is to amend the workflow configuration by adding LTL into the TENDER%MODES values.

OTM and its Culture

Debugging in OTM is a challenging task and can consume lots of unproductive hours. Historically, this product was tested widely in US and Europe and very less for Asia. There are many default values that are catered to the American and European audiences. The key tip is to understand and know which are defaulted. If you manage to find this configuration, we usually cross our fingers and hope that the default values can be amended.

All product are designed by humans. Unknowingly, cultures are factored into its design. A good product should always configuration of these default cultural values. One way to do so is to test its localisation features.

TMS and Physical World

TMS (Transportation Management System) is a system that mirrors closely to transport operations in the physical world. This is also the reason why TMS is a really fun system to dabble with.

Visibility Management

A key physical part of TMS is the knowing where your orders are. In simple terms, TMS is a system that shows your order status and location. You can also find out when your order is expected to depart and arrive.

Networked Data

TMS helps to integrate various transport related information into a single platform. Instead of calling many parties for these information, TMS can pull the information into a single data repository. Thus, you will only need to focus on managing exception scenario like road flooding.

Freight Audit

Like the physical world, the ability to playback the transportation for audit purpose is essential. Transport orders or signing of delivery are some of physical activities that are digitised in TMS for compliance.

In a nutshell, you can think of TMS as the digital transformation of your transportation business. The advantages outweighs the cons as you can now view your physical world virtually in TMS.

Challenges for TMS Change Management

Like all system deployment, TMS (Transport Management System) will create a ripple effect and changes in daily Operations. You will see Operations flagging issues on the system. Your hypercare team will be swamped with CR (Change Request). The root cause could be a resistance to change. Thus, you may require change management.

Who are my real users?

It is common to see TMS implementation in a top-down approach. Often, the project members who participates are not the real users of TMS. There will be middle manager who give requirements although they are not the daily users. Thus, you should not be surprised to see gaps during Go Live! Be ready to face your real users when they are unveil after System deployment.

Agile Solution for Change Management

A good change management will now require Agile team to manage the changes. When Operations provide exceptions scenarios and gaps, SME (Subject Matter Expert) team using Agile can respond best to these requirements compared to Waterfall approach. When you solution, do consider a solution for change rather than a fixed requirement.

Preemptive Buy-in

The most common excuse given for not changing the operational procedures for the new system is “麻烦” (troublesome). These are obvious signs of ignorance and resistance from “users” during requirements workshop. The best method to handle such project member is to preempt and buy in the relevant stakeholders.

It takes a few cycles of TMS deployment to develop effective change management. While human behavior remains the constant barrier to new system, we should adapt, peeempt and solution for such “troublesome” changes.

OTM CSV and UTF8 Encoding

I am dabbling in more Chinese character (中文) for OTM (Oracle Transportation Management). I hit an unusual issue when I try to upload Chinese Characters with csv file. The csv is generated from Excel macro VBA. Thanks to the various forums (OTMFAQ and stackoverflow), I managed to find the root cause on UTF encoding with BOM (Byte Order Mark).

Source: OTMFAQ

BOM is a 3 bytes in the beginning of the file when you save UTF-8 on Windows. If you generate the UTF-8, you can view the csv output encoding with TextPad++. OTM does not allow the upload of UTF-8 BOM file. It will just throw out an error, which is not friendly at all.

The solution to solve this is to convert the csv to UTF-8 without BOM. This will remove the first 3 Bytes from the beginning of the file. This can also be automated in macro with the following codes. Thanks to the solution codes from stackoverflow.


Public Sub PutTextFileUtf8(ByVal PathFileName As String, ByVal FileBody As String)

‘ Outputs FileBody as a text file (UTF-8 encoding without leading BOM)
‘ named PathFileName

‘ Needs reference to “Microsoft ActiveX Data Objects n.n Library”
‘ Addition to original code says version 2.5. Tested with version 6.1.

‘ 1Nov16 Copied from http://stackoverflow.com/a/4461250/973283
‘ but replaced literals with parameters.
‘ 15Aug17 Discovered routine was adding an LF to the end of the file.
‘ Added code to discard that LF.

‘ References: http://stackoverflow.com/a/4461250/973283
https://www.w3schools.com/asp/ado_ref_stream.asp

Dim BinaryStream As Object
Dim UTFStream As Object

Set UTFStream = CreateObject(“adodb.stream”)

UTFStream.Type = adTypeText
UTFStream.Mode = adModeReadWrite
UTFStream.Charset = “UTF-8”
‘ The LineSeparator will be added to the end of FileBody. It is possible
‘ to select a different value for LineSeparator but I can find nothing to
‘ suggest it is possible to not add anything to the end of FileBody
UTFStream.LineSeparator = adLF
UTFStream.Open
UTFStream.WriteText FileBody, adWriteLine

UTFStream.Position = 3 ‘skip BOM

Set BinaryStream = CreateObject(“adodb.stream”)
BinaryStream.Type = adTypeBinary
BinaryStream.Mode = adModeReadWrite
BinaryStream.Open

UTFStream.CopyTo BinaryStream

‘ Oriinally I planned to use “CopyTo Dest, NumChars” to not copy the last
‘ byte. However, NumChars is described as an integer whereas Position is
‘ described as Long. I was concerned by “integer” they mean 16 bits.
‘Debug.Print BinaryStream.Position
BinaryStream.Position = BinaryStream.Position – 1
BinaryStream.SetEOS
‘Debug.Print BinaryStream.Position

UTFStream.Flush
UTFStream.Close
Set UTFStream = Nothing

BinaryStream.SaveToFile PathFileName, adSaveCreateOverWrite
BinaryStream.Flush
BinaryStream.Close
Set BinaryStream = Nothing

End Sub


PS: Remember to include “Microsoft ActiveX Data Objects 2.5 Object Library” under Tools->References.

Language Localisation

Localisation is a key component of TMS (Transportation Management System). Legacy system suffers from language localisation partly due to database design which forces the implementation to be encode in certain locales. Globalisation of application creates new solution architecture which default localisation. One of such settings is the configuration of languages and display text.

Source: Telegram
Language Perspective

One may think languages in system is pretty straightforward. However, to a system, English does not literally mean English? Due to complexity of languages, we seek some sanity to classify languages in system. One of such classification is ISO 639. However, this is not the standard adopted by system due to different computer organisations. For instance, Windows language encoding will vary from that in Linux. The application SME (Subject Matter Expert) must be familiar with language localisation encoding across various platforms.

Future Language localisation

At present and in near future, we will see NLP (Natural Language Processing) gaining popularity like Chatbot. There will be focus for system to localise naturally from user behaviour and geolocation. Translation are real time and ML (machine learning) driven. Data locales are no longer required as data can be stored as what it is and translated as such.

Global TMS Localisation

TMS (Transportation Management System) is a system that is specific to the local countries. It may be a challenge for many to solution this as a global system. However, the trick is to know which part to localise your global TMS. Here is a sneak preview on my cookbook to globalise your local TMS.

  • Your global TMS must be configurable to handle localisation.
  • There must be good TMS SME (subject matter expert) to guide the localisation.
  • TMS SME also act as key change agent to manage the localisation process.
  • Train local Champion in the business unit.
  • Outsource TMS solutions prudently and insource your localisation knowledge.
  • Localisation is more than system requirements, you must also understand cultures, habits and even local norms.

Many organisations do not have a formal localisation teams. Do invest to train your resources on the importance of localisation. Often, these requirements are not stated and only surface during usage. Thus, an experienced implementer will consider localisation for TMS.

OTM Debugging

Today, I had spend 4 hours troubleshooting OTM (Oracle Transport Management) only to realise that the mistake was due to a change of Service Provider ID. This change was not updated in the Rate Offering. As such, the shipment planning was not able to pick up the rates. It was a very silly mistake and also shows the challenge of debugging in OTM. Anyone doing OTM will know the power of OTM debugging. Here are some debugging tips which could help anyone still doing OTM!

OTM Debugging Tips
  • Test often with each change of configuration. Use Agile to configure and test each change within a day.
  • Prepare a standard checklist for checking. This is important for Shipment Planning and rates setup.
  • Turn on your diagnostic log. It is more friendly than the log file.
  • Ask your OTM buddy for second opinion in your debugging approach. You may find new perspective.
  • Turn on your log files as last resort. The log file can either help you or discourage you. Go to the last page for the clues.

If you still unable to find the issue, rollback the change and configure your change again. This time, configure and test more aggressively. The key to debugging OTM is patience and practice. The only way is to get your hands dirty.