PSA: Automatic UD field mapping is broken in configurators post-Kinetic rework

I just spent 2 hours going in circles over this, so I figured I’d let you folks know…

Prior to the Kinetic rework of the product configurator code, there was no automatic mapping of UD fields between for example QuoteDtl and JobHead. So we had directives to copy some values. For example, a customer who was previously on 10.2.700 had a configurator setup where a primary configurator would have a BOM with a configurable material in it. This results in both configurators being called in sequence, and a job being created for the configurated material. Customer had a data directive on JobHead to copy UD field values from QuoteDtl. QuoteDtl.UDFieldA_c => JobHead.UDFieldA_c. This worked fine.

Post Kinetic upgrade, it turns out Kinetic now automatically copies values from UD fields with matching names. However it does this very poorly…

For whatever reason, when the UD fields were created years ago, QuoteDtl.UDFieldA_c had been created as a nvarchar, and JobHead.UDFieldA_c as a DateTime. They both contained the same info, but the quote data was a string. The data directive was ok with this, when mapping values it just parsed the datetime.

The configurator just tries to jam the value in if the name matches, doesn’t even check types, and when it fails it just stops the entire configurator in its tracks…

The only way I was able to fix the issue is by deleting the UD field from QuoteDtl, creating a temp table in SQL, copy the values from the QuoteDtl SQL field (which doesn’t get deleted) into the temp table, delete the actual original column in SQL, recreate the UD field in Kinetic as a DateTime, and then copy the values over from the temp table through SQL… It was quite the ordeal, and no it just couldn’t wait for a patch…

I plan on reporting the bug to Epicor sometime next week, in the meantime, stay safe out there! lol

1 Like

@hkeric.wci have you seen this and do you think they are utilizing more UD field maps out of the box?

I can confirm it’s not a UD map, it’s one of the first things I checked… They are using a small function in the configurator’s internal library, which just enumerates field names and jams values in. It’s completely dumb, and there is no try…catch…