The air watch UDID is generated by hashing together multiple aspects of the device, of which Secure.ANDROID_ID is just one - ro.serialno is likely another, but the main point is they take those together, use a 128-bit hash, and that's what you get.
If you absolutely must match their computation, it's not that hard - locate their APK .dex , wherein they perform the calculation in a class method, and just see the code for yourself by decompiling it.
Their code is naturally obfuscated, but you can start with
com.airwatch.core.AirWatchDevice.isDeviceUDIDInitialized()
which is called from one or two locations, and - if it returns false - they call the UDID method (the actual full method name is useless here as it obfuscated, along the lines of "d.a.p0.d0.g0.c" which changes in every build, but isDeviceUDIDInitialized() is still visible).
Another approach is too look for where they fish out ro.serialno,
via java.lang.Class.getMethod("android.os.SystemProperties", "get", ..)
wherein they also look for android.os.Build.MANUFACTURER and a bunch of other attributes.
Also, there's formatDeviceUid as a method somewhere in some builds - that applies the MD5 directly.